我正在使用mailgun-php BatchMessage通过Mailgun发送邮件。
我当前正在发送一封电子邮件,该电子邮件应随附三个PDF。在这三个文件中,一个文件名仅由ASCII字母(当然还有扩展名前的点)组成,没有空格或其他任何内容。其他两个名称中包含空格和非ASCII(但仍为ISO-8859-1)字母。
我的Mailgun仪表板中的Mailgun日志正确显示了所有三个文件名;它们显示如下(摘录,并带有虚拟但可比的文件名):
"message": {
"attachments": [
{
"size": 64977,
"content-type": "application/pdf",
"filename": "SimpleName.pdf"
},
{
"size": 194915,
"content-type": "application/pdf",
"filename": "Encl. I. Möre complæx name.pdf"
},
{
"size": 105596,
"content-type": "application/pdf",
"filename": "Encl. II. Almost as complæx name.pdf"
}
]
}
但是在实际发送电子邮件时,两个带有“复杂”名称的附件已被重命名;实际电子邮件中的三个附件最终为:
SimpleName.pdf
Encl. I. Moere complaex name .pdf.pdf
Encl. II. Almost as complaex name .pdf
尽管ö和æ都转换为ASCII解决方法这一事实也许并不完全令人惊讶,尽管这有点令人讨厌(如今哪些电子邮件客户端不支持ISO-8859-1?)–但实际上是什么呢?让我感到困惑的是,如何在两个“复杂”附件中的扩展名之前添加一个空格,更是如此,如何在一个文件而不是另一个文件中将扩展名加倍。
每当我尝试摆弄文件名时,似乎都会发生一些新的有趣的事情。例如,我只是将最后一个的名称更改为Encl. II. Almosþ as complæx name.pdf
(也就是说,我更改了实际文件的名称以及Mailgun使用的 filename 属性),这一次,它最终在实际的电子邮件中被称为Encl. II. Almost as compl aex name.pdf
,扩展名前没有空格,但是在溶解的æ连字符之前突然出现了一个空格。
我在Mailgun的文档中或mailgun-php Github页面的任何地方都找不到类似这样的行为(但是,由于我的Mailgun仪表板日志中的文件名正确,所以我不认为这是PHP库的错误)。
哪些原因导致这些不可预测的文件名更改?