如何正確發送(大量) Email 信件

Update(2011/5): 推薦 Amazon SES 服務

Update(2010/5): So You’d Like to Send Some Email (Through Code) 也可以一看

Update(2011/7): 推薦 Postmark,也有 Rails plugin。

在眾多客戶需求中,我最害怕的其中一條”順便”要做的功能就是,在後台可以寄信給”全部的”使用者。

寄 “email” 而已,不是非常簡單嗎?

寄給幾個人是很簡單,但是要寄給”一群”人,那就不是件簡單的事情了,在這 spam 肆虐的年頭, 信寄出去不一定就能順利到達使用者的收件夾。

Engine Yard 的這兩篇 How To Ensure Your Email Gets DeliveredMaking Sure Your Email Gets Delivered 點出了寄 Email 要注意的事項:

  1. 處理退信

    Bonuce mail 是你寄出去的信件,但是因為某些理由(地址不對、對方信箱滿了)而被對方 mail sever 退信,這些 email 你必須要處理。如果你忽略它還一直寄,你就長得蠻像發垃圾信的傢伙,而會被列出黑名單之中。

  2. 與主要的 Email 服務商設定意見反應機制(Feedback Loop)

    Feedback Loop 是一項協助處理當你的 email 被使用者按下 “垃圾信” 的服務。透過主動接觸主要的 Email 服務提供商,去建立用戶意見反應機制。例如 台灣Y!Yahoo! Complaint Feedback Loopmsn等,減少被寄件者檢舉成垃圾信的次數。

  3. 建立自已的 email 清單

    建立你自己的 mail 清單。如果你的清單是買來的,不但收件人沒有同意要收到你的信件,也會有很高的機會是 bonuce mail。寄出大量的非允許郵件,終究會讓你的 IP 被列出黑名單。

    標準的作法是,要在使用者註冊後,且他們也確認收到註冊的認證信(透過email上的認證連結),如此便可以確保這個 email 的正確性,而不會變成 bonuce mail。你也應該避免寄出跟你服務無關的email,減少被檢舉成垃圾信的機會。

  4. 不要使用 100% 以圖片為主的內容

    減少使用圖片,像 Gmail 預設就不會讀取圖片,重要的資訊使用圖片可能會讓使用者預設就看不到。充滿圖片的的 email 也容易判讀成垃圾信。

  5. 使用垃圾信判讀工作測試

    收信的 mail server 通常會使用如 Spam Assassin 的工具來判讀是否是垃圾信,而你也應該用這類的工作檢查你寄出去的信件。http://www.brandonchecketts.com/emailtest.php 是一個線上的檢查工作,如果你的分數太低,顯然很可能被判讀成 spam。至於為什麼分數低,可以參考這篇文章

  6. 驗證 HTML

    如果你寄的是 HTML 格式,你應該檢查 HTML 格式是否正確。一封畸形的信件也容易變成 spam。

  7. 模擬測試終端使用者環境

    使用不同 email clients 實際測試,例如 litmusapp.com 這個工具。不同的 client 可能會顯示不同的結果。

  8. 專屬 IP

    是否有專屬的 IP。如果你的 email sever 是跟人共用的,很可能別人被 spam 了,跟著害到你被列入黑名單。

  9. 設定 SPF Validation

    SPF (Sender Policy Framework) 是一項 e-mail 協定來確認 return-path address 的正確性,用以防止垃圾信件。設定 SPF 可以改進你的信件發送成功率,特別是 hotmail(MSN)。

  10. 設定 Domain Keys Verification

    Domain Keys 驗證是另一種防止垃圾信件的協定。

  11. 設定 Reverse DNS 反查

    設定反向查詢的 DNS 記錄,如果你寄信的 IP 無法反查,可能根本就寄不到。

  12. 驗證寄信者地址

    你的寄信人 email 位址也要是正確存在的。許多 email 服務商會先檢查寄件人的地址是正確的,才會收信。

接下來麻煩的是,如果你終究還是不小心被列成黑名單,該怎麼辦? 這篇文章也列出一些常見的原因。

Anyway,我的結論是,還是交給專業的來吧~ 自己架設/管理 email server 不但辛苦又會被 blocked。如果信件量一天低於 500 封,我會建議採用免錢 Gmail 來寄信;超過的話,則有一些第三方服務可以採用,例如 Amazon SESSendgridAuthsmtp。 如果需要比較多的行銷功能,則可以考慮 MadmimiCampaignmonitorMailchimp 等服務。

BTW,既然提到了 Campaign Monitor,如果你有心做 Email marketing,他們家有不少值得一讀的資源,例如 Guide to CSS support in email clients 就十分有用。