6

okay, so I already try it for many times. The results was not error but I didn't receive any e-mail in my inbox or spam folder

here is my mail.php

 <?php require 'phpmailer/PHPMailerAutoload.php'; $mail = new PHPMailer(); //$mail->IsSMTP(); // telling the class to use SMTP //$mail->Host = "localhost"; // SMTP server //IsSMTP(); // send via SMTP $mail->SMTPDebug = true; $mail->IsSMTP(); $mail->Host = "smtp.gmail.com"; // SMTP server Gmail $mail->Mailer = "gmail"; $mail->SMTPAuth = true; // turn on SMTP authentication $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->Username = "[email protected]"; // $mail->Password = "******"; // SMTP password $webmaster_email = "[email protected]"; //Reply to this email ID $email = "[email protected]"; // Recipients email ID $name = "Hendrikus Anthony"; // Recipient's name $mail->From = $webmaster_email; $mail->FromName = "Anthony"; $mail->AddAddress($email,$name); $mail->AddReplyTo($webmaster_email,"Anthony"); $mail->WordWrap = 50; // set word wrap $mail->IsHTML(true); // send as HTML $mail->Subject = "Ini adalah Email HTML"; $mail->Body = "Ini adalah email contoh"; //HTML Body $mail->AltBody = "This is the body when user views in plain text format"; //Text Body if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent"; } ?> 

please someone, I really need help. do I need a hosting? or there are something wrong with my syntax? whether sendmail.ini and php.ini affect the mail.php?

1
  • None of the answers use "localhost" please change the title of the question. Commented May 25, 2019 at 0:52

3 Answers 3

8

Here is my solution which I found out from couple of articles.

<?php require_once "vendor/autoload.php"; $mail = new PHPMailer; //Enable SMTP debugging. $mail->SMTPDebug = 3; //Set PHPMailer to use SMTP. $mail->isSMTP(); //Set SMTP host name $mail->Host = "smtp.gmail.com"; //Set this to true if SMTP host requires authentication to send email $mail->SMTPAuth = true; //Provide username and password $mail->Username = "[email protected]"; $mail->Password = "password"; //If SMTP requires TLS encryption then set it //$mail->SMTPSecure = "tls"; //Set TCP port to connect to $mail->Port = 587; $mail->From = "[email protected]"; $mail->FromName = "Full Name"; $mail->smtpConnect( array( "ssl" => array( "verify_peer" => false, "verify_peer_name" => false, "allow_self_signed" => true ) ) ); $mail->addAddress("[email protected]", "Recepient Name"); $mail->isHTML(true); $mail->Subject = "Subject Text"; $mail->Body = "<i>Mail body in HTML</i>"; $mail->AltBody = "This is the plain text version of the email content"; if(!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent successfully"; } 

This won't require any server settings on your localhost.

$mail->smtpConnect( array( "ssl" => array( "verify_peer" => false, "verify_peer_name" => false, "allow_self_signed" => true ) ) ); 

This part of code asks smtp not to verify any connection and can send the mail without verifying the sender. Also you need to enable IMAP settings from your mailbox settings.

Here are the links for reference. https://www.sitepoint.com/sending-emails-php-phpmailer/ https://github.com/PHPMailer/PHPMailer/issues/368#issuecomment-75821110

Sign up to request clarification or add additional context in comments.

2 Comments

It seems that google just stopped me from doing that and I got a scary security breach notice.
I haven't tried for a long time now. But If I remember correctly you had to disable verification of the connection on google mail. The reason for this being is, when using the local environment it is not possible to verify the localhost by the mail service provider.
3

You need an SMTP server to send out mail. Assuming you want to use this for testing purposes, try downloading a free SMTP local server such as this one.

If you want to actually send out mail in a production environment, consider using an external service such as SendGrid or MailChimp. Alternatively, if you want to stick with SMTP, you are going to need your own web server to send mail from.

2 Comments

Can't we use the smtp server provided by gmail ? Or am I confused ?
Are you referring to this? Because yes, you can use that.
0

You shouldn't comment out the line that tells the mailer to use smtp except you really want to use the normal mail function,which i don't think you want to

<?php require 'PhpMailer/PHPMailerAutoload.php'; //Create a new PHPMailer instance $mail = new PHPMailer; $mail->isSMTP(); // change this to 0 if the site is going live $mail->SMTPDebug = 2; $mail->Debugoutput = 'html'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; //use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication $mail->Username = "[email protected]"; $mail->Password = "******"; $mail->setFrom('[email protected]', 'Somebody'); $mail->addReplyTo('[email protected]', 'Somebody'); $mail->addAddress('[email protected]', 'Somebody'); $mail->Subject = 'New contact from somebody'; // $message is gotten from the form $mail->msgHTML($message); $mail->AltBody = $filteredmessage; if (!$mail->send()) { echo "We are extremely sorry to inform you that your message could not be delivered,please try again."; } else { echo "Your message was successfully delivered,you would be contacted shortly."; } ?> 

please note you must be connected to the internet for gmail's smtp to work

2 Comments

yes, I connected to internet. then when I try it again with your syntax, it said "We are extremely sorry to inform you that your message could not be delivered,please try again."
@HenrikusAnthony i lifted this off a script i used barely 13 hours ago,and i also just tested again.it worked,something might just be wrong with your connection or you can try another port,say 465,$mail->Port = 465;

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.