Maison > développement back-end > Golang > code tronqué de la boîte aux lettres Golang

code tronqué de la boîte aux lettres Golang

PHPz
Libérer: 2023-05-19 10:37:37
original
619 Les gens l'ont consulté

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 :

  1. Utiliser une bibliothèque d'envoi d'e-mails tierce

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.

  1. Modifier les informations d'en-tête de l'e-mail

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 :

  • Convertir l'encodage chinois par e-mail.En-tête.

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()
Copier après la connexion
  • Utilisez base64 pour encoder le sujet de l'e-mail.

Par exemple :

header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Copier après la connexion
Copier après la connexion
  • Modifiez les informations sur l'expéditeur de l'e-mail et le serveur SMTP.

Par exemple :

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
Copier après la connexion
Copier après la connexion
  • Envoyer un e-mail

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)
}
Copier après la connexion
Copier après la connexion
  1. Utilisez la bibliothèque MIME de Golang

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 :

  • Utilisez mime.QEncoding pour effectuer la conversion de l'encodage chinois.

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)
Copier après la connexion
  • Utilisez base64 pour encoder le sujet de l'e-mail.

Par exemple :

header["Subject"] = "=?UTF-8?B?" + base64.StdEncoding.EncodeToString([]byte(subject)) + "?="
Copier après la connexion
Copier après la connexion
  • Modifiez les informations sur l'expéditeur de l'e-mail et le serveur SMTP.

Par exemple :

smtpServer := "smtp服务器地址"
auth := smtp.PlainAuth("", "认证邮箱地址", "认证邮箱密码", smtpServer)
smtpSender := "认证邮箱地址"
Copier après la connexion
Copier après la connexion
  • Envoyer un e-mail

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)
}
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal