我一直有一个非常奇怪的问题。我有一个golang服务器,我正在使用net / smtp发送电子邮件。它一直顺利,直到我们意识到一些额外的信息被注入电子邮件,并且雅虎开始忽略我们的电子邮件。无论如何,发送给我们信息正文的信息是:
From: test@withheld.com
To: me@gmail.com
Subject: Testing
MIME-version: 1.0;
Content-Type: text/html; charset="UTF-8";
<html>
<b> Testing </b>
</html>
然后发送到Amazon SES,我们用来发送电子邮件的帐户托管在godaddy上。 当电子邮件到达时,我使用gmail显示原始邮件正文,我得到了:
From: test@withheld.com
To: me@gmail.com
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少了很多。
(我们的身体中存在不同间距的点,然后信息将被注入到消息体中的随机位置)
答案 0 :(得分:4)
标题和正文之间缺少\ r \ n。您还缺少日期和消息ID标头。许多垃圾邮件过滤器将丢失那些垃圾过滤器作为垃圾邮件/病毒邮件的一个好兆头。没有纯文字替代品也是如此。
默认情况下,Sendgrid或mandrill可能会帮助您完成这些任务。
答案 1 :(得分:3)
您需要在标题和正文之间添加换行符(\r\n
)。
此外,如果您想要一种简单的方式在Go中发送电子邮件,您可以使用Gomail(我是作者):
package main
import (
"gopkg.in/gomail.v2"
)
func main() {
m := gomail.NewMessage()
m.SetHeader("From", "test@withheld.com")
m.SetHeader("To", "me@gmail.com")
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)
}
}