Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22091

mail() fallisce solo se tutti i destinatari vengono respinti?

From Umberto Salsi <salsi@icosaedro.it>
Newsgroups it.comp.www.php
Subject mail() fallisce solo se tutti i destinatari vengono respinti?
Date 2018-06-12 13:16 +0200
Organization Aioe.org NNTP Server
Message-ID <pfoa20$66j$1@gioia.aioe.org> (permalink)

Show all headers | View raw


Sto esplorando l'affidabilità di mail() per l'invio "massivo" a due o
più destinatari. Sebbene il manuale non lo dica, sembra che:

1. Non si può avere retroazione del motivo del fallimento.

2. Se fallisce, nessun messaggio viene inviato.

3. Sa ha successo, QUALCUNO dei destinatari potrebbe ricevere il
messaggio.

4. Se c'è un solo destinatario (To, Cc e Bcc) e questo viene respinto
dal server SMTP, allora mail() fallisce.

5. Se ci sono due o più destinatari (To, Cc e Bcc) e almeno uno di
questi viene accettato, allora mail() ha successo; non c'è modo di
sapere quali destinatari sono stati respinti se non andando a vedere i
log files del server o aspettanto i bounce.

Test code minimalista delle varie combinazioni che compila il campo To
(ma con Cc e Bcc sembra che le cose vadano nello stesso modo):

<?php
error_reporting(-1);
echo "PHP version: ", PHP_VERSION, "\n";
$good = "test@icosaedro.it";
$bad  = "<<<>>>";
$unknown = "DoesNotExist@DoesNotExists";

$attempts = [
        $good,
        $bad,
        $unknown,
        "$good, $bad",
        "$good, $unknown",
        "$bad, $unknown"
];

foreach($attempts as $to){
        echo "Sending to $to:\n";
        var_dump( mail($to, "This message sent to $to", "Testing.") );
        var_dump( error_get_last() );
}
?>

Esito del codice precedente, commentato:

PHP version: 7.2.4
Sending to test@icosaedro.it:
bool(true)   {atteso}
NULL
Sending to <<<>>>:
bool(false)   {atteso}
NULL         {peccato che non si abbia il motivo del fallimento}
Sending to DoesNotExist@DoesNotExists:
bool(true)   {evidentemente il mio SMTP non fa una verifica dominio preventiva, ok}
NULL
Sending to test@icosaedro.it, <<<>>>:
bool(true)   {inaspettato, ma il primo destinatario riceve}
NULL
Sending to test@icosaedro.it, DoesNotExist@DoesNotExists:
bool(true)   {a questo punto è il risultato atteso}
NULL
Sending to <<<>>>, DoesNotExist@DoesNotExists:
bool(true)   {a questo punto, esito atteso}
NULL
You have new mail in /var/mail/test {sono arrivati i bounce!}

Sto cercando di irrobustire il metodo di trasporto mail() di PHPMailer,
ma senza successo.

Sono corrette le mie deduzioni?

C'è un altro modo di sapere perché mail() fallisce?

O bisogna proprio inviare un email alla volta?

Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  www.icosaedro.it

Back to it.comp.www.php | Previous | NextNext in thread | Find similar | Unroll thread


Thread

mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-12 13:16 +0200
  Re: mail() fallisce solo se tutti i destinatari vengono respinti? Alessandro Pellizzari <shuriken@amiran.it> - 2018-06-12 12:35 +0100
    Re: mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-13 11:24 +0200
  Re: mail() fallisce solo se tutti i destinatari vengono respinti? Umberto Salsi <salsi@icosaedro.it> - 2018-06-18 12:05 +0200

csiph-web