最近在工作中收到客戶的反饋,說系統發送的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 並編寫 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,點選右上方的[齒輪],再點選[設定]
2.進入[設定]後,點選[轉寄和POP/IMAP]並將POP下載的狀態改成[對現在起所收到的郵件啟用POP]
3.到[ https://www.google.com/settings/security/lesssecureapps ] => 選擇 [開啟] 低安全性應用程式設定
註:若有開啟google登入兩階段認證的話,此功能是沒辦法用的~~
結尾
好啦~~一切都大功告成了,快去試試看有沒有成功吧^^
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/php-mailer-52
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記