我正在尝试使用我的 Mailjet 凭据从我的 golang 应用程序发送电子邮件,但我正在尝试以正常的 golang 方式来发送电子邮件(是的,我知道他们的库受到高度鼓励)。
我使用 Mailjet 库可以很好地处理电子邮件,但我的老板提出了一个非常好的观点,即我们可能不会永远留在 Mailjet。如果我们切换到不同的电子邮件解决方案,我们不想重写我们所有的电子邮件代码,我们只想更改我们的主机名和凭据。
我的打印机使用相同的主机名和凭据通过 Mailjet 发送电子邮件,但由于某种原因,我的 golang 应用程序不会!
我的代码是从golang smtp 库 SendEmail 示例中采用的。
这是(当然,没有我的凭据):
import (
"bytes"
"fmt"
"net/smtp"
)
func SendTestEmail() (bool, error) {
fmt.Println("Send Test Email: Enter")
success := false
hostname := "in-v3.mailjet.com"
auth := smtp.PlainAuth("", username, password, hostname)
to := []string{"me@example.com"}
msg := []byte("To: me@example.com\r\n" +
"Subject: discount Gophers!\r\n" +
"\r\n" +
"This is the email body.\r\n")
fmt.Println("Send Test Email: Sending Email")
err := smtp.SendMail(hostname+":587", auth, "sender@example.com", to, msg)
if err == nil {
fmt.Println("Send Test Email: Email successfully sent!")
success = true
} else {
fmt.Println("Send Test Email: Email failed to send", err)
}
fmt.Println("Send Test Email: Exit")
return success, err
}
请注意,我使用的是端口 587。我不知道我的打印机使用的是 587 还是 25,但它可以正常工作。使用端口 25 时我也不工作。
真正奇怪的是它smtp.SendEmail
没有返回任何错误,但我仍然没有收到任何电子邮件(是的,我正在检查我的垃圾文件夹)!
此外,当我登录 Mailjet 时,我看不到任何电子邮件已发送。我确实看到当我从打印机发送内容时发送了一封电子邮件。
那么,我的邮箱呢?!
任何帮助是极大的赞赏。谢谢!