在golang中通过smtp发送电子邮件并更改发件人的姓名

Kir*_*ril 5 email smtp go mail-sender

我在golang上发送smtp的电子邮件,效果非常好.要设置电子邮件的发件人,我使用Client.Mail功能:

func (c *Client) Mail(from string) error
Run Code Online (Sandbox Code Playgroud)

当收件人收到电子邮件时,他将发件人视为明文电子邮件地址: sender@example.com

我希望发件人显示如下:Sandy Sender <sender@example.com>.

这可能吗?我尝试将发件人设置为Sandy Sender <sender@example.com>或仅设置,Sandy Sender但没有一个工作.我收到了错误501 5.1.7 Invalid address

Ale*_*Ale 11

您需要将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.
Run Code Online (Sandbox Code Playgroud)

并使用地址only(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)
    }
}
Run Code Online (Sandbox Code Playgroud)