最近在工作中收到客戶的反饋,說系統發送的E-mail都會跑去垃圾信,問有沒有辦法可以解決。既然客戶都開口了,我們當然也只能鼻子摸摸去找尋答案。

首先在解決問題之前,要先去找出問題是什麼。所以去挖掘的系統代碼後,發現到系統是使用PHP內建的函數mail() 發送電子郵件的...好吧用這個函數本身就很容易被送到垃圾信內了。接著,又去詢問了一下,發現到這套系統是寄存在HostGator的,E-mail會被送到垃圾信內也不意外了。(有太多人會透過HostGator發送垃圾信件,所以基本上google只要判斷mail server來源是HG的,就自動往垃圾信去了)


找到原因後,就來一一拆招吧~~

使用PHP發信神器phpMailer

第一招:用phpMailer取代原生php mail() 

第二招:使用 Gmail STMP 轉發,讓E-mail不直接使用HostGator發送郵件


這兩招要雙管齊下,才會有效果。好啦~~進入正題!!

phpMailer 使用方法:

一.下載 phpMailer

phpMailer 下載連結

下載 phpMailer 解壓縮以後,將解壓後的資料夾放入您的程式裡。

二.引入 phpMailer 並編寫 code

<?php
    require_once('PHPMailer/PHPMailerAutoload.php'); //引入phpMailer 記得將路徑換成您自己的path
    $mail= new PHPMailer(); //初始化一個PHPMailer物件
    $mail->Host = "smtp.gmail.com"; //SMTP主機 (這邊以gmail為例,所以填寫gmail stmp)
    $mail->IsSMTP(); //設定使用SMTP方式寄信
    $mail->SMTPAuth = true; //啟用SMTP驗證模式
    $mail->Username = "blogaidectw@gmail.com"; //您的 gamil 帳號
    $mail->Password = "aidectwPassword"; //您的 gmail 密碼
    $mail->SMTPSecure = "ssl"; // SSL連線 (要使用gmail stmp需要設定ssl模式) 
    $mail->Port = 465; //Gamil的SMTP主機的port(Gmail為465)。
    $mail->CharSet = "utf-8"; //郵件編碼
     
    $mail->From = "google@gmail.com"; //寄件者信箱
    $mail->FromName = "Aidec"; //寄件者姓名
    $mail->AddAddress("sendmailtome@gmail.com", "我是收件人"); //收件人郵件和名稱
    $mail->AddBCC('cc@example.com'); //設定 密件副本收件人 
   
    $mail->IsHTML(true); //郵件內容為html 
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //添加附件(若不需要則註解掉就好)
    
    $mail->Subject = "主題-測試郵件"; //郵件標題
    $mail->Body ="內容-測試test123"; //郵件內容
    $mail->AltBody = '當收件人的電子信箱不支援html時,會顯示這串~~';
    
    if(!$mail->send()) {
        echo '信件發送失敗!!';    
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {    
        echo '信件已發送!!';
    }
?>

OK~php code的部分就是這麼簡單,但是還沒結束需要再做一些設定才可以讓gmail幫我們寄信。

gmail設定

設定開通gmail stmp

1.登入您的gmail,點選右上方的[齒輪],再點選[設定]

phpMailer-gmail-setting.png

2.進入[設定]後,點選[轉寄和POP/IMAP]並將POP下載的狀態改成[對現在起所收到的郵件啟用POP]

phpMailer-gmail-setting-pop.png

3.到[ https://www.google.com/settings/security/lesssecureapps ] => 選擇 [開啟] 低安全性應用程式設定

註:若有開啟google登入兩階段認證的話,此功能是沒辦法用的~~

phpMailer-gmail-setting-security.png


結尾

好啦~~一切都大功告成了,快去試試看有沒有成功吧^^


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/php-mailer-52