You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言开发SMTP应用遇smtp: server doesn't support AUTH问题求助

问题描述

我尝试用Go语言开发一个简单的SMTP应用,但我的SMTP服务器不支持AUTH认证,无需用户名和密码。然而使用smtp.PlainAuth()会触发认证流程,导致报错:smtp: server doesn't support AUTH。以下是我当前的代码:

package main

import (
    "log"

    "net/smtp"
)

func main() {
    // Configuration
    from := "samplemail@gmail.com"
    password := "12345samplemail"
    to := []string{"recipient@email.com"}
    smtpHost := "smtp.gmail.com"
    smtpPort := "587"
    message := []byte("Hello! I'm trying out smtp to send emails to recipients.")

    // Create authentication
    auth := smtp.PlainAuth("", from, password, smtpHost)

    // Send actual message
    err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, message)
    if err != nil {
        log.Fatal(err)
    }
}
解决方案

smtp.SendMail()函数的auth参数允许传入nil,当该参数为nil时,客户端不会尝试执行任何认证流程,刚好适配不支持AUTH的SMTP服务器。

修改后的代码如下:

package main

import (
    "log"

    "net/smtp"
)

func main() {
    // Configuration
    from := "samplemail@gmail.com"
    to := []string{"recipient@email.com"}
    smtpHost := "smtp.gmail.com"
    smtpPort := "587"
    message := []byte("Hello! I'm trying out smtp to send emails to recipients.")

    // 无需认证,传入nil作为auth参数
    err := smtp.SendMail(smtpHost+":"+smtpPort, nil, from, to, message)
    if err != nil {
        log.Fatal(err)
    }
}

说明:

  • 移除了不需要的password变量和smtp.PlainAuth()创建逻辑
  • 调用smtp.SendMail()时将第二个参数改为nil,跳过认证步骤

内容的提问来源于stack exchange,提问作者Buvnesh Venkatesan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:50:44