Comment envoyer un message électronique à partir d'un compte IMAP avec PHP?
Je vais avoir un problème lors de l'envoi de mails via PHP/IMAP - et je ne sais pas si c'est parce que:
- Je n'ai pas de comprendre correctement IMAP, ou
- il y a un problème avec mon serveur
Mon application ouvre une connexion IMAP à un compte de messagerie pour lire les messages dans la boîte de réception. Il le fait avec succès. Le problème que j'ai c'est que je veux envoyer des messages à partir de ce compte et de les afficher dans la boîte d'envoi/dossier envoyés.
Autant que je peux dire, le PHP imap_mail() la fonction n'est pas en aucune façon crochet dans le flux IMAP j'ai actuellement ouvert.
Mon code s'exécute sans jeter une erreur. Cependant, l'e-mail n'arrive jamais au destinataire et n'affiche jamais dans mon dossier envoyé.
private function createHeaders() {
return "MIME-Version: 1.0" . "\r\n" .
"Content-type: text/html; charset=iso-8859-1" . "\r\n" .
"From: " . $this->accountEmail . "\r\n";
}
private function notifyAdminForCompleteSet($urlToCompleteSet) {
$message = "
<p>
In order to process the latest records, you must visit
<a href='$urlToCompleteSet'>the website</a> and manually export the set.
</p>
";
try {
imap_mail(
$this->adminEmail,
"Alert: Manual Export of Records Required",
wordwrap($message, 70),
$this->createHeaders()
);
echo(" ---> Admin notified via email!\n");
}
catch (Exception $e) {
throw new Exception("Error in notifyAdminForCompleteSet()");
}
}
Je suppose que j'ai besoin de copier le message dans le compte IMAP à la main... ou est-il une autre solution à ce problème?
Aussi, importe-t-il si le domaine dans l'adresse "de" est différent de celui du serveur sur whicn ce script est en cours d'exécution? Je ne peux pas expliquer pourquoi le message n'est jamais envoyé.
OriginalL'auteur arthurakay | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
imap_mail
est juste un wrapper pour le binaire sendmail comme lemail
fonction. Vous êtes mieux d'envoi de mail via SMTP moyens (jetez un oeil à PHPMailer ou Swift Mailer) et ensuite votre code de placer le message dans le dossier Envoyé, avec imap_append.Pas sûr de ce qui est prise de l'envoyer à un échec, mais vous devriez vérifier la valeur de retour boolean de
imap_send
dans votre code. Au-delà, vous aurez envie d'examiner votre serveur SMTP journaux pour toute indices.OriginalL'auteur webbiedave
Ça fait un moment, mais pour les enregistrements pour d'autres, vous pouvez obtenir le IMAP erorr via imap_last_error(). Cela vous donnera une erreur de chaîne de ce que le dernier numéro était.
OriginalL'auteur namezero
Vérifier la valeur de retour de votre appel à
imap_mail
.imap_mail
ne pas jeter na exception en cas d'erreur, elle renvoiefalse
.Aussi, vous devrez copier le message de l'envoyé de dossier vous-même,
imap_mail
ne pas le faire pour vous.OriginalL'auteur Oswald