PHPMailer 用 PHP 發信 & Gmail 申請應用程式密碼

2016-03-04 php

在 github 上面有一個 PHPMailer 專案,他號稱是目前世界上最潮的 PHP send mail code production,對於編碼的支援度也很好,最重要的是他支援各種驗證機制,這讓很多目前五花八門的驗證方式相容性就提高了許多


Class Features

Probably the world’s most popular code for sending email from PHP!
Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
Integrated SMTP support – send without a local mail server
Send emails with multiple TOs, CCs, BCCs and REPLY-TOs
Multipart/alternative emails for mail clients that do not read HTML email
Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings
SMTP authentication with LOGIN, PLAIN, NTLM, CRAM-MD5 and Google’s XOAUTH2 mechanisms over SSL and TLS transports
Error messages in 47 languages!
DKIM and S/MIME signing support
Compatible with PHP 5.0 and later
Much more!


在此篇簡單紀錄如何使用 PHPMailer

Step.1 複製 PHPMailer 專案

$ git clone


Step.2 建立單封郵件測試

$ cd PHPMailer
$ sendmail.php

require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

// Enable verbose debug output
//$mail->SMTPDebug = 3;                               

// Set mailer to use SMTP

// smtp 伺服器, 支援多台smtp server備援
$mail->Host = '';

// Enable SMTP authentication
$mail->SMTPAuth = true;

// SMTP username
$mail->Username = '';

// SMTP password , If you must use the gmail application password
$mail->Password = 'secret';

// Enable TLS encryption, `ssl` also accepted
$mail->SMTPSecure = 'tls';

// TCP port to connect to
$mail->Port = 587;

$mail->setFrom('', 'Mailer');

// Add a recipient , name is optional
$mail->addAddress('', 'Joe User');

// Add a recipient , 
$mail->addReplyTo('', 'Information');

// Add attachments , optional name
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');

// Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';


如果你使用的是 Gmail smtp,那 Password 的部分如果你使用的是 “網頁登入的密碼” 就會被 Gmail 阻擋顯示錯誤訊息『Please log in via your web browser and then try again.』,並且要求使用 application password



申請 Gmail Application Password

登入你的 Gmail 到以下找到應用程式密碼進行新增,Gmail 會提供一組密碼給你作應用程式驗證使用。

ScreenShot 2016-03-03 17.58.11

將密碼代入 send.php 中的 $mail->Password 就可以驗證成功!





給 Mr. 沙先生一點建議



展開全部 | 收合全部


訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱