Wie versenden Sie E-Mails von IMAP-Konto mit PHP?
Ich habe ein Problem senden von E-Mails über die PHP/IMAP - und ich weiß nicht, ob es ist, weil:
- Ich nicht richtig verstehen, IMAP -, oder
- es ein Problem mit meinem server
Meine Anwendung öffnet eine IMAP-Verbindung zu einem E-Mail-Konto, das Lesen von Nachrichten im Posteingang. Er tut dies erfolgreich. Das problem, das ich habe, ist dass ich will zum senden von Nachrichten von diesem Konto, und Sie haben die Anzeige im Postausgang/gesendet Ordner.
Soweit ich das beurteilen kann, der PHP imap_mail () - Funktion nicht in irgendeiner Weise Haken in den IMAP stream ich derzeit offen habe.
Mein code ausgeführt, ohne dass ein Fehler ausgegeben wird. Allerdings, die E-Mail kommt nicht an den Empfänger und zeigt nie in meinem gesendet-Ordner.
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()");
}
}
Ich vermute, ich muss eine Kopie der Nachricht in den IMAP-Konto manuell... oder gibt es eine andere Lösung für dieses problem?
Außerdem spielt es eine Rolle, wenn die Domäne, in der "von" - Adresse ist anders als die des Servers, auf whicn dieses Skript ausgeführt wird? Ich kann nicht erklären, warum die Nachricht nie gesendet.
InformationsquelleAutor arthurakay | 2010-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
imap_mail
ist nur ein wrapper um das sendmail-binary wie diemail
Funktion. Du bist besser, das senden der E-mail durch den normalen SMTP bedeutet, dass (nehmen Sie einen Blick auf PHPMailer oder Swift Mailer) und dann den code platzieren, der die Nachricht in den Ordner "Gesendet" mit imap_append.Nicht sicher, was macht das senden fehl, aber Sie sollten überprüfen, die den booleschen Rückgabewert von
imap_send
im code. Darüber hinaus werden Sie wollen untersuchen, Ihre SMTP-server-logs für alle Hinweise.InformationsquelleAutor webbiedave
Es ist schon eine Weile her, aber für die Datensätze, für andere können Sie die IMAP-erorr also über imap_last_error(). Dies wird Ihnen einen Fehler-string, was die Letzte Ausgabe war.
InformationsquelleAutor namezero
Überprüfen Sie den Rückgabewert von Ihrem Anruf
imap_mail
.imap_mail
nicht werfen na Ausnahme bei einem Fehler, es gibtfalse
.Auch, Sie müssen zum kopieren der Nachricht, die gesendet-Ordner selbst
imap_mail
nicht für Sie tun.InformationsquelleAutor Oswald