61 messaggi dal 23 giugno 2004
Il mio problema è il seguente:
invio in PHP un messaggio mime multipart/mixed con un allegato pdf, collegandomi a un server smtp tramite fsockopen.
per l'allegato uso
content-type: application/pdf;
content-transfer-encoding: base64;

mentre per prelevare dal file i dati da attacciare uso il seguente codice:

$my_file = fopen($my_filename, 'rb');
$my_attached_data = fread($my_file, filesize($my_filename));
fclose($my_file);

$my_attached_data = chunk_split(base64_encode($my_attached_data));

quando aggiungo i dati al messaggio, uso fputs in questo modo:

fputs($smtpConnect, $headers2.$my_attached_data."\n\n--{$mime_boundary}");

bene, a questo punto chiudo il messaggio e la connessione al server, e l'email arriva regolarmente a destinazione.
L'allegato appare con nome ed estensione corretti, la dimensione del file corrisponde a quello effettivamente inviato, ma adobe nn riesce ad aprire il file, dando un messaggio di errore in cui si dice che il file è corrotto o nn correttamente decodificato.
61 messaggi dal 23 giugno 2004
Risolto...si trattava di una banale questione di caratteri di accapo (newline).

Precisamente, tra l'header e l'allegato vero e proprio va inserita una riga vuota, mediante due caratteri mentre tra l'allegato e il separatore non ne va inserito alcuno (contrariamente a quanto ho letto su diversi tutorial):


$newLine = "\r\n"; // per tenere conto di differenze di piattaforma

fputs($smtpConnect, $headers2.$newLine.$attached_data."--{$mime_boundary}");
// headers2 contiene già al suo interno \r\n finali

ho postato la soluzione pensando che potesse essere magari d'aiuto a qualcuno con lo stesso problema

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.