2012-04-17 18 views
6

Ho un sistema che è una soluzione interna che tenta di inviare le fatture via email ai client. Questo sistema funziona alla grande, tranne per un client che ottiene file .dat invece dei file .pdf generati correttamente che tutti gli altri ottengono.Gli allegati PDF si stanno trasformando in file DAT inutilizzabili

ho studiato il problema e molte cose puntare a problemi con l'invio di email di Outlook (non si utilizza Outlook) e dividere i file, perché è a grandi (non lo è, si può manualy inviare la multa e-mail.)

I file vengono rinominati come "= _utf-8_B_Q29uc29saWRhdGVkIEludm9pY2VzIGZv.dat" anziché "1180426.pdf".

Dopo le intestazioni su entrambi i file sono solo righe di caratteri che non significano nulla per me.

le intestazioni dei file .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 

Qualcuno ha qualche idea su perché questo sta accadendo?

+0

hai provato a cambiare "fattura" a "sconto"? forse risolverà il problema :) –

+0

sembra che il tuo pdf sia codificato in base64. poiché è possibile inviare manualmente la fattura in modo corretto, sospetto che il server di posta sia da incolpare. hai provato a utilizzare il sistema per inviare lo stesso pdf a due client? se uno fallisce ancora, sospetto che si tratti del problema del server di posta del client (ricezione finale). –

+0

per prima cosa, quando dici "non lo è, possiamo inviare manualmente l'e-mail fine", hai inviato manualmente il file al client SAME senza problemi? Se sì, allora non leggere oltre. Cercherò di trovare qualche altra soluzione. In caso contrario, potrebbe essere un problema al client (il suo server di posta non accetterà allegati di grandi dimensioni)? puoi chiedere al cliente di verificare con il suo fornitore di servizi di posta elettronica? – tumchaaditya

risposta

5

Dai commenti:

C'è un carattere Unicode strano in corso di stampa, invece di un trattino qui nel nome del file: "... Impermeabilizzazione - Città universale, ...". Potrebbe essere che il server di posta di qualcuno sia sensibile ai caratteri non ASCII e, di conseguenza, lo codifichi su base64. Cambialo in un trattino ASCII normale e dovrebbe andare bene.


Come ho trovato:

In primo luogo, ecco il decoder Base64 linea che ho usato: http://www.opinionatedgeek.com/dotnet/tools/base64decode/

In secondo luogo, ho iniziato concatenando tutte le stringhe base64 dalla intestazione. È diviso in più segmenti: per la prima intestazione ci sono 5 segmenti. I segmenti sono le parti lunghe tra i punti interrogativi. metterli tutti insieme, si ottiene:

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

Mettendo questo nel decoder dà:

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

Un'altra serie di segmenti base64. Il primo segmento sembra tagliato fuori, quindi presumo che ciò che è entrato nel nome del file sia in realtà parte di esso.Così ho anteporre con questo e ottengo:

Q29uc29saWRhdGVkIEludm9pY2VzIGZvciBBbHBoYSBJbnN1bGF0aW9u 
ICYgV2F0ZXJwcm9vZmluZyAtIEFscGhhIEluc3VsYXRpb24gJiBXYXRl 
cnByb29maW5nIOKAkyBVbml2ZXJzYWwgQ2l0eSwgKDIwMTItMDQtMTMp 
LnBkZg== 

Mettendo questo nel decoder renderà sputare fuori un file .bin a causa del carattere non-ASCII. Il file bin contiene il nome completo del file PDF.

Aprendo il file bin in un editor esadecimale:

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 

L'em-dash sporge come un pollice dolente.

+0

Grazie per il vostro aiuto. Che cosa hai usato per trovarlo esattamente? – JustinDoesWork

+0

C'è molto testo coinvolto, quindi aggiornerò la mia risposta con il processo. –

+0

Ho rimosso il nome dei miei clienti dalla risposta. Cambia le lettere in *. – JustinDoesWork

0

Si sta impostando un tipo MIME quando il sistema allega i PDF ai messaggi e-mail? Se sì, cosa stai usando? È una soluzione al buio, ma è possibile che il tuo sistema non stia usando correttamente l'applicazione/pdf e una combinazione dei server di posta e dei client coinvolti si confonda e reagisce cambiandola in un file .dat.

2

Penso che @Jeff E abbia ragione: c'è un carattere non ASCII nel nome del file e questo causa problemi ad un'estremità o l'altra. Quando invii il file manualmente via email, suppongo che il trattino elettronico venga sostituito da un trattino normale o da un altro carattere (ad es. _) Dal tuo client di posta. Se cambi il trattino in "Impermeabilità - Universal City" in "-" penso che dovrebbe funzionare.

(. Se lo fa, rep dovrebbe andare a Jeff, quando vide l'unicode)

Problemi correlati