PDF附件正在更改为无法使用的DAT文件

时间:2012-04-17 15:44:08

标签: email pdf

我的系统是内部解决方案,试图通过电子邮件将发票邮寄给客户。除了一个客户端获取.dat文件而不是其他人获得的生成的.pdf文件之外,该系统运行良好。

我已经研究过这个问题,很多事情都指向Outlook发送电子邮件(不使用outlook)和拆分文件的问题,因为它很大(不是,我们可以手动发送电子邮件。)

文件被重命名为“= _utf-8_B_Q29uc29saWRhdGVkIEludm9pY2VzIGZv.dat”而不是“1180426.pdf”。

两个文件上的标题后面只是对我没有任何意义的字符行。

.dat文件的标头: 文件1

 =?utf-8?B?Y2lCQmJIQm9ZU0JKYm5OMWJHRjBhVzl1Pz0NCiA9P3V0Zi04P0I/SUNZ?=\
\

 =?utf-8?B?Z1YyRjBaWEp3Y205dlptbHVaeUF0SUVGc2NHaGhJRWx1YzNWc1lYUnBi?=\
\

 =?utf-8?B?MjRnSmlCWFlYUmw/PQ0KID0/dXRmLTg/Qj9jbkJ5YjI5bWFXNW5JT0tB?=\
\

 =?utf-8?B?a3lCVmJtbDJaWEp6WVd3Z1EybDBlU3dnS0RJd01USXRNRFF0TVRNcD89?=\
\
 =?utf-8?B?DQogPT91dGYtOD9CP0xuQmtaZz09Pz0=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment

file2的

 =?utf-8?B?YUdFZ1NXNXpkV3hoZEdsdmJpQW1JRmRoPz0NCiA9P3V0Zi04P0I/ZEdW?=\
\

 =?utf-8?B?eWNISnZiMlpwYm1jZ0xTQkJiSEJvWVNCSmJuTjFiR0YwYVc5dUlDWWdW?=\
\

 =?utf-8?B?MkYwWlhKd2NtOXY/PQ0KID0/dXRmLTg/Qj9abWx1WnlEaWdKTWdWVzVw?=\
\

 =?utf-8?B?ZG1WeWMyRnNJRU5wZEhrc0lDZ3lNREV5TFRBMExURXpLUzV3WkdZPT89?=\
\
 =?utf-8?B??="
Content-Transfer-Encoding: base64
Content-Disposition: attachment

有没有人知道为什么会这样?

3 个答案:

答案 0 :(得分:5)

来自评论:

在文件名中打印出一个奇怪的Unicode字符而不是连字符:“......防水 - 环球城,......”。可能是某人的邮件服务器对非ASCII字符敏感,并将其编码为base64。将其更改为常规ASCII连字符,它应该没问题。


我是如何找到的:

首先,这是我使用的在线base64解码器:http://www.opinionatedgeek.com/dotnet/tools/base64decode/

其次,我从头部连接所有base64字符串开始。它分为多个部分:对于第一个标题,有5个部分。段是问号之间的长部分。把它们放在一起,你得到:

Y2lCQmJIQm9ZU0JKYm5OMWJHRjBhVzl1Pz0NCiA9P3V0Zi04P0I/SUNZ
Z1YyRjBaWEp3Y205dlptbHVaeUF0SUVGc2NHaGhJRWx1YzNWc1lYUnBi
MjRnSmlCWFlYUmw/PQ0KID0/dXRmLTg/Qj9jbkJ5YjI5bWFXNW5JT0tB
a3lCVmJtbDJaWEp6WVd3Z1EybDBlU3dnS0RJd01USXRNRFF0TVRNcD89
DQogPT91dGYtOD9CP0xuQmtaZz09Pz0=

将其放入解码器中:

ciBBbHBoYSBJbnN1bGF0aW9u?=
=?utf-8?B?ICYgV2F0ZXJwcm9vZmluZyAtIEFscGhhIEluc3VsYXRpb24gJiBXYXRl?=
=?utf-8?B?cnByb29maW5nIOKAkyBVbml2ZXJzYWwgQ2l0eSwgKDIwMTItMDQtMTMp?=
=?utf-8?B?LnBkZg==?=

另一组base64段。第一段看起来像它被切断了,所以我假设进入文件名的内容实际上是它的一部分。所以我先加上它并得到:

Q29uc29saWRhdGVkIEludm9pY2VzIGZvciBBbHBoYSBJbnN1bGF0aW9u
ICYgV2F0ZXJwcm9vZmluZyAtIEFscGhhIEluc3VsYXRpb24gJiBXYXRl
cnByb29maW5nIOKAkyBVbml2ZXJzYWwgQ2l0eSwgKDIwMTItMDQtMTMp
LnBkZg==

this 放入解码器将使其因为非ASCII字符而吐出.bin文件。 bin文件包含PDF的完整文件名。

在十六进制编辑器中打开bin文件:

43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 49 6E 76   Consolidated Inv
6F 69 63 65 73 20 66 6F 72 20 41 6C 70 68 61 20   oices for **** 
49 6E 73 75 6C 61 74 69 6F 6E 20 26 20 57 61 74   ********** & ***
65 72 70 72 6F 6F 66 69 6E 67 20 2D 20 41 6C 70   ********** - ***
68 61 20 49 6E 73 75 6C 61 74 69 6F 6E 20 26 20   ** ********** & 
57 61 74 65 72 70 72 6F 6F 66 69 6E 67 20 E2 80   ************* â€
93 20 55 6E 69 76 65 72 73 61 6C 20 43 69 74 79   “ ********* ****
2C 20 28 32 30 31 32 2D 30 34 2D 31 33 29 2E 70   , (2012-04-13).p
64 66                                             df

em-dash像拇指一样伸出来。

答案 1 :(得分:2)

我认为@Jeff E已经做对了:文件名中有一个非ASCII字符,这会导致一端或另一端出现问题。当您手动通过电子邮件发送文件时,我的猜测是,您的邮件客户端会使用常规连字符或其他字符(例如_)替换em-dash。如果您将“防水 - 环球城市”中的短划线更改为“ - ”,我认为这应该有用。

(如果确实如此,代表应该去看Jeff,因为他发现了unicode。)

答案 2 :(得分:0)

当您的系统将PDF附加到电子邮件时,您是否设置了MIME类型?如果是这样,你在用什么?这是一个黑暗的镜头,但你的系统可能没有正确使用application / pdf,并且邮件服务器和客户端的某些组合通过将其更改为.dat而变得混乱和响应。