Rumah > pembangunan bahagian belakang > Golang > Menghuraikan e-mel menggunakan net/mel

Menghuraikan e-mel menggunakan net/mel

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-06 09:40:07
ke hadapan
1033 orang telah melayarinya

使用 net/mail 解析电子邮件

Kandungan soalan

Saya sedang menggunakan net/mail dalam golang untuk menghuraikan e-mel.

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))
}
Salin selepas log masuk

Ini berfungsi hebat untuk e-mel teks biasa. Walau bagaimanapun, apabila saya menghantar e-mel menggunakan apl mel epal yang mengandungi html, isi berikut dikembalikan:

--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--
Salin selepas log masuk

Apabila menghantar badan ini kepada diri saya menggunakan sendgrid saya mendapat e-mel berikut:

Situasi yang sama berlaku dengan lampiran. Bagaimanakah saya boleh menghuraikan e-mel ini dengan betul supaya saya boleh menghantarnya semula ke alamat e-mel yang lain?


Jawapan Betul


Jika anda ingin menggunakan semula kandungan e-mel dalam e-mel lain (cth. ubah hala), hanya memasukkan badan tidak mencukupi, anda juga perlu memasukkan pengepala e-mel.

Secara khusus, anda perlu memasukkan sekurang-kurangnya Content-Type 标头,该标头显示应如何解释正文。在您的情况下,它包含一些 multipart/* 内容类型(即诸如 multipart/mixed、multipart/related、multipart/alternative 之类的东西)以及分隔邮件正文中各部分的边界。如果这不是多部分正文,则 Content-Type asal yang mengandungi set aksara yang menentukan pengekodan teks yang digunakan, iaitu utf-8, iso-8859-15,...

Untuk badan bukan berbilang bahagian, anda juga perlu memasukkan pengepala Content-Transfer-Encoding asal, yang menentukan cara badan dikodkan untuk penghantaran, iaitu base64, boleh cetak sebut harga, 7bit, ...

Atas ialah kandungan terperinci Menghuraikan e-mel menggunakan net/mel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan