2017-03-25 8 views
0

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

+0

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

+0

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

+0

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

Antwort

0

Dies ist der gesamte Kopf (ich einige der Inhalte gelöscht gerade diese Notiz ein wenig kurz zu halten), die ich meine persönliche E-Mail (b ... @ .... com), die von mein Skript "forward email", das everybody.org als Ursprungsadresse verwendet. Sie können den Content_Type, den ich PHPMailer hinzugefügt habe, über $ mail-> addCustomHeader ("Content-Type", $ content_type. "Boundary =". $ Boundary); (was die mehrteilige .. Zeile ist) und den einen PHPMailer selbst hinzufügen (Text/Ebene ...). Die E-Mail wurde gut empfangen und richtig angezeigt, mit Ausnahme der Spam-Betreffzeile:

From - Sat Mar 25 12:51:13 2017 
STUFF                   
Return-Path: <[email protected]> 
Received: from dnvrco-pub-iedge-vip.email.rr.com ([107.14.70.244]) 
      by dnvrco-fep06.email.rr.com 
      (InterMail vM.8.04.03.24 201-2389-100-172-20151028) with ESMTP 
      id <[email protected]dge-vip.email.rr.com> 
      for <[email protected]>; Sat, 25 Mar 2017 16:51:12 +0000 
Return-Path: <[email protected]> 
Received: from [173.205.126.142] ... 
Received: from ecbiz194.inmotionhosting.com ..... 
Date: Sat, 25 Mar 2017 12:51:01 -0400 
To: [email protected] 
From: [email protected] 
Message-ID: ... 
Content-Type: multipart/alternative; boundary="------------3D4FAACFC2C069EFCDAE6DC6" 
MIME-Version: 1.0 
Content-Type: text/plain; charset=iso-8859-1 
Content-Transfer-Encoding: 8bit 
X-OutGoing-Spam-Status: No, score=-1.0 
X-AntiAbuse:... 
X-Get-Message-Sender-Via: ecbiz194.inmotionhosting.com: authenticated_id: [email protected] 
X-Authenticated-Sender: ecbiz194.inmotionhosting.com: [email protected] 
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Authority-Analysis: v=2.1 cv=Od5ldUnY c=1 sm=1 tr=0 p=tHMjoff1TzQA:10 a=BPsZ5WN3F+ptBTNoNLYonA==:117 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=9+rZDBEiDlHhcck0kWbJtElFXBc=:19 a=6Iz7jQTuP9IA:10 a=FqPqrT7mAAAA:8 a=wuaQj91YKeLcW_I7NZUA:9 a=FtJ_xtNkBE-qfxEx:21 a=wPNLvfGTeEIA:10 a=yozH4VhRfl4A:10 a=M3AHoUkWFckA:10 a=fZGknuNN1LOydenUCIb6:22 
X-Cloudmark-Score: 100 
X-RR-Connecting-IP: 107.14.64.106:25 
Subject: SPAM: Lots of work today 
X-Brightmail-Tracker: AAAAARZYL6Q= 
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrDqMTGxcIABLocC65FGFx/aGGx78B3FgdGj+Mv3jMFMEZx+OWXKAQXJOYmcGT07L7AVsBQAaIaGBlWMSqUlBYbF2cUJxYVF6RWGJjrpacW6xVX5ibmlaQm6yXn525ihJq+g3H7RZlTjJJS4ry3512LEBIoBpqYUQpUVxRfVJqTWvyKUZyDUUmYNxcky5OZV1KcmQ6TkeBgUhLhNdl4JUKIt7gkESEl1cDY81CZ25t3k/zUd21bd90/typmy6NtErw+Xs/YlXtk7atb4j4+/t6yoHDeJ3uN/kP1P7LrIiY5fFipZfynvvPJzbNfz943kPtyweqk3Tn/vpOfGIosVIpPxHht7j+Rl24XEH2vJa1o/q3fJRonvyxi6D4x60xlW8M/o0oLBlvjw4672ZjKQg2UWIozEg21mIuKEwGcu2V6TwEAAA== 

This is a multi-part message in MIME format. 
--------------3D4FAACFC2C069EFCDAE6DC6 
Content-Type: text/plain; charset=utf-8; format=flowed 
Content-Transfer-Encoding: 7bit 

This is the text message 

--------------3D4FAACFC2C069EFCDAE6DC6 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: 8bit 

<html> 
    <head> 

    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    </head> 
    <body bgcolor="#FFFFFF" text="#000000"> 
    <p>This is the text message <br> 
    </p> 
    </body> 
</html> 

--------------3D4FAACFC2C069EFCDAE6DC6-- 
0

Ich habe jetzt die Lösung.Anstatt die Zeile $mail->addCustomHeader("Content-Type", $content_type . " boundary=" . $boundary); zu verwenden, habe ich die Variable $ boundary an die Variable $ content_type angehängt und $mail->ContentType = $content_type; verwendet. Mein Mail Forward-Skript funktioniert jetzt perfekt mit dem Spam-Label, das kein Problem mehr ist. Der Header, der an die Endempfänger gesendet wird, enthält keine doppelten Content-Typen mehr im MIME-Teil

Verwandte Themen