Ich habe die Notwendigkeit, dass jeder in meiner Organisation E-Mails an alle anderen in der Gruppe sendet.PHPMailer - E-Mail an Gruppe weiterleiten
Da es Hunderte von Mitgliedern gibt und die Mitgliedschaft häufig geändert wird, ist es nicht praktikabel, die herkömmliche CPanel-Weiterleitungsmethode zu verwenden. Also dachte ich, ich würde die E-Mail an ein PHP-Skript übergeben, alle E-Mail-Adressen der Mitglieder aus der Datenbank holen (um sicherzustellen, dass der ursprüngliche Absender ebenfalls in der Datenbank war) und die E-Mails an alle Mitglieder mit PHPMailer senden.
Ich analysierte den Header im PHP-Skript, um die Von, Betreff (Hinzufügen dieser natürlich zu PHPMailer), Content-Type und Grenze. Dann sammelte ich die tatsächliche E-Mail-Nachricht in einer Variable $ Nachricht einschließlich den Linien, die (in diesem Fall) sagen
“This is a multi-part message in MIME format.
--------------3D4FAACFC2C069EFCDAE6DC6, etc. (This is of course in text format.)
Kurz vor dem PHPMailer Befehl senden, ich eingeschlossen:
$mail -> IsHTML(false);
// (I also tried not including this command at all – no change)
$mail->Body =$message;
$mail->addCustomHeader("Content-Type", $content_type . " boundary=" . $boundary);
$content_type and $boundary are the variables I parsed from the original header
Da dies immer noch In der Entwicklung habe ich die E-Mail nur an meine Adresse gesendet. Es wurde korrekt empfangen und angezeigt (sowohl das normale als auch das html), wurde aber als Spam markiert - der empfangene Header hatte den Betreff bereits als Spam markiert, also nehme ich an, PHPMailer hat es getan.
ich auf dem empfangenen Header-bemerkt, dass meine benutzerdefinierten Header richtig erschienen:
Content-Type: multipart/alternative; boundary="------------3D4FAACFC2C069EFCDAE6DC6"
Der ebenfalls empfangen Kopf andere Content-Type hatte: text/plain; charset = iso-8859-1 nach dem oben genannten PHPMailer hinzugefügt. Vielleicht haben die beiden Content-Typen das Spam-Tag ausgelöst. Ich habe dann versucht, $ mail-> header_remove ('Content-Type') hinzuzufügen; nach dem Body-Aufruf und vor addCustomHeader, aber der zusätzliche Content-Type: text/plain; charset = iso-8859-1 befand sich immer noch im empfangenen Header und war immer noch als Spam markiert.
Ich verwende PHPMailer Version 5.2.22 und mit
$mail->IsSMTP();
, $mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
Ich kann nicht mehr weiter erfolglos für immer experimentieren, wie ich fürchte, viele Spam-E-Mails mich in Schwierigkeiten bringen wird, so hoffe ich, jemand kann sagen, was ich falsch mache, oder selbst wenn meine Gesamtstrategie fehlerhaft ist. Ich wünschte auch, es gäbe eine Möglichkeit, den Header zu erhalten, den PHPMailer verwenden wird, bevor er die Mail tatsächlich versendet.
Hinweis: meine Organisation ist eine gemeinnützige Gruppe mit wenig Geld, also können wir bezahlte SMTPs nicht leisten. Ich habe versucht, die kostenlosen Versionen von einigen auf dem Markt (nicht für das oben genannte Projekt) zu verwenden, aber wenn Sie eine geteilte IP mit vielen anderen verwenden, die den kostenlosen Dienst nutzen, erhalten Sie oft zurückgeschickte E-Mails, weil andere Ihre IP mit Spam getaggt haben
Dank
Sie müssen die Nachricht vollständig analysieren, die Pantomime-Teile extrahieren und eine neue Nachricht rekonstruieren. PHPMailer verhält sich korrekt, weil Sie sagen, dass die gesamte Quellnachricht der Text ist; Sie müssen stattdessen den eigentlichen Körper extrahieren. – Synchro
Sorry, vielleicht war mir nicht klar. Ich habe tatsächlich getan, was du vorgeschlagen hast. Meine Variable $ message enthält nur den Nachrichtentext, bei dem die Pantomime-Teile verschwunden sind. – Brian
Sie sollten den Inhaltstyp-Header nicht berühren. PHPMailer generiert sie für Sie, und das Hinzufügen von Extras führt nur zu Verwirrung. Ich verstehe nicht, was Sie damit meinen, das Thema als Spam zu markieren - PHPMailer berührt es nicht. Es ist wirklich ziemlich unklar, was du versuchst zu tun. – Synchro