Mail mit php – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Mail mit php Mon, 07 Mar 22 19:53:33 Z https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797095#m1797095 https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797095#m1797095 <p>Hi!</p> <p>Ich habe mich schon <em>ewig</em> nicht mehr mit der PHP eigenen Mailfunktion beschäftigt und mich heute wieder etwas damit herumgespielt. Dabei stehe ich vor einem Problem, das ich früher nie hatte. Hier der Code:</p> <pre><code class="block">$S_fromName = 'Jörg Lüttermann'; $S_fromMail = 'irgendwas@example.org'; $S_toName = 'Maria Böller'; $S_toMail = 'mail@example.org'; $S_subject = 'Hier können Sie die neue Mail Nummer 1 lesen'; $S_body = "Hallo!\n\nIch hoffe, es geht Dir gut!\nWöchentliche Bäder sind gesund.\n\nLiebe Grüße\n\nHampelmann"; $S_type = 'text/plain'; $S_from = mb_encode_mimeheader($S_fromName, 'UTF-8', 'Q').' <'.$S_fromMail.'>'; $S_to = mb_encode_mimeheader($S_toName, 'UTF-8', 'Q').' <'.$S_toMail.'>'; $S_subject = mb_encode_mimeheader($S_subject, 'UTF-8', 'Q'); $S_header = ""; $S_header .= "MIME-Version: 1.0\n"; $S_header .= "Content-type: ".$S_type."; charset=UTF-8\n"; $S_header .= "Content-Transfer-Encoding: 8bit\n"; $S_header .= "From: $S_from\n"; $S_header .= "Reply-To: $S_fromMail\n"; $S_header .= "Return-Path: $S_fromMail"; $test = mail($S_to, $S_subject, $S_body, $S_header, $S_fromMail); var_dump($test); </code></pre> <p>Das funktioniert wunderbar. Die Mail wird gesendet, kommt auch, was die Sonderzeichen betrifft, völlig korrekt an und $test ist TRUE. Soweit, sogut.</p> <p>Wenn ich aber jetzt die mail-Zeile mit dem -f Flag erweitere, ändert sich das leider:</p> <pre><code class="block language-php"><span class="token variable">$test</span> <span class="token operator">=</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$S_to</span><span class="token punctuation">,</span> <span class="token variable">$S_subject</span><span class="token punctuation">,</span> <span class="token variable">$S_body</span><span class="token punctuation">,</span> <span class="token variable">$S_header</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"-f<span class="token interpolation"><span class="token variable">$S_fromMail</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Da ist $test dann FALSE und die Mail wird nicht abgesendet. Ich verstehe das deshalb nicht, weil das bei meinen Versuchen vor mehreren Monaten nie ein Problem gewesen ist.</p> <p>FRAGE: Kann es sein, dass mein Provider da irgendwas in den Einstellungen geändert hat in der Zwischenzeit und das -f deshalb Probleme bereitet jetzt? Oder woran kann es liegen, dass Mails wegen dem -f plötzlich nicht mehr gesendet werden? (Ich habe schon öfters gelesen, dass die Verwendung des -f deshalb gut ist, weil dann Mails weniger oft als Spam klassifiziert werden.)</p> <p>Danke im Voraus!</p> <p>Verzweifelnder</p> Mail mit php Mon, 07 Mar 22 21:08:45 Z https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797098#m1797098 https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797098#m1797098 <p>n'Abend,</p> <blockquote> <p>Wenn ich aber jetzt die mail-Zeile mit dem -f Flag erweitere, ändert sich das leider:</p> <pre><code class="block language-php"><span class="token variable">$test</span> <span class="token operator">=</span> <span class="token function">mail</span><span class="token punctuation">(</span><span class="token variable">$S_to</span><span class="token punctuation">,</span> <span class="token variable">$S_subject</span><span class="token punctuation">,</span> <span class="token variable">$S_body</span><span class="token punctuation">,</span> <span class="token variable">$S_header</span><span class="token punctuation">,</span> <span class="token string double-quoted-string">"-f<span class="token interpolation"><span class="token variable">$S_fromMail</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Da ist $test dann FALSE und die Mail wird nicht abgesendet. Ich verstehe das deshalb nicht, weil das bei meinen Versuchen vor mehreren Monaten nie ein Problem gewesen ist.</p> </blockquote> <p>leider ist "hat bis vor kurzem noch funktioniert" noch keine Gewähr dafür, dass es auch bis in alle Zukunft funktioniert.</p> <blockquote> <p>FRAGE: Kann es sein, dass mein Provider da irgendwas in den Einstellungen geändert hat in der Zwischenzeit und das -f deshalb Probleme bereitet jetzt?</p> </blockquote> <p>Ja, das kann gut sein. Inzwischen muss man bei vielen Hostern in der Web-Konfiguration einstellen, welche Mailadresse als Absender verwendet wird. Erzwingt man mit dem Parameter -f eine andere Absenderadresse, geht's schief.</p> <p>Ich kann nicht versprechen, dass das in deinem Fall die richtige Erklärung ist, aber es wäre zumindest eine wahrscheinliche Erklärung.</p> <p>Einen schönen Tag noch<br>  Martin</p> <div class="signature">-- <br> Мир для України. </div> Mail mit php Mon, 07 Mar 22 21:21:03 Z https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797099#m1797099 https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797099#m1797099 <p>Moin,</p> <blockquote> <p>Das funktioniert wunderbar.</p> </blockquote> <p>Ich würde mich da nicht darauf verlassen dass das so wirklich überall funktioniert: ich würde dir dringend empfehlen eine Mailerklasse (z.B. <a href="https://github.com/PHPMailer/PHPMailer#a-simple-example" rel="noopener noreferrer">PHPMailer</a>) zu verwenden die das zusammenbauen der Mail für dich übernimmt und die Mails auch direkt über ein E-Mailkonto verschicken kann womit die Abhängigkeit von sendmail o.ä. wegfällt.</p> <blockquote> <p>Wenn ich aber jetzt die mail-Zeile mit dem -f Flag erweitere, ändert sich das leider:</p> </blockquote> <p>Gehört die Adresse in $S_fromMail zu dem Paket auf dem das Script läuft? Die Adresse die dort angegeben wird muss eine dem System bekannte Adresse sein welche befugt sein muss Mails über den Server zu verschicken.</p> <p>Generell solltest du auch beim From-Header keine E-Mailadressen von Seitenbesuchern o.ä. angeben, da diese in der Regel nicht berechtigt sind über den Server Mails zu verschicken, riskierst du damit dass die Mails in Spamfiltern hängen bleiben – verwende den Reply-To-Header.</p> <p>Gruß<br> Tobias</p> Mail mit php Mon, 07 Mar 22 21:36:39 Z https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797101#m1797101 https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797101#m1797101 <p>Hi Martin!</p> <blockquote> <p>leider ist "hat bis vor kurzem noch funktioniert" noch keine Gewähr dafür, dass es auch bis in alle Zukunft funktioniert.</p> </blockquote> <p>Das ist/war mir schon klar! :-)</p> <blockquote> <p>Inzwischen muss man bei vielen Hostern in der Web-Konfiguration einstellen, welche Mailadresse als Absender verwendet wird. Erzwingt man mit dem Parameter -f eine andere Absenderadresse, geht's schief.</p> </blockquote> <p>Bei meinem (<a href="https://www.df.eu" rel="nofollow noopener noreferrer">Domainfactory</a>) sehe ich das nicht.</p> <blockquote> <p>Ich kann nicht versprechen, dass das in deinem Fall die richtige Erklärung ist, aber es wäre zumindest eine wahrscheinliche Erklärung.</p> </blockquote> <p>OK, verstehe!</p> <p>Liebe Grüße & vielen Dank für Deine Antwort!</p> Mail mit php Mon, 07 Mar 22 21:32:48 Z https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797100#m1797100 https://forum.selfhtml.org/self/2022/mar/07/mail-mit-php/1797100#m1797100 <p>Hi Tobias!</p> <blockquote> <p>ich würde dir dringend empfehlen eine Mailerklasse (z.B. PHPMailer) zu verwenden</p> </blockquote> <p>Das ist mir eh bewusst, ich würde für komplexere Aufgaben auch auf PHPMailer zurückgreifen. Es war mir trotzdem ein Bedürfnis, die PHP Funktion unter Kontrolle zu haben und verwenden zu können bei Bedarf.</p> <blockquote> <p>Gehört die Adresse in $S_fromMail zu dem Paket auf dem das Script läuft?</p> </blockquote> <p>Ja, die Mailadresse gibt es wirklich und gehört zur Domain, unter der das Skript arbeitet.</p> <blockquote> <p>Generell solltest du auch beim From-Header keine E-Mailadressen von Seitenbesuchern o.ä. angeben</p> </blockquote> <p>Das ist/war nicht der Fall.</p> <blockquote> <p>verwende den Reply-To-Header</p> </blockquote> <p>Das tue ich ja eh. (Siehe Skript im OP).</p> <p>Liebe Grüße & Danke für Deine Antwort!</p>