通过SMTP将额外信息注入电子邮件

时间:2014-11-03 00:43:47

标签: email amazon-web-services go smtp amazon-ses

我一直有一个非常奇怪的问题。我有一个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少了很多。

(我们的身体中存在不同间距的点,然后信息将被注入到消息体中的随机位置)

2 个答案:

答案 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)
    }
}