2014-11-03 51 views
1

我一直有一個非常奇怪的問題。我有一個golang服務器,並且使用net/smtp發送郵件。直到我們意識到一些額外的信息被注入到電子郵件中,並且雅虎開始忽略我們的電子郵件,這一切進展順利。不管怎麼說,併發送給了我們信息的主體的信息是:通過SMTP注入到電子郵件中的額外信息

From: [email protected] 
To: [email protected] 
Subject: Testing 
MIME-version: 1.0; 
Content-Type: text/html; charset="UTF-8"; 
<html> 
    <b> Testing </b> 
</html> 

那然後被髮送到亞馬遜SES,我們用來發送電子郵件帳戶上GoDaddy的託管。 當電子郵件到達時,我使用Gmail顯示原始郵件正文中,我得到這個:

From: [email protected] 
To: [email protected] 
Subject: Testing 
MIME-version: 1.0; 
Content-Type: text/html; charset="UTF-8"; 

<html> 
    <b> Testing </b> 
</html> 
Date: Wed, 29 Oct 2014 11:00:56 +0000 
Message-ID: <[Lots of Numbers]@email.amazonses.com> 
X-SES-Outgoing: [Some Numbers] 
Feedback-ID: us-east-1.[numbers]=:AmazonSES 

因此,那些4個額外的字段將會上漲到我們的郵件正文,這我相信會導致我們越來越標記爲垃圾郵件或更糟(雅虎是殘酷的。)有誰知道這4條線可以添加在哪裏?絕對看起來像SES,但我相信Godaddy少了很多。

(有,我們有我們的身體不同間距的點,然後將信息將注入在郵件正文的任意位置)

+2

是的,其他服務器處理您的電子郵件,並添加頁眉收件人服務器可能用來確定你的聲望。建立電子郵件信譽需要一段時間,並涉及您的IP和您的域名;首先,它可能有助於將郵件主要發送給活躍用戶,或者只是對不發送不需要的郵件(需要人們在設置帳戶時驗證電子郵件)額外警惕。您可以對SES等其他電子郵件發送服務(如SendGrid)進行A/B測試(在Web上搜索其他選項),以查看誰最能幫助您入門。 – twotwotwo 2014-11-03 01:50:56

+4

所有這些最可能的解釋是SES試圖添加* headers *,但是您的消息不是根據規範構建的,SES無法正確找到標題和正文之間的邊界。事實上,你甚至沒有添加日期表明你的電子郵件是手動滾動的,而不是最好的想法。 – 2014-11-03 02:24:09

+3

如果第一個片段的確是您的郵件的發送方式,那麼您的標題之後確實需要一個空行。 ['mime'](http://golang.org/pkg/mime/)和['mime/multipart'](http://golang.org/pkg/mime/multipart/)可以提供幫助。 – twotwotwo 2014-11-03 03:00:18

回答

3

您需要在標題和正文之間添加換行符(\r\n)。

此外,如果你想要一個簡單的方法來發送電子郵件在Go可以使用Gomail(我是作者):

package main 

import (
    "gopkg.in/gomail.v2" 
) 

func main() { 
    m := gomail.NewMessage() 
    m.SetHeader("From", "[email protected]") 
    m.SetHeader("To", "[email protected]") 
    m.SetHeader("Subject", "Testing") 
    m.SetBody("text/html", `<html> 
    <b> Testing </b> 
</html>`) 

    d := gomail.NewPlainDialer("smtp.example.com", 587, "user", "123456") 
    if err := d.DialAndSend(m); err != nil { 
     panic(err) 
    } 
} 
+0

謝謝Gomail的作者,我會給它一個測試! – 2014-11-04 23:05:05

+0

我愛圖書館。唯一的問題是它依賴於引用的可打印庫。我會回來,如果我知道了 – 2014-11-05 02:54:38

+0

嘿啤酒,一切工作在1。3,但是你需要更新你的庫爲1.4,據我可以告訴軟件包名稱「內部」現在由去使用,所以你需要改變它從內部 – 2015-01-08 01:08:47

4

你缺少頭部和身體之間的\ r \ n。您還缺少日期和消息ID標頭。大量的垃圾郵件過濾器將忽略這些作爲馬虎垃圾郵件/病毒郵件的良好標誌。沒有純文本替代品也是一樣。

默認情況下,Sendgrid或mandrill可能有助於正確獲取這些東西。

+0

感謝您提示 – 2014-11-03 04:33:06

+0

我強烈建議使用下面的Ale的庫,它的動作包裝,​​易於設置,並且像魅力一樣工作 – 2014-12-16 13:43:15

+0

SMTP MTA自動添加一個'MessageId'頭如果缺失。 Amazon SES甚至覆蓋現有的'MessageId' AFAIK。 – 2016-03-18 16:28:05

相關問題