Heim  >  Artikel  >  Backend-Entwicklung  >  Golang-Postfach verstümmelter Code

Golang-Postfach verstümmelter Code

PHPz
PHPzOriginal
2023-05-19 10:37:37596Durchsuche

Mit der weit verbreiteten Anwendung der Go-Sprache in der Back-End-Entwicklung haben in den letzten Jahren immer mehr Entwickler damit begonnen, Golang für die Postfachverarbeitung zu verwenden. Allerdings stoßen viele Menschen während dieses Vorgangs auf ein häufiges Problem, nämlich verstümmelte Postfächer. Dieser Artikel gibt eine kurze Einführung und Lösung für dieses Problem.

1. Was ist eine verstümmelte E-Mail-Adresse?

Bei der Verwendung von Golang für die E-Mail-Verarbeitung treten manchmal verstümmelte chinesische Zeichen in Anhängen oder chinesische verstümmelte Zeichen in Empfängern und Absendern auf. Diese Situation wird normalerweise durch die von Golang verwendete Standardmethode zum E-Mail-Versand verursacht, die die chinesische Kodierung nicht unterstützt.

2. Warum erscheint die E-Mail-Adresse verstümmelt?

In der Standardbibliothek von Golang werden DefaultSender (Standardabsender) und DefaultCharset (Standardkodierung) zum Senden von E-Mails verwendet. Da DefaultCharset standardmäßig die US-ASCII-Kodierung verwendet, können chinesische Zeichen nicht korrekt konvertiert werden, was zu verstümmelten Zeichen führt. Wenn Sie gleichzeitig die Base64-Codierung verwenden möchten, müssen Sie die relevanten Header-Informationen manuell hinzufügen, da sonst weiterhin verstümmelte Zeichen angezeigt werden.

3. Wie kann das Problem verstümmelter E-Mails gelöst werden?

Für dieses Problem gibt es mehrere Lösungen:

  1. Verwenden Sie eine E-Mail-Versandbibliothek eines Drittanbieters

Wenn Sie dieses Problem nicht selbst lösen möchten, können Sie die Verwendung einer E-Mail-Versandbibliothek eines Drittanbieters in Betracht ziehen. wie Net/SMTP und Gomail usw. Diese Bibliotheken unterstützen bereits die chinesische Kodierung, wodurch das Problem verstümmelter Zeichen vermieden werden kann.

  1. E-Mail-Header-Informationen ändern

Wenn Sie den Versand der E-Mail selbst abschließen müssen, können Sie die relevanten E-Mail-Header-Informationen vor dem Senden der E-Mail ändern. Die spezifischen Schritte sind wie folgt:

  • Konvertieren Sie die chinesische Kodierung per E-Mail.Header.

Zum Beispiel:

from := "发件人姓名<发件邮箱地址>"
to := "收件人姓名<收件邮箱地址>"
subject := "邮件主题"
body := "邮件内容"

header := make(map[string]string)
header["From"] = email.Header("From", from).String()
header["To"] = email.Header("To", to).String()
header["Subject"] = email.Header("Subject", subject).String()
  • Verwenden Sie base64, um den E-Mail-Betreff zu kodieren.

Zum Beispiel:

header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
  • Ändern Sie die E-Mail-Absender- und SMTP-Serverinformationen.

Zum Beispiel:

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
  • E-Mail senden

Zum Beispiel:

message := ""
for k, v := range header {
    message += fmt.Sprintf("%s: %s
", k, v)
}
message += "Content-Type: text/plain; charset=UTF-8

" + body

err := smtp.SendMail(smtpServer, auth, smtpSender, []string{"收件人邮箱地址"}, []byte(message))
if err != nil {
    log.Fatal(err)
}
  1. Verwenden Sie die MIME-Bibliothek von Golang

Wenn Sie Golang 1.6 oder höher verwenden, können Sie die MIME-Bibliothek für die E-Mail-Codierungskonvertierung verwenden . Die spezifischen Schritte lauten wie folgt:

  • Verwenden Sie mime.QEncoding, um eine chinesische Kodierungskonvertierung durchzuführen.

Zum Beispiel:

from := "发件人姓名<发件邮箱地址>"
to := "收件人姓名<收件邮箱地址>"
subject := "邮件主题"
body := "邮件内容"

header := make(map[string]string)
header["From"] = mime.QEncoding.Encode("UTF-8", from)
header["To"] = mime.QEncoding.Encode("UTF-8", to)
header["Subject"] = mime.QEncoding.Encode("UTF-8", subject)
  • Verwenden Sie base64, um den E-Mail-Betreff zu kodieren.

Zum Beispiel:

header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
  • Ändern Sie die E-Mail-Absender- und SMTP-Serverinformationen.

Zum Beispiel:

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
  • Senden Sie eine E-Mail

Zum Beispiel:

message := ""
for k, v := range header {
    message += fmt.Sprintf("%s: %s
", k, v)
}
message += "Content-Type: text/plain; charset=UTF-8

" + body

err := smtp.SendMail(smtpServer, auth, smtpSender, []string{"收件人邮箱地址"}, []byte(message))
if err != nil {
    log.Fatal(err)
}

Mit der oben genannten Methode können Sie das Problem verstümmelter Postfächer in Golang lösen.

Zusammenfassung:

Chinesische Kodierung ist ein häufiges Problem beim E-Mail-Versand, aber Sie müssen sich keine allzu großen Sorgen machen, wenn Sie Golang für die E-Mail-Verarbeitung verwenden. Mit den oben genannten Lösungen können Sie das Problem verstümmelter Zeichen leicht lösen und Ihre E-Mail-Verarbeitung vollständiger und professioneller gestalten.

Das obige ist der detaillierte Inhalt vonGolang-Postfach verstümmelter Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn