How to configure xampp to send email

I know that this is somewhere else on the site, but for some reason the answers that I found here have still not helped, I still can’t get it to work after trying different things all day. My goal was for the verification code to be sent in an email that the user enters. I know only a small amount of PHP and followed the tutorial for the registration / registration system, but I'm sure php is working fine and the problem is in my sendmail.ini and php.ini. Here is my sendmail.ini

; configuration for fake sendmail ; if this file doesn't exist, sendmail.exe will look for the settings in ; the registry, under HKLM\Software\Sendmail [sendmail] ; you must change mail.mydomain.com to your smtp server, ; or to IIS "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) ; emails delivered via IIS pickup directory cause sendmail to ; run quicker, but you won't get error messages back to the calling ; application. smtp_server=smtp.gmail.com ; smtp port (normally 25) smtp_port=587 ; SMTPS (SSL) support ; auto = use SSL for port 465, otherwise try to use TLS ; ssl = alway use SSL ; tls = always use TLS ; none = never try to use SSL smtp_ssl=auto ; the default domain for this server will be read from the registry ; this will be appended to email addresses when one isn't provided ; if you want to override the value in the registry, uncomment and modify ;default_domain=mydomain.com ; log smtp errors to error.log (defaults to same directory as sendmail.exe) ; uncomment to enable logging error_logfile=error.log ; create debug log as debug.log (defaults to same directory as sendmail.exe) ; uncomment to enable debugging debug_logfile=debug.log ; if your smtp server requires authentication, modify the following two lines auth_username= myemail@gmail.com auth_password= mygmailpass ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines. do not enable unless it is required. pop3_server= pop3_username= pop3_password= ; force the sender to always be the following email address ; this will only affect the "MAIL FROM" command, it won't modify ; the "From: " header of the message content force_sender=myemail@gmail.com ; force the sender to always be the following email address ; this will only affect the "RCTP TO" command, it won't modify ; the "To: " header of the message content force_recipient= ; sendmail will use your hostname and your default_domain in the ehlo/helo ; smtp greeting. you can manually set the ehlo/helo name if required hostname= 

And my parts that I edited on my php.ini

 extension=php_openssl.dll [mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP =smtp.gmail.com smtp_port =587 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = myemail@gmail.com sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" ;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe" ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = 

and my php code if necessary

 <?php session_start(); include('configdb.php'); if(isset($_POST['submit'])) { //whether the username is blank if($_POST['username'] == '') { $_SESSION['error']['username'] = "User Name is required."; } //whether the email is blank if($_POST['email'] == '') { $_SESSION['error']['email'] = "E-mail is required."; } else { //whether the email format is correct if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $_POST['email'])) { //if it has the correct format whether the email has already exist $email= $_POST['email']; $sql1 = "SELECT * FROM user WHERE email = '$email'"; $result1 = mysqli_query($mysqli,$sql1) or die(mysqli_error()); if (mysqli_num_rows($result1) > 0) { $_SESSION['error']['email'] = "This Email is already used."; } } else { //this error will set if the email format is not correct $_SESSION['error']['email'] = "Your email is not valid."; } } //whether the password is blank if($_POST['password'] == '') { $_SESSION['error']['password'] = "Password is required."; } //if the error exist, we will go to registration form if(isset($_SESSION['error'])) { header("Location: index.php"); exit; } else { $username = $_POST['username']; $email = $_POST['email']; $password = $_POST['password']; $com_code = md5(uniqid(rand())); $sql2 = "INSERT INTO user (username, email, password, com_code) VALUES ('$username', '$email', '$password', '$com_code')"; $result2 = mysqli_query($mysqli,$sql2) or die(mysqli_error()); if($result2) { $to = $email; $subject = "Confirmation for $username"; $header = "Confirmation from"; $message = "Please click the link below to verify and activate your account. rn"; $message .= "http://www.yourname.com/confirm.php?passkey=$com_code"; $sentmail = mail($to,$subject,$message,$header); if($sentmail) { echo "Your confirmation link has been sent to your e-mail address."; } else { echo "Error while sending confirmation link to your e-mail address"; } } } } ?> 

As I said, I have been working on this for some time, and I cannot understand that this is really so, but since I am still participating, I have not seen this. Thanks for the help!

+6
source share
2 answers

You can simply configure C: \ xampp \ php \ php.ini and c: \ xampp \ sendmail \ sendmail.ini to send mail by mail.

In the php.ini file, find [mail function] and change the following

 SMTP=smtp.gmail.com smtp_port=587 sendmail_from = your-gmail-id@gmail.com sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 

Now open C: \ xampp \ sendmail \ sendmail.ini. Replace all existing code in sendmail.ini with the following code

 [sendmail] smtp_server=smtp.gmail.com smtp_port=587 error_logfile=error.log debug_logfile=debug.log auth_username=your-gmail-id@gmail.com auth_password=your-gmail-id-password force_sender=your-gmail-id@gmail.com 

Now you done! create a php file with mail function and send mail from localhost.

+6
source

if you send mail through a local server, you need to configure

c:\xampp\sendmail\sendmail.ini (send Gmail) and C:\xampp\php\php.ini .

in php.ini

find extension=php_openssl.dll and remove the semicolon from the beginning of this line. Thus, it allows you to send mail from localhost.

and then find the mail function and change the settings below

 SMTP=smtp.gmail.com smtp_port=587 sendmail_from = my-gmail-id@gmail.com sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 

in sendmail.ini (path is c:\xampp\sendmail\sendmail.ini )

Change it

 [sendmail] smtp_server=smtp.gmail.com smtp_port=587 error_logfile=error.log debug_logfile=debug.log auth_username=GMail ID@gmail.com //your gmail ID auth_password=GMail PASSWORD // Your gmail password force_sender=GMail ID@gmail.com //your gmail ID 

Modify GMail ID@gmail.com , GMail PASSWORD , GMail ID@gmail.com in the above code.

Finally

comment the following line if there is another sendmail_path: sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe" in the php.ini file .

+5
source

Source: https://habr.com/ru/post/988124/


All Articles