Vai al contenuto

[PHP] mail()


bulvio

Messaggi raccomandati

Non so se è un problema di invio (il server smtp che fa le bizze?) o se per qualche motivo i messaggi vengono bloccati dai server di destinazione, fatto sta che si perdono per la strada.

php non ritorna alcun messaggio di errore, segno che evidentemente non c'è niente che non vada nella sintassi della funzione. Il problema è evidentemente altrove... nella sorgente del messaggio, o, appunto, nel server smtp (quello di OSX incorporato, che se non sbaglio è postfix).

Il sito è in locale, si tratta del gestionale della mia azienda, funziona in intranet locale e dovrebbe, appunto, mandare le fatture via mail direttamente.

In realtà ha funzionato qualche volta, ma a random... ogni tanto sì e ogni tanto no... ma ora è sempre no...

Metto il codice (la parte incriminata...):


[...] // prima di queste righe c'è la preparazione del pdf con fpdf, la stampa pdf normale, senza invio (parametro Output 'I') funziona senza problemi.
$attach=$pdf->Output( '', 'S' );

$attach=chunk_split(base64_encode($attach));

$semi_rand = md5(time());
 $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers = "From: Varone Grafica <alessandra@varonegrafica.it>\n";
$headers .="MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed\n";
$headers .="boundary={$mime_boundary}\n";

$msg = <<<EOT

This is a multi-part message in MIME format.

--{$mime_boundary}
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

In allegato alla presente inviamo la copia (in formato PDF) della fattura in oggetto. Il presente invio SOSTITUISCE quello effettuato in modo tradizionale a mezzo servizio postale. L'invio tramite e-mail delle fatture e' una operazione ammessa dalla normativa fiscale in essere, relativa alla 'Trasmissione delle Fatture' per via Telematica:

R.M. n. 571134 del 19/07/88 - (posta elettronica);
R.M. n. 450217 del 30/07/90 - (procedure informatizzate);
R.M. n. 107 del 04/07/01 - (trasmissione fatture);
R.M. n. 202/E del 04/12/01 - (archiviazione fatture).

Risoluzioni che forniscono chiarimenti in ordine alle condizioni necessarie per l'ammissibilita' ai sensi dell'art. 21 D.P.R. 26/10/72, n.633, della procedura di trasmissione e memorizzazione delle fatture mediante sistemi combinati fondati sull'impiego congiunto di supporti informatici, telefax e posta elettronica. La normativa nazionale italiana ad oggi NON consente l'archiviazione di alcun documento contabile in formato digitale. Quindi e' necessario GENERARNE UNA STAMPA e procedere alla relativa archiviazione come da prassi a norma di legge.

--{$mime_boundary}
Content-Disposition: inline;
filename="fatt_{$_GET[rif]}.pdf";
Content-Type: application/pdf;
name="fatt_{$_GET[rif]}.pdf";
Content-Transfer-Encoding: base64

{$attach}

--{$mime_boundary}
EOT;


// Invio la mail
if (mail($datifattura[Mail], "Invio fattura", $msg, $headers))
{
 header ("Location: ../fatture/fatture.php?mail=ok&mailto={$datifattura[Mail]}");
} else {
 header ("Location: ../index.php");
}


Grazie!

Link al commento
Condividi su altri siti

la funzione mail() di php consegna solo il messaggio a sendmail o postfix che sia, quindi non restituisce quasi mai errore, purchè la sintassi sia rispettata (cosa che, mi pare di capire, sai già).

hai fatto qualche test di invio mettendo tu a mano il destinatario, una stringa semplice come body e per header un semplice "From: indririzzo@tuodominio.it"?

hai provato a guardare nei log? dovresti trovarlo (per snow leopard) in:

/private/var/log/mail.log

come consiglio spassionato, posso dirti di passare all'utilizzo della classe PHPMailer, gratuita, semplice da configurare, ed in modalità di debug ti restituisce anche le comunicazioni con l'smtp (riportando gli eventuali errori occorsi dettagliatamente), oltre ad essere molto più versatile e consentirti di appoggiarti anche ad un smtp remoto, in caso di necessità.

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

Ok, fatto con phpmailer, e funziona, grazie a SMTP però...

Unica pecca è che accetta gli allegati solo partendo da files già salvati sul server... nel mio caso, quindi, mi tocca salvare prima il pdf fisicamente su un file temporaneo, e poi recuperarlo con la funzione AddAttachment. Mentre con mail() potevo inserire direttamente la stringa del pdf senza salvarle il file sul disco. Ma pazienza, non si può avere tutto...!

Link al commento
Condividi su altri siti

fatto con AddAttachment dovrebbe essere pienamente compatibile praticamente con qualsiasi client email, mentre nel modo precedente alcune volte mi aveva dato problemi.

non sono fatti miei, ma....non ti conservi una copia PDF delle fatture sul server???? :DD

An  a tuesday keeps the doctor away.

proud member of < noi finti professionisti > club - tessera 044

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...