Ces dernières années, avec la large application du langage Go dans le développement back-end, de plus en plus de développeurs ont commencé à utiliser Golang pour le traitement lié aux boîtes aux lettres. Cependant, au cours de ce processus, de nombreuses personnes seront confrontées à un problème courant, à savoir les boîtes aux lettres tronquées. Cet article donnera une brève introduction et une solution à ce problème.
1. Qu'est-ce qu'une adresse e-mail tronquée ?
Lorsque vous utilisez Golang pour le traitement des e-mails, il y aura parfois des caractères chinois tronqués dans les pièces jointes, ou des caractères chinois tronqués chez les destinataires et les expéditeurs. Cette situation est généralement causée par la méthode d'envoi d'e-mails par défaut utilisée par Golang, qui ne prend pas en charge l'encodage chinois.
2. Pourquoi l'adresse e-mail apparaît-elle tronquée ?
Dans la bibliothèque standard de Golang, DefaultSender (expéditeur par défaut) et DefaultCharset (encodage par défaut) sont utilisés pour envoyer des e-mails. Étant donné que DefaultCharset utilise par défaut le codage US-ASCII, les caractères chinois ne peuvent pas être convertis correctement, ce qui entraîne des caractères tronqués. Dans le même temps, si vous souhaitez utiliser l'encodage Base64, vous devez ajouter manuellement les informations d'en-tête pertinentes, sinon des caractères tronqués apparaîtront toujours.
3. Comment résoudre le problème des e-mails tronqués ?
Pour ce problème, il existe plusieurs solutions :
Si vous ne souhaitez pas résoudre ce problème vous-même, vous pouvez envisager d'utiliser une bibliothèque d'envoi d'e-mails tierce, comme net/smtp et gomail etc. Ces bibliothèques ont déjà implémenté la prise en charge du codage chinois, ce qui peut éviter le problème des caractères tronqués.
Si vous devez finaliser l'envoi de l'e-mail vous-même, vous pouvez modifier les informations d'en-tête de l'e-mail pertinentes avant d'envoyer l'e-mail. Les étapes spécifiques sont les suivantes :
Par exemple :
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()
Par exemple :
header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Par exemple :
smtpServer := "smtp服务器地址" auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer) smtpSender := "认证邮箱地址"
Par exemple :
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) }
Si vous utilisez Golang 1.6 ou supérieur, vous pouvez envisager d'utiliser la bibliothèque MIME pour la conversion de l'encodage des e-mails. . Les étapes spécifiques sont les suivantes :
Par exemple :
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)
Par exemple :
header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Par exemple :
smtpServer := "smtp服务器地址" auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer) smtpSender := "认证邮箱地址"
Par exemple :
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) }
En utilisant la méthode ci-dessus, vous pouvez résoudre le problème des boîtes aux lettres tronquées dans Golang.
Résumé :
L'encodage chinois est un problème courant dans l'envoi d'e-mails, mais il n'y a pas lieu de trop s'inquiéter lorsque vous utilisez Golang pour le traitement des e-mails. Grâce aux solutions ci-dessus, vous pouvez facilement résoudre le problème des caractères tronqués et rendre le traitement de vos e-mails plus complet et professionnel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!