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:
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.
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:
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()
Zum Beispiel:
header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Zum Beispiel:
smtpServer := "smtp服务器地址" auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer) smtpSender := "认证邮箱地址"
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) }
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:
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)
Zum Beispiel:
header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Zum Beispiel:
smtpServer := "smtp服务器地址" auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer) smtpSender := "认证邮箱地址"
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!