smtp赢得';无法在生产环境中工作,未经身份验证,即使有凭证
我在这里过得很愉快。我的代码使用以下配置在本地实例(OSX)上运行:smtp赢得';无法在生产环境中工作,未经身份验证,即使有凭证,smtp,go,Smtp,Go,我在这里过得很愉快。我的代码使用以下配置在本地实例(OSX)上运行: mail.host = smtp.gmail.com mail.port = 25 mail.from = mysite.com mail.username = email@gmail.com 但表示它在生产中未经认证(Ubuntu 12.0.1): 这是我的代码(您可以在github.com/tanema/revel_mailer上找到所有代码)。身份验证错误在c.Mail(用户名)行抛出 func (m *Mailer)
mail.host = smtp.gmail.com
mail.port = 25
mail.from = mysite.com
mail.username = email@gmail.com
但表示它在生产中未经认证(Ubuntu 12.0.1):
这是我的代码(您可以在github.com/tanema/revel_mailer上找到所有代码)。身份验证错误在c.Mail(用户名)
行抛出
func (m *Mailer) Send(mail_args map[string]interface{}) error {
m.renderargs = mail_args
pc, _, _, _ := runtime.Caller(1)
names := strings.Split(runtime.FuncForPC(pc).Name(), ".")
m.template = names[len(names)-2] + "/" + names[len(names)-1]
host, host_ok := revel.Config.String("mail.host")
if !host_ok {
revel.ERROR.Println("mail host not set")
}
port, port_ok := revel.Config.Int("mail.port")
if !port_ok {
revel.ERROR.Println("mail port not set")
}
c, err := smtp.Dial(fmt.Sprintf("%s:%d", host, port))
if err != nil {
return err
}
if ok, _ := c.Extension("STARTTLS"); ok {
if err = c.StartTLS(nil); err != nil {
return err
}
}
from, from_ok := revel.Config.String("mail.from")
if !from_ok {
revel.ERROR.Println("mail.from not set")
}
username, username_ok := revel.Config.String("mail.username")
if !username_ok {
revel.ERROR.Println("mail.username not set")
}
if err = c.Auth(smtp.PlainAuth(from, username, getPassword(), host)); err != nil {
return err
}
if err = c.Mail(username); err != nil {
return err
}
if mail_args["to"] != nil {
m.to = makeSAFI(mail_args["to"]) //makeSAFI == make string array from interface
}
if mail_args["cc"] != nil {
m.cc = makeSAFI(mail_args["cc"])
}
if mail_args["bcc"] != nil {
m.bcc = makeSAFI(mail_args["bcc"])
}
if len(m.to) + len(m.cc) + len(m.bcc) == 0 {
return fmt.Errorf("Cannot send email without recipients")
}
recipients := append(m.to, append(m.cc, m.bcc...)...)
for _, addr := range recipients {
if err = c.Rcpt(addr); err != nil {
return err
}
}
w, err := c.Data()
if err != nil {
return err
}
mail, err := m.renderMail(w)
if err != nil {
return err
}
if revel.RunMode == "dev" {
fmt.Println(string(mail))
}
_, err = w.Write(mail)
if err != nil {
return err
}
err = w.Close()
if err != nil {
return err
}
return c.Quit()
}
我不知道问题出在哪里;请帮忙
编辑:
因此,我咬紧牙关,注册了谷歌应用程序,并用域名和电子邮件将其全部设置好。这让我相信,实际上是MX记录我没有改变。所以我再次测试了用我的个人电子邮件发送,现在MX记录已经设置好了。不走运。你知道我是否可以为个人gmail电子邮件设置MX记录,这样我就不必为谷歌应用付费吗?我开发了一个gmail前端,遇到了类似的问题。请尝试以下操作:
您能将代码置于调试模式并打印出客户端和服务器头吗?很抱歉,如何做到这一点?我一直在搜索确切的内容,以便查看smtp发送的值connection@timanema你可以用它来检查数据包。嘿,谢谢,在我尝试不同的东西时已经发生了这种情况,我点击了链接,说是我,但现在它什么也没做。它甚至没有警告我。我应该澄清一下,导致该警告的相同设置现在给了我一个身份验证错误或TLS的587端口。