樂于分享
好東西不私藏

WordPress郵件SMTP配置及美化

最近鄉下移動網又開始罷工了,這幾天一直都是用手機流量開熱點來保持站內正常更新,數量上確實嚴重縮水了,正好可以多花點時間折騰寫教程。WordPress默認有郵件發送提醒功能的,但那是由于一些虛擬主機商禁用了mail()以及服務器未開啟465端口等諸多因素都會導致郵件發送功能的失效,并且發送的數量過多時被標記為垃圾郵件的概率非常高,因此一些站長紛紛使用SMTP代發,這里老夜就位大家帶來詳細的教程。

準備工作:

服務器開啟465或25端口

SMTP是一種簡單郵件傳輸協議,網站服務器要使用郵件發送功能就需要調用外部smtp服務器地址,郵箱自身也要開啟smtp/pop功能才可以正常調用,同時服務器安全組還得開啟25或465端口,25和465端口均是為SMTP服務器所開放,465端口采用加密方式發送郵件安全性更高。老夜目前已知阿里云和騰訊云已經禁止了25端口,所以大家還是乖乖用465端口吧!
至于如何開啟安全組端口這里也不做說明了,不懂的可以提交工單問客服人員。如果是虛擬主機用戶就不需要那么麻煩了,默認相應的端口都是開啟的,但是有些虛擬主機不支持mail()函數也會導致郵件發送失敗,具體信息請詢問主機商吧!

獲取郵箱的授權碼

如果是新浪郵箱和阿里云郵箱,授權碼就是登錄密碼。這里老夜是以QQ郵箱來進行測試的,需要找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務的授權碼,一般在設置 — 賬戶中就能找到,如下圖所示:

代碼篇:

準備工作確定完成無誤后就開始為WordPress配置SMTP了,代碼改造比插件更加高效而且不會拖慢WordPress的響應時間,這里附上相關的代碼,將下面中代碼的信息適當的改為自己的,SMTP端口分為25或465兩種選擇,郵箱密碼也在準備工作中為大家細述了。修改完代碼之后復制丟到主題目錄中的functions.php文件中即可生效。

//WordPress郵箱SMTP配置開始
//www.mreevv.tw
function mail_smtp( $phpmailer ) {
    $phpmailer->FromName = '『夜雨聆風』'; //發件人名稱
    $phpmailer->Host = 'smtp.qq.com'; //修改為你使用的郵箱SMTP服務器
    $phpmailer->Port = 465; //SMTP端口
    $phpmailer->Username = '[email protected]'; //郵箱賬戶
    $phpmailer->Password = '****'; //郵箱密碼(此處填寫QQ郵箱生成的授權碼)
    $phpmailer->From = '[email protected]'; //郵箱賬戶
    $phpmailer->SMTPAuth = true;
    $phpmailer->SMTPSecure = 'ssl'; //tls or ssl (port=25時->留空,465時->ssl)
    $phpmailer->IsSMTP();
}
add_action('phpmailer_init', 'mail_smtp');
//www.mreevv.tw
//WordPress郵箱SMTP配置end

考慮到國內的郵箱廠商非常的多,不同的郵箱SMTP服務器地址也是大不相同的,在此老夜搜索一些比較常用的郵箱SMTP服務器地址,其他本文沒列出的郵箱SMTP地址大家可以直接百度一下就有了。將下面對應的SMTP填入上面的代碼中,如果是QQ郵箱就不用改了老夜目前用的就是。

騰訊QQ郵箱:smtp.qq.com

Foxmail郵箱:smtp.foxmail.com

網易163郵箱:smtp.163.net

新浪免費郵箱:smtp.sina.com

騰訊企業郵箱:smtp.exmail.qq.com

雅虎免費郵箱:smtp.mail.yahoo.cn

網易126郵箱:smtp.126.com

搜狐免費郵箱:smtp.sohu.com

Gmail郵箱(目前gmail在國內貌似GG):smtp.gmail.com

插件篇:

上面的代碼已經是非常的簡單粗暴了,但是插件有些時候更深入人心,尤其是對一些懶人站長來說簡直是不要太簡單。這里老夜推薦的是一款叫做WP SMTP的WordPress插件,該插件數年未更新但是功能依舊強勁,也體驗過其他SMTP插件都是花里胡哨還占用較大的資源,WP SMTP這匹老馬老夜還是非常推薦的。
WP SMTP官方下載地址:https://wordpress.org/plugins/wp-smtp/
老夜備份下載地址:主力下載 備用下載
至于如何安裝插件就此跳過,太簡單了老夜不會~~~~
按照下面老夜的截圖來改就oj8k了!

上面配置完成后保存更改,為了確保郵件發送功能是否能夠正常使用,建議大家通過下方填寫郵箱進行測試。如果能發送出郵件并接受到代表配置成功,反之按照老夜的教程一步步排查。

關于郵件美化

WordPress發送郵件至用戶時由于默認樣式特別的簡單甚至還有點丑,沒有任何的修飾美化使得郵件過于單調大大降低了用戶回頭率。因此這里老夜原本在另寫一篇文章介紹的想想還是直接發出來,老規矩,什么都不需要改動,復制后直接丟到functions.php文件中即可!

//www.mreevv.tw
//郵件評論美化開始function ludou_comment_mail_notify($comment_id, $comment_status) {
// 評論必須經過審核才會發送通知郵件
if ($comment_status !== ‘approve’ && $comment_status !== 1)
return;$comment = get_comment($comment_id);

if ($comment->comment_parent != ‘0’) {
$parent_comment = get_comment($comment->comment_parent);

// 郵件接收者email
$to = trim($parent_comment->comment_author_email);

// 郵件標題
$subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有了新的回復’;

// 郵件內容,自行修改,支持HTML
$message = ‘<div style=”border-right:#666666 1px solid;border-radius:8px;color:#111;font-size:12px;width:702px;border-bottom:#666666 1px solid;font-family:微軟雅黑,arial;margin:10px auto 0px;border-top:#666666 1px solid;border-left:#666666 1px solid”><div class=”adM”>
</div><div style=”width:100%;background:#666666;min-height:60px;color:white;border-radius:6px 6px 0 0″><span style=”line-height:60px;min-height:60px;margin-left:30px;font-size:12px”>您在<a style=”color:#00bbff;font-weight:600;text-decoration:none” href=”‘ . get_option(‘home’) . ‘” target=”_blank”>’ . get_option(‘blogname’) . ‘</a> 上的留言有回復啦!</span> </div>
<div style=”margin:0px auto;width:90%”>
<p>’ . trim($parent_comment->comment_author) . ‘, 您好!</p>
<p>您于’ . trim($parent_comment->comment_date) . ‘ 在文章《’ . get_the_title($comment->comment_post_ID) . ‘》上發表的評論: </p>
<p style=”border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px”>’ . nl2br($parent_comment->comment_content) . ‘</p>
<p>’ . trim($comment->comment_author) . ‘ 于’ . trim($comment->comment_date) . ‘ 給您的回復如下: </p>
<p style=”border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px”>’ . nl2br($comment->comment_content) . ‘</p>
//www.mreevv.tw
<p>您可以點擊 <a style=”color:#00bbff;text-decoration:none” href=”‘ . htmlspecialchars(get_comment_link($comment->comment_parent)). ‘” target=”_blank”>查看回復的完整內容</a></p>
<p>感謝您對 <a style=”color:#00bbff;text-decoration:none” href=”‘ . get_option(‘home’) . ‘” target=”_blank”>’ . get_option(‘blogname’) . ‘</a> 的關注,如您有任何疑問,歡迎在博客留言,我都會一一解答,么么噠!!!</p><p>(此郵件由系統自動發出,請勿回復。)</p></div></div>’;

$message_headers = “Content-Type: text/html; charset=\””.get_option(‘blog_charset’).”\”\n”;

// 不用給不填email的評論者和管理員發提醒郵件
if($to != ” && $to != get_bloginfo(‘admin_email’))
@wp_mail($to, $subject, $message, $message_headers);
}
}

// 編輯和管理員的回復直接發送提醒郵件,因為編輯和管理員的評論不需要審核
add_action(‘comment_post’, ‘ludou_comment_mail_notify’, 20, 2);

// 普通訪客發表的評論,等博主審核后再發送提醒郵件
add_action(‘wp_set_comment_status’, ‘ludou_comment_mail_notify’, 20, 2);

//www.mreevv.tw
//郵件評論美化end

最終效果圖:

補充:

代碼修改之前請先備份相關文件在進行操作編輯,修改后往往建議清理瀏覽器緩存刷新網站評論測試一下。上述的代碼和插件老夜全部測試一遍均能完美實現郵件發送功能,若出現失敗這里給出兩條排查方法:虛擬主機需要支持main()函數,服務器需要在安全組中開啟25或者465端口,然后確保郵箱信息填寫正確以及郵箱的可用性。如有不懂的歡迎文章底部留言!!!

撰文不易,禁止轉載抄襲!

 

本站文章均為手工撰寫未經允許謝絕轉載:夜雨聆風 » WordPress郵件SMTP配置及美化
支付寶掃碼打賞 微信打賞

如果文章對您有幫助,歡迎移至上方按鈕打賞……

評論 13

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

  1. #8

    不錯,去插件化才能安全。贊

    14個月前 (09-02)Windows NT | Chrome 75.0.3770.142回復
    • 老夜

      WordPress盡量不要安裝過多的插件

      老夜4個月前 (09-02)Windows 7 | Chrome 75.0.3770.142回復
  2. #7

    你好,大神,郵件已配置號,就是把美化的代碼加到functions.php中后,網站打不開了,提示此站點遇到技術問題?求大神指導。

    章魚愛分享5個月前 (08-06)Windows NT | Chrome 70.0.3538.25回復
  3. #6

    qp內容qp

    Imogen Maguire7個月前 (06-19)Windows 8 | Chrome 66.0.3359.181回復
  4. #5

    插件出現了這個是怎么回事 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

    6667個月前 (06-03)Windows NT | Chrome 70.0.3538.25回復
    • 老夜

      請確保郵箱POP服務已開啟;服務器SMTP填寫正確,前面是ssl;端口符合服務器郵箱規則:如阿里云服務器,已屏蔽25端口,需使用465端口;郵箱賬號及密碼或授權碼輸入正確!

      老夜7個月前 (06-04)Windows 7 | Chrome 73.0.3683.103回復
  5. #4

    //評論回復郵件通知(所有回復都郵件通知)
    function comment_mail_notify($comment_id) {
    $comment = get_comment($comment_id);
    $parent_id = $comment->comment_parent ? $comment->comment_parent : ”;
    $spam_confirmed = $comment->comment_approved;
    if (($parent_id != ”) && ($spam_confirmed != ‘spam’)) {
    $wp_email = ‘[email protected]’ . preg_replace(‘#^www\.#’, ”, strtolower($_SERVER[‘SERVER_NAME’])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = ‘您在 [‘ . get_option(“blogname”) . ‘] 的留言有了回復’;
    $message = ‘

    您在‘ . get_option(‘blogname’) . ‘
    博客上的留言有回復啦!

    ‘ . trim(get_comment($parent_id)->comment_author) . ‘, 您好!
    您曾在 [‘ . get_option(“blogname”) . ‘] 的文章
    《’ . get_the_title($comment->comment_post_ID) . ‘》 上發表評論:
    ‘ . nl2br(get_comment($parent_id)->comment_content) . ‘
    ‘ . trim($comment->comment_author) . ‘ 給您的回復如下:
    ‘ . nl2br($comment->comment_content) . ‘
    您可以點擊 查看回復的完整內容
    歡迎再次光臨 ‘ . get_option(‘blogname’) . ‘
    (此郵件由系統自動發出, 請勿回復.)

    ‘;

    $message = convert_smilies($message);
    $from = “From: \”” . get_option(‘blogname’) . “\” “;
    $headers = “$from\nContent-Type: text/html; charset=” . get_option(‘blog_charset’) . “\n”;
    wp_mail( $to, $subject, $message, $headers );
    //echo ‘mail to ‘, $to, ‘ ‘ , $subject, $message; // for testing
    }
    }
    add_action(‘comment_post’, ‘comment_mail_notify’);

    這段代碼就可以用,但是就問題行段代碼看不出有什么不一樣的。

    閃電鷹8個月前 (04-30)Windows NT | Chrome 74.0.3724.8回復
    • 老夜

      估計主題有差異

      老夜8個月前 (04-30)Windows 7 | Chrome 73.0.3683.86回復
  6. #3

    $subject = ‘您在[‘ . get_option(“blogname”) . ‘]的留言有了新的回復’;
    這行提示:因在wp-content/themes/jupiter/functions.php文件的486行有錯誤,您對PHP代碼的修改已被回滾。請修復并重試。

    syntax error, unexpected ‘的留言有了新的回復’’ (T_STRING)

    閃電鷹8個月前 (04-29)Windows NT | Chrome 74.0.3724.8回復
    • 老夜

      本站就是使用這串代碼目前正常,因為主題不一致且看不到你郵箱是否配置成功這里也無法排查問題

      老夜8個月前 (04-29)Windows 7 | Chrome 73.0.3683.86回復
  7. #2

    有一個問題 我用的插件 設置好后 測試發送。我有4個qq號,只有兩個qq郵箱能收到測試郵件,outlook郵箱也收不到

    coins11個月前 (02-01)iPhone | Safari 604.1回復
    • 老夜

      看看是不是被攔截放入垃圾箱了

      老夜11個月前 (02-06)Windows 7 | Chrome 71.0.3578.98回復
  8. #1

    不錯不錯

    誠信1年前 (2019-01-10)Windows NT | Chrome 71.0.3578.98回復
×
訂閱圖標按鈕
羽毛球馆地板