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

Golang-Postfach verstümmelter Code

PHPz
Freigeben: 2023-05-19 10:37:37
Original
638 Leute haben es durchsucht

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()
Nach dem Login kopieren
  • Verwenden Sie base64, um den E-Mail-Betreff zu kodieren.

Zum Beispiel:

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

Zum Beispiel:

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
Nach dem Login kopieren
Nach dem Login kopieren
  • 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)
}
Nach dem Login kopieren
Nach dem Login kopieren
  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)
Nach dem Login kopieren
  • Verwenden Sie base64, um den E-Mail-Betreff zu kodieren.

Zum Beispiel:

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

Zum Beispiel:

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
Nach dem Login kopieren
Nach dem Login kopieren
  • 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)
}
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage