Tuesday, October 15, 2013

Sending SMTP mail using phpmailer

<?phprequire_once ('../class.phpmailer.php');
// include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch$mail->IsSMTP(); // telling the class to use SMTPtry { $mail->Host "mail.yourdomain.com"// SMTP server $mail->SMTPDebug 2// enables SMTP debug information (for testing) $mail->SMTPAuth true// enable SMTP authentication $mail->SMTPSecure "tls"// sets the prefix to the servier $mail->Host "smtp.gmail.com"// sets GMAIL as the SMTP server $mail->Port 587// set the SMTP port for the GMAIL server $mail->Username "yourusername@gmail.com"// GMAIL username $mail->Password "yourpassword"// GMAIL password $mail->AddReplyTo('name@yourdomain.com''First Last'); $mail->AddAddress('whoto@otherdomain.com''John Doe'); $mail->SetFrom('name@yourdomain.com''First Last'); $mail->AddReplyTo('name@yourdomain.com''First Last'); $mail->Subject 'PHPMailer Test Subject via mail(), advanced'; $mail->AltBody 'To view the message, please use an HTML compatible email viewer!'// optional - MsgHTML will create an alternate automatically $mail->MsgHTML(file_get_contents('contents.html')); $mail->AddAttachment('images/phpmailer.gif'); // attachment $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment $mail->Send(); echo "Message Sent OK<p></p>\n"; }

catch(
phpmailerException $e) { echo $e->errorMessage(); //Pretty error messages from PHPMailer }

catch(
Exception $e) { echo $e->getMessage(); //Boring error messages from anything else! }

PHPMailer SMTP Error: Could not authenticate using gmail as smtp server

PHPMailer SMTP Error: Could not authenticate using gmail as smtp server
Causes
  1. invalid username
    1. try username@gmail.com instead of username
  2. invalid password
  3. invalid secure option
    1. use ssl, tls not SSL, TLS
  4. invalid port 
    1. use port 587 or 465