7

golang で smtp 経由で電子メールを送信していますが、これは完全に正常に動作します。電子メールの送信者を設定するには、Client.Mail関数を使用します。

func (c *Client) Mail(from string) error

受信者が電子メールを受信すると、送信者はプレーンテキストの電子メール アドレスとして表示されます。sender@example.com

送信者を次のように表示したい: Sandy Sender <sender@example.com>.

これは可能ですか?送信者をSandy Sender <sender@example.com>or onlyに設定しようとしSandy Senderましたが、どれも機能しません。エラーが発生します501 5.1.7 Invalid address

4

4 に答える 4

17

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)
    }
}
于 2014-12-02T15:33:40.767 に答える
0

のようなプロジェクトがjpoehls/gophermailうまく機能するかどうかを確認できます。

次のようなテスト ケースがあります。

m.SetFrom("Domain Sender <sender@domain.com>")

RFC 5322に従うはずのメソッドを内部的に ( main.go) 呼び出します。SetMailAddress()mail.ParseAddress()

于 2014-12-02T12:12:42.500 に答える
0

mail.Addressを使用し、Address.String関数を使用してアドレスをフォーマットできると思います

func (a *Address) String() string

文字列は、有効な RFC 5322 アドレスとしてアドレスをフォーマットします。アドレスの名前に非 ASCII 文字が含まれている場合、名前は RFC 2047 に従って表示されます。

そして私は例を書きます:

go_smtp.go

于 2014-12-02T12:17:57.150 に答える