Sto usando PHPMailer per inviare e-mail che funziona benissimo. Tuttavia, il problema è che poiché invia l'e-mail in modo sincrono, il caricamento della pagina successiva richiede molto tempo.Invia e-mail in modo asincrono via PhpMailer
Sto usando PHPMailer come mostrato in questo esempio https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps
mi chiedo se c'è un modo di effettuare la consegna di posta elettronica asincrona. Ho studiato questo e ha scoperto che sendmail ha un'opzione per impostare DeliveryMode a "modalità background" - fonte http://php.net/manual/en/function.mail.php
mail($to, $subject, $message, $headers, 'O DeliveryMode=b');
Voglio sapere se qualcosa di simile può essere fatto in PHPMailer? Qualcuno ha avuto qualche successo con questo?
EDIT: - (Ulteriori informazioni) Sembra PHPMailer può essere configurato per utilizzare sendmail - https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php Perciò mi chiedo se questo può essere in qualche modo sfruttato per consentire la consegna di sfondo.
/**
* Which method to use to send mail.
* Options: "mail", "sendmail", or "smtp".
* @type string
*/
public $Mailer = 'mail';
/**
* The path to the sendmail program.
* @type string
*/
public $Sendmail = '/usr/sbin/sendmail';
/**
* Whether mail() uses a fully sendmail-compatible MTA.
* One which supports sendmail's "-oi -f" options.
* @type boolean
*/
public $UseSendmailOptions = true;
/**
* Send messages using $Sendmail.
* @return void
*/
public function isSendmail()
{
$ini_sendmail_path = ini_get('sendmail_path');
if (!stristr($ini_sendmail_path, 'sendmail')) {
$this->Sendmail = '/usr/sbin/sendmail';
} else {
$this->Sendmail = $ini_sendmail_path;
}
$this->Mailer = 'sendmail';
}
anche - a quanto pare c'è modo di impostare le opzioni di sendmail tramite php.ini http://blog.oneiroi.co.uk/linux/php/php-mail-making-it-not-suck-using-sendmail/
Preferirei fare questo come un argomento in linea per la chiamata API vs php.ini in modo che isnt un globale modificare. Qualcuno ha provato questo?
Risposta fantastica. Grazie per la spiegazione dettagliata. Molto apprezzato!! Sono un po 'un noob quando si tratta di questo argomento - avete qualche consiglio su quale server di posta scegliere/installare. Sono su un piano di hosting condiviso. Non sono sicuro se il mio webhost mi consentirà di installarne uno personalizzato. – rogerb
La maggior parte delle distribuzioni di Linux usano postfix, che preferisco exim. Ce ne sono molti altri però. Se il tuo ISP non ti consente di installarne uno, probabilmente forniscono già qualcosa o uno smarthost nelle vicinanze - controlla i loro documenti, apri un ticket di supporto. In caso contrario, suggerirei di installare un nuovo fornitore di servizi ... – Synchro
Grazie a @Synchro. Ho finito per utilizzare il server di posta predefinito fornito dal mio provider di hosting e ho notato (con il timestamping) che impiegava circa 2 secondi per email. Così ho chiamato il mio webhost e mi hanno detto che da quando ero su un piano di hosting condiviso, si aspettava quel ritardo (a quanto pare il loro server di posta invia a un proxy dove è in coda prima di inviarlo). Alla fine ho impostato "-O DeliveryMode = b" nel mio php.ini (http://blog.oneiroi.co.uk/linux/php/php-mail-making-it-not-suck-using-sendmail/) che fatto una differenza enorme. Le e-mail vengono ora inviate in modalità background e il mio script ritorna in ** 0.16 secondi! ** – rogerb