如何使用 Outlook 的 SMTP 服务器发送电子邮件?

我想使用 Outlook 服务器发送电子邮件,但收到错误504 5.7.4 Unrecognized authentication type


这是片段。


func sendEmail() {

    server := "smtp-mail.outlook.com

    port := 587

    user := "foo@outlook.com"

    from := user

    pass := "foobar"

    dest := "bar@gmail.com"


    auth := smtp.PlainAuth("", user, pass, server)


    to := []string{dest}


    msg := []byte("From: " + from + "\n" +

        "To: " + dest + "\n" +

        "Subject: Test outlook\n" +

        "OK")


    endpoint := server + ":" + port

    err := smtp.SendMail(endpoint, auth, from, to, msg)

    if err != nil {

        log.Fatal(err)

    }

}

如果我不使用 Outlook 发送电子邮件,而是使用 Gmail,则效果很好。


在 Python 中,我可以使用 Outlook 发送电子邮件,代码如下:


    server = smtplib.SMTP(server, port)

    server.starttls()

    server.login(user, password)

    server.sendmail(from, to, msg)

    server.quit()

所以我想我的 Go 代码中遗漏了一些东西。根据doc,SendMail切换到TLS,所以这不应该是问题。


慕田峪9158850
浏览 141回答 0
0回答

慕码人8056858

auth := smtp.PlainAuth("", user, pass, server)这是使用 PLAIN 身份验证方法。不幸的是 smtp-mail.outlook.com 不支持这种身份验证方法:> EHLO example.com < 250-AM0PR10CA0007.outlook.office365.com Hello ... < 250- ... < 250-AUTH LOGIN XOAUTH2因此,仅支持 LOGIN 和 XOAUTH2 作为身份验证方法。server.login(user, password)Python支持LOGIN所以会成功。Golang smtp不支持登录。但这个要点似乎通过添加这个缺失的身份验证方法提供了一个有效的修复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go