2012-04-17 2 views
6

У меня есть система, которая представляет собой встроенное решение, пытающееся отправлять счета-фактуры клиентам. Эта система отлично работает, за исключением того, что один клиент получает файлы .dat вместо хорошо сгенерированных файлов .pdf, которые получают все остальные.Вложения PDF меняются на неиспользуемые файлы DAT

Я исследовал эту проблему и многие вещи указывают на проблемы с перспективы отправки сообщений электронной почты (не используя Outlook) и разделения файлов, поскольку он является большим (это не так, мы можем отправить Мануалы электронный штраф.)

Файлы переименовываются в «= _utf-8_B_Q29uc29saWRhdGVkIEludm9pY2VzIGZv.dat» вместо «1180426.pdf».

После того, как заголовки в обоих файлах - это просто строки символов, которые для меня ничего не значат.

заголовкам .dat файлов: file1

=?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 

Кто-нибудь есть какие-либо идеи о том, почему это происходит?

+0

Вы пытаетесь изменить «счет-фактуру» на «скидку»? возможно, это решит проблему :) –

+0

выглядит так, что ваш pdf-код кодируется base64. поскольку вы можете вручную отправить счет-фактуру, я подозреваю, что ваш почтовый сервер виноват. пытаетесь ли вы использовать систему для отправки одного и того же pdf-файла двум клиентам? если все еще не удается, я буду подозревать, что это проблема почтового сервера клиента (получение). –

+0

во-первых, когда вы говорите «это не так, мы можем вручную отправить почту по электронной почте», вы вручную отправили файл SAME клиенту без проблем? Если да, то не читайте дальше. Я попытаюсь найти другое решение. Если нет, это может быть проблемой на стороне клиента (его почтовый сервер не принимает большие вложения)? можете ли вы попросить клиента проверить его поставщик услуг электронной почты? – tumchaaditya

ответ

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== 

Ввод это в декодер будет сделать его выплюнуть .bin файл из не-ASCII символа. Файл bin содержит полное имя файла PDF.

Открытие файла бен в шестнадцатеричном редакторе:

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 

ЕСТ-тир торчит как больной палец.

+0

Спасибо за помощь. Что вы использовали, чтобы найти это точно? – JustinDoesWork

+0

Существует много текста, поэтому я обновляю свой ответ с помощью процесса. –

+0

Я удалил имя своего клиента из ответа. Измените буквы на *. – JustinDoesWork

0

Вы устанавливаете тип MIME, когда ваша система прикрепляет PDF-файлы к сообщениям электронной почты? Если да, то чем вы пользуетесь? Это выстрел в темноте, но возможно, что ваша система неправильно использует приложение/pdf, и некоторая комбинация почтовых серверов и вовлеченных клиентов запутывается и реагирует, изменяя ее на .dat.

2

Я думаю, что @Jeff E имеет это право: в имени файла есть символ не ASCII, и это вызывает проблемы на одном конце или в другом. Когда вы отправляете файл по электронной почте вручную, я предполагаю, что em-dash заменяется вашим обычным дефем или другим символом (например, _) вашим почтовым клиентом. Если вы измените черту в «Гидроизоляция - Универсальный город» на «-», я думаю, это должно сработать.

(. Если это произойдет, представитель должен идти к Джеффу, как он заметил юникода)