Analysieren Sie E-Mails mit net/mail

WBOY
Freigeben: 2024-02-06 09:40:07
nach vorne
824 Leute haben es durchsucht

使用 net/mail 解析电子邮件

Frageninhalt

Ich verwende derzeit net/mail in Golang, um E-Mails zu analysieren.

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))
}
Nach dem Login kopieren

Dies funktioniert hervorragend für Nur-Text-E-Mails. Wenn ich jedoch eine E-Mail mit der Apple-Mail-App sende, die HTML enthält, wird der folgende Text zurückgegeben:

--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--
Nach dem Login kopieren

Wenn ich diesen Text mit sendgrid an mich selbst sende, erhalte ich die folgende E-Mail:

Eine ähnliche Situation passiert bei Anhängen. Wie kann ich diese E-Mail richtig analysieren, damit ich sie erneut an eine andere E-Mail-Adresse senden kann?


Richtige Antwort


Wenn Sie den E-Mail-Inhalt in einer anderen E-Mail wiederverwenden möchten (z. B. Weiterleitung), reicht es nicht aus, nur den Text einzuschließen, Sie müssen auch die E-Mail-Header einschließen.

Konkret müssen Sie mindestens den ursprünglichen Content-Type 标头,该标头显示应如何解释正文。在您的情况下,它包含一些 multipart/* 内容类型(即诸如 multipart/mixed、multipart/related、multipart/alternative 之类的东西)以及分隔邮件正文中各部分的边界。如果这不是多部分正文,则 Content-Type enthaltenden Zeichensatz einschließen, der die verwendete Textkodierung bestimmt, d. h. utf-8, iso-8859-15,...

Für nicht mehrteilige Körper müssen Sie auch den ursprünglichen Content-Transfer-Encoding-Header einschließen, der bestimmt, wie der Körper für die Übertragung codiert wird, d. h. Base64, quoted-printable, 7bit, ...

Das obige ist der detaillierte Inhalt vonAnalysieren Sie E-Mails mit net/mail. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!