之前我能通过smtp发送带有gmail的电子邮件,但现在不行了。我仍然能够在我开发的Windows上的计算机上从localhost发送,但不能从生产服务器发送。我已启用"允许安全性较低的应用"用我的Gmail帐户。但这仍然是我得到的错误:
2016/06/07 10:27:03 534 5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbtq
5.7.14 ZHRyO8gjNXDZjjls6t7JWkP7y1UM8Jc44oPvw0dXO96SljvNT3d2QDMlJAT3X7p4teLYY1
5.7.14 zj9NBwLOytlrdRXkjm7BZNWpPLLscyxEOUcyLL3EFHdnYiq_1P_PwQVcLvZlVGUdChm_
5.7.14 6BIdD9uJLkOOG_6b6oXyJ1YfZJneoM8IiUYlWaecNECJQYF8WLYY3hSCCnNDazjJuRvjbH
5.7.14 yqJu4xBfx-929yDQwvPmuVxL4bQv8> Please log in via your web browser and
5.7.14 then try again.
5.7.14 Learn more at
5.7.14 https://support.google.com/mail/answer/78754 89sm7243327qth.2 - gsmtp
它说它已检测到&#34;一个未知设备&#34;这是生产服务器,但我没有办法确认该设备是合法的。我该如何发送电子邮件?
这是我编写的用于发送电子邮件的代码,请注意,当我从Windows开发环境中的localhost发送时,它不起作用。
type Mail struct {
Hostname string
Port string
User string
Password string
Header map[string]string
IsHTML bool
Subject string
Body string
Recipients []string
}
func New() *Mail {
return &Mail{
Hostname: cfg.MailHost,
Port: cfg.MailPort,
User: cfg.MailUser,
Password: cfg.MailPass,
Header: map[string]string{},
IsHTML: true,
}
}
func (m *Mail) AddHeader(key, value string) {
m.Header[key] = value
}
func (m *Mail) AddRecipient(address string) {
m.Recipients = append(m.Recipients, address)
m.AddHeader("To", "<"+address+">")
}
func (m *Mail) HTML(isHTML bool) {
m.IsHTML = isHTML
}
func (m *Mail) Send() error {
if m.Subject == "" {
m.Subject = "Some random subject..."
}
m.AddHeader("Subject", m.Subject)
if _, ok := m.Header["From"]; !ok {
m.AddHeader("From", cfg.MailName+" <"+cfg.MailUser+">")
}
if m.IsHTML {
m.AddHeader("MIME-version", "1.0;")
m.AddHeader("Content-Type", "text/html; charset=\"UTF-8\";")
}
body := ""
for k, v := range m.Header {
body += fmt.Sprintf("%s: %s\r\n", k, v)
}
body += "\r\n" + m.Body
auth := smtp.PlainAuth("", m.User, m.Password, m.Hostname)
err := smtp.SendMail(
m.Hostname+":"+m.Port,
auth,
m.User,
m.Recipients,
[]byte(body),
)
if err != nil {
return err
}
return nil
}
我不知道现在该做什么。
config.go中的一些变量:
MailHost = "smtp.gmail.com"
MailPort = "587"
如果我将端口从587更改为465,如下所示: https://support.google.com/a/answer/176600?hl=en
我在尝试从生产服务器发送电子邮件时收到错误:"EOF"
。
它一直说我应该去gmail&#34;高级设置。将IP地址列入白名单。但是gmail中没有高级设置,只有设置。