Maison > développement back-end > Golang > Analyser les e-mails à l'aide de net/mail

Analyser les e-mails à l'aide de net/mail

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-06 09:40:07
avant
1070 Les gens l'ont consulté

使用 net/mail 解析电子邮件

Contenu de la question

J'utilise actuellement net/mail dans Golang pour analyser les e-mails.

import (
  "net/mail"
  "io"
  "strings"
)

func main() {
  email := "some email received"

  reader := strings.newreader(emailinput)
  msg, err := mail.readmessage(inputreader)
  check(err)

  body, err := io.readall(msg.body)
  check(err)

  fmt.println(string(body))
}
Copier après la connexion

Cela fonctionne très bien pour les e-mails en texte brut. Cependant, lorsque j'envoie un e-mail à l'aide de l'application Apple Mail contenant du HTML, le corps suivant est renvoyé :

--Apple-Mail=3D_4A1E75FB-9514-439D-B922-8526851CA743
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
    charset=3Dus-ascii

fn main() {
  println!("Hello world!");
}


--Apple-Mail=3D_4A1E75FB-9514-439D-B922-8526851CA743
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
    charset=3Dus-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; charset=
=3Dus-ascii"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode=
: space; line-break: after-white-space;" class=3D""><pre class=3D"" style=
=3D"color: rgb(209, 209, 209); background-color: rgb(0, 0, 0);">fn <span cl=
ass=3D"" style=3D"color: rgb(230, 97, 112); font-weight: bold;">main</span>=
<span class=3D"" style=3D"color: rgb(210, 205, 134);">(</span><span class=
=3D"" style=3D"color: rgb(210, 205, 134);">)</span> <span class=3D"" style=
=3D"color: rgb(176, 96, 176);">{</span>
  println<span class=3D"" style=3D"color: rgb(210, 205, 134);">!</span><spa=
n class=3D"" style=3D"color: rgb(210, 205, 134);">(</span><span class=3D"" =
style=3D"color: rgb(2, 208, 69);">"</span><span class=3D"" style=3D"color: =
rgb(0, 196, 196);">Hello world!</span><span class=3D"" style=3D"color: rgb(=
2, 208, 69);">"</span><span class=3D"" style=3D"color: rgb(210, 205, 134);"=
>)</span><span class=3D"" style=3D"color: rgb(176, 96, 176);">;</span>
<span class=3D"" style=3D"color: rgb(176, 96, 176);">}</span>

3D"" --Apple-Mail=3D_4A1E75FB-9514-439D-B922-8526851CA743--
Copier après la connexion

Lorsque je m'envoie ce corps en utilisant sendgrid, je reçois l'e-mail suivant :

Une situation similaire se produit avec les pièces jointes. Comment puis-je analyser correctement cet e-mail afin de pouvoir le renvoyer à une autre adresse e-mail ?


Bonne réponse


Si vous souhaitez réutiliser le contenu de l'e-mail dans un autre e-mail (par exemple une redirection), il ne suffit pas d'inclure le corps, vous devez également inclure les en-têtes de l'e-mail.

Plus précisément, vous devez inclure au moins le jeu de caractères contenant l'original Content-Type 标头,该标头显示应如何解释正文。在您的情况下,它包含一些 multipart/* 内容类型(即诸如 multipart/mixed、multipart/related、multipart/alternative 之类的东西)以及分隔邮件正文中各部分的边界。如果这不是多部分正文,则 Content-Type qui détermine l'encodage du texte utilisé, c'est-à-dire utf-8, iso-8859-15,...

Pour les corps non multi-parties, vous devez également inclure l'en-tête Content-Transfer-Encoding original, qui détermine la manière dont le corps est codé pour la transmission, c'est-à-dire base64, imprimable entre guillemets, 7 bits, ...

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!

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