1 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
RFC 2822樣式的電子郵件標(biāo)頭不允許未轉(zhuǎn)義的 Unicode 字符。您需要使用與 ASCII 兼容的編碼,例如RFC2047 1或RFC 2231,例如:
內(nèi)容處置:附件;
文件名="=?UTF-8?Q?=D9=83=D9=8A=D9=81=20=D8=AA=D8=B9=D9=85=D9=84=20=D8=A7=D9= 84=D9=85=D8=A7=D8=B1=D9=83=D8=B3=D9=8A=D8=A9=2E=70=64=66.pdf?="
內(nèi)容類型:應(yīng)用程序/pdf;
名稱="=?UTF-8?Q?=D9=83=D9=8A=D9=81=20=D8=AA=D8=B9=D9=85=D9=84=20=D8=A7=D9= 84=D9=85=D8=A7=D8=B1=D9=83=D8=B3=D9=8A=D8=A9=2E=70=64=66.pdf?="
內(nèi)容處置:附件;
文件名*=UTF-8''%D8%A%D8%A%D8%B9%D8%A%D8%B9%D8%A%D8%B9%D8%A%D8%A%D8%B9%D8 %A%D8%A%D8%A%DB%D8%A%D8%A%D8%A%D8%''文件名*=UTF-8''%85%D8%A7%D8%B1%D8% D8%B3%D8%D8%A9%2E%70%64%66.pdf
內(nèi)容類型:應(yīng)用程序/pdf;
D8%D8%A7%D8%B9%D8%A%D8%B9%D8%A%D8%B9%D8%A%D8%B9%D8%A%D8%B9%D8%D8%A7%D8D8D8a% D8%B9%D8%D8%D8%D8%D8%D8%D8%D8A7%女兒,姓名*=UTF-8'' %85%D8%A7%D8%B1%D8%D8%B3%D8%D8 %A9%2E%70%64%66.pdf
1:是的,我知道 RFC 2047在技術(shù)上不允許encoded-words 在帶引號(hào)的字符串中,例如用于參數(shù)值。但是許多服務(wù)器確實(shí)允許這樣做。
看:
如何對(duì) MIME 消息中 Content-Disposition 標(biāo)頭的文件名參數(shù)值進(jìn)行編碼?
附件文件名的混亂
當(dāng) Outlook 向您的電子郵件發(fā)送電子郵件時(shí),它很可能正是這樣做的。您可以通過(guò)查看它實(shí)際發(fā)送的電子郵件的原始數(shù)據(jù)來(lái)驗(yàn)證這一點(diǎn)。
在 Go 中,該m.Attach()函數(shù)有一個(gè)可選settings參數(shù),可用于傳遞附件的附加參數(shù),例如自定義文件名甚至自定義標(biāo)題,例如:
baseName := mime.QEncoding.Encode("utf-8", filepath.Base(path))
m.Attach(path, gomail.Rename(baseName))
baseName := url.PathEscape(filepath.Base(path))
m.Attach(path, gomail.SetHeader(map[string][]string{
"Content-Disposition": {"attachment; filename*=UTF-8''" + baseName},
}))
- 1 回答
- 0 關(guān)注
- 2275 瀏覽
添加回答
舉報(bào)