Golang中gomail.Dailer报错问题如何解决

Golang中gomail.Dailer报错问题如何解决

go install

github.com/linkedin/Burrow/core/internal/notifier

core/internal/notifier/email.go:92:21: 传递给 gomail.Dialer 转换的参数过多:gomail.Dialer(“localhost”, 587, “username”, “password”)

你能帮我解决这个错误吗?

7 回复

是的,我在为监控Kafka消费者延迟的Burrow项目运行“go install”时遇到了同样的错误。

更多关于Golang中gomail.Dailer报错问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个文件属于哪个项目?

Manoj_Sadhu: core/internal/notifier/email.go

你调用哪个函数?如何调用?

你想调用这个函数吗?

func NewDialer(host string, port int, username, password string) *Dialer

请参阅 https://godoc.org/gopkg.in/gomail.v2#NewDialer

我尝试调用这个函数,但遇到了以下异常。

core/internal/notifier/email.go:92:7: undefined: gomail.NewDialer

我导入了 "gopkg.in/gomail.v2"

你好,@Manoj_Sadhu,我不太确定你是如何得到那个错误信息的,因为当我查看你链接的项目中该文件的第92行时,它正在调用一个函数 gomail.NewDialer

d := gomail.NewDialer(host, port, "", "")

尝试重新克隆或再次获取该库。

我正在尝试安装用于Kafka消费者延迟警报的Burrow工具。这个Burrow工具由LinkedIn使用Go语言开发。在安装过程中,我尝试执行此查询(go install),但遇到了以下错误:

core/internal/notifier/email.go:92:7: undefined: gomail.NewDialer

这个错误是因为 gomail.Dialer 的构造函数参数使用方式不正确。gomail.Dialer 是一个结构体,需要通过 NewDialer 函数创建实例,而不是直接调用。

以下是正确的使用方式:

package main

import (
    "gopkg.in/gomail.v2"
)

func main() {
    // 创建拨号器实例
    dialer := gomail.NewDialer("localhost", 587, "username", "password")
    
    // 使用拨号器发送邮件
    message := gomail.NewMessage()
    message.SetHeader("From", "sender@example.com")
    message.SetHeader("To", "recipient@example.com")
    message.SetHeader("Subject", "Test Subject")
    message.SetBody("text/plain", "This is the email body")
    
    // 发送邮件
    err := dialer.DialAndSend(message)
    if err != nil {
        panic(err)
    }
}

对于你代码中的第92行,应该修改为:

// 错误的方式
// dialer := gomail.Dialer("localhost", 587, "username", "password")

// 正确的方式
dialer := gomail.NewDialer("localhost", 587, "username", "password")

如果你需要自定义更多参数,可以这样配置:

dialer := gomail.NewDialer("smtp.gmail.com", 587, "your-email@gmail.com", "your-password")
dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true} // 仅用于测试环境
dialer.LocalName = "localhost" // 设置本地主机名

确保你已经正确导入了gomail包:

import "gopkg.in/gomail.v2"
回到顶部