登录
首页 >  Golang >  Go问答

Office365 发送电子邮件时遇到STARTTLS问题

来源:stackoverflow

时间:2024-03-13 22:42:23 436浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《Office365 发送电子邮件时遇到STARTTLS问题》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我尝试从 office365 服务器发送电子邮件,但出现以下错误:

恐慌:tls:第一个记录看起来不像 tls 握手

帐户配置如下 smtp.office365.com:587 (starttls)。对于身份验证,需要用户名+密码。 我使用的代码与我在网上看到的所有示例非常相似,但我无法让它工作。它在 tls.dial 处失败。

func Mail() {
    mail := Mail{}
    mail.senderId = "[email protected]"
    mail.toIds = []string{"[email protected]"}
    mail.subject = "This is the email subject"
    mail.body = "body"

    messageBody := mail.BuildMessage()

    smtpServer := SmtpServer{host: "smtp.office365.com", port: "587"}


    auth := smtp.PlainAuth("", mail.senderId, `mypassword`, smtpServer.host)

    fmt.Println(auth)


    tlsconfig := &tls.Config{
        InsecureSkipVerify: true,
        ServerName:         smtpServer.host,
    }

    conn, err := tls.Dial("tcp", "smtp.office365.com:587", tlsconfig)

    if err != nil {
        log.Panic(err)
    }

    client, err := smtp.NewClient(conn, smtpServer.host)
    if err != nil {
        log.Panic(err)
    }


    if err = client.Auth(auth); err != nil {
        log.Panic(err)
    }


    if err = client.Mail(mail.senderId); err != nil {
        log.Panic(err)
    }
    for _, k := range mail.toIds {
        if err = client.Rcpt(k); err != nil {
            log.Panic(err)
        }
    }


    w, err := client.Data()
    if err != nil {
        log.Panic(err)
    }

    _, err = w.Write([]byte(messageBody))
    if err != nil {
        log.Panic(err)
    }

    err = w.Close()
    if err != nil {
        log.Panic(err)
    }

    client.Quit()

    log.Println("Mail sent successfully")

}

解决方案


您正尝试在未封装在 tls 中的端口上执行 tls 拨号。 如果你想使用starttls

client, err := smtp.Dial("tcp", "smtp.office365.com:587")

if err != nil {
    log.Panic(err)
}

err = client.StartTLS(tlsconfig)
if err != nil {
    log.Panic(err)
}

好了,本文到此结束,带大家了解了《Office365 发送电子邮件时遇到STARTTLS问题》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>