我在golang上发送smtp的电子邮件,效果非常好。要设置电子邮件的发件人,请使用Client.Mail功能:
func (c *Client) Mail(from string) error
当收件人收到电子邮件时,他将发件人视为纯文本电子邮件地址:sender@example.com
我希望发件人显示为:Sandy Sender <sender@example.com>
。
这可能吗?我尝试将发件人设置为Sandy Sender <sender@example.com>
或仅设置Sandy Sender
,但这些都不起作用。我收到错误501 5.1.7 Invalid address
答案 0 :(得分:10)
您需要将邮件的From
字段设置为Sandy Sender <sender@example.com>
:
...
From: Sandy Sender <sender@example.com>
To: recipient@example.com
Subject: Hello!
This is the body of the message.
并使用sender@example.com
中的地址(Client.Mail
)。
或者,您可以使用我的包Gomail:
package main
import (
"gopkg.in/gomail.v2"
)
func main() {
m := gomail.NewMessage()
m.SetAddressHeader("From", "sender@example.com", "Sandy Sender")
m.SetAddressHeader("To", "recipient@example.com")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/plain", "This is the body of the message.")
d := gomail.NewPlainDialer("smtp.example.com", 587, "user", "123456")
if err := d.DialAndSend(m); err != nil {
panic(err)
}
}
答案 1 :(得分:0)
您可以检查jpoehls/gophermail
之类的项目是否效果更好。
它有一个测试用例like this one:
m.SetFrom("Domain Sender <sender@domain.com>")
内部(main.go
)在SetMailAddress()
中调用方法mail.ParseAddress()
supposed to follow RFC 5322。
答案 2 :(得分:0)
我认为您可以使用mail.Address并使用Address.String函数格式地址
func (a *Address) String() string
String将地址格式化为有效的RFC 5322地址。如果地址名称包含非ASCII字符,则将根据RFC 2047呈现名称。
我写了一些例子: