mail_cc bei PHP-Mailer funktioniert nicht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
eumelchen
Mitglied
Beiträge: 712
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von eumelchen »

Danke,
aber es tut mir leid, würde ich gerne machen, wenn ich wüsste, wo das -f im Code hinkommt.
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 12132
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von Crizzo »

Wie im Beispiel#4.
Benutzeravatar
chris1278
Mitglied
Beiträge: 4009
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von chris1278 »

Hab mir mal erlaubt, dein Problem zu lösen.

Hier mal das überarbeitete Formular:

Code: Alles auswählen

<?php
//send_email.php
$email_from = "absender@domain.de";   //Absender falls keiner angegeben wurde
$sendermail_antwort = true;      //E-Mail Adresse des Besuchers als Absender. false= Nein ; true = Ja
$name_von_emailfeld = "Email";   //Feld in der die Absenderadresse steht

$empfaenger = "hier die erste empfänger email rein"; //Empfänger-Adresse
$mail_cc = "hier die mail die als cc dienen soll"; //CC-Adresse, diese E-Mail-Adresse bekommt einer weitere Kopie
$betreff = "Neue Kontaktanfrage"; //Betreff der Email

/*
* Die beiden URls erschliesen sich mir nicht hab dir am ende ne fehlerausgabe eingebunden
*/
//$url_ok = "http://www.domain.de/ok.php"; //Zielseite, wenn E-Mail erfolgreich versendet wurde
//$url_fehler = "http://www.domain.de/fehler.php"; //Zielseite, wenn E-Mail nicht gesendet werden konnte
//Diese Felder werden nicht in der Mail stehen

$ignore_fields = ['Button'];

//Datum, wann die Mail erstellt wurde
$name_tag = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
$num_tag = date("w");
$tag = $name_tag[$num_tag];
$jahr = date("Y");
$n = date("d");
$monat = date("m");
$time = date("H:i");

//Erste Zeile unserer Email
$msg = ":: Gesendet am $tag, den $n.$monat.$jahr - $time Uhr ::\n:: Die Zahlungs-Infos kommen innerhalb von 24 Stunden per PN aus dem Chiforum! ::\n\n";

//Hier werden alle Eingabefelder abgefragt
foreach($_POST as $name => $value)
{
   if (in_array($name, $ignore_fields))
   {
        continue; //Ignore Felder wird nicht in die Mail eingefügt
   }
   $msg .= "::: $name :::\n$value\n\n";
}

//E-Mail Adresse des Besuchers als Absender
if ($sendermail_antwort and isset($_POST[$name_von_emailfeld]) and filter_var($_POST[$name_von_emailfeld], FILTER_VALIDATE_EMAIL))
{
   $email_from = $_POST[$name_von_emailfeld];
}

$header .="From: $email_from";

//Email als UTF-8 senden
$header .= "\nContent-type: text/plain; charset=utf-8";

//Hier erzeuge ich ein leeres Array was wir mit eventuellen fehlermeldungen füllen können
$error = [];


//Für den Normalen versand ohne mail haben wir nachfolgende abfrage allerdinsg prüfen wir vorher ob die Empfänger Mail korrekt ist also ob diese Valide ist
if (filter_var($empfaenger, FILTER_VALIDATE_EMAIL))
{
	//Die pürfung der empfänger mail ist positiv dann wird nachfolgend die mail an besagte email gesendet.
	mail($empfaenger, $betreff, $msg, $header);
}
else
{
	//Ist die mail Adresse nicht korrekt eingeben also entspricht sie nicht dem email format z.B. das @ wurde vergessen oder der punkt was auch immer
	//wird eine Fehlermeldung in das vorgereitete error array geschrieben.
	$error[] = 'empfängermail ist keine gültige Email adresse';
}

//Hier prüfen wir ob die Variable $mail_cc einen eintrag erhält. Wenn nicht wird cc ignoriert
if (!empty($mail_cc))
{
	//Auch hier prüfen wir wieder ob die Mail korrekt ist
	if (filter_var($mail_cc, FILTER_VALIDATE_EMAIL))
	{
		//Ist die Mail korrekt wird diese gesendet
		mail($mail_cc, $betreff, $msg, $header);
	}
	else
	{
		//Ist die cc mail nicht korrekt wird eine fehlermeldung in das error Array hinzugefügt.
		$error[] = 'Cc Email ist keine Gültige Email';
	}
}

//Hier prüfen wir das error array ob das leer ist oder nicht
if(empty($error))
{
	//Hier ist das Error array leer und man kann hier eine erfolgsmeldung ausgeben oder was auch immer
	echo 'ok';
	//header("Location: ".$url_ok); //Mail wurde gesendet
	//exit();
}
else if (!empty($error))
{
	//Hier haben wir den fall das eine oder mehrere Meldungen in dem Error Array enthalten sind. Diese werden hier ausgegeben.
	echo implode('<br>', $error);
	//header("Location: ".$url_fehler); //Fehler beim Senden
	//exit();
}


Hab dir das etwas umgeschrieben. Wenn du jetzt oben die empfänger und cc adresse einfügst dann sollte das skript auch schicken. Am ende hab ich noch ne ausgabe für evtl. fehlermeldung gemacht.

SChaus dir an wenn fragen hast dann stell ruhig

Im übrigen hab ich das bei al inkl getestet und da funktioniert das so.
eumelchen
Mitglied
Beiträge: 712
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von eumelchen »

Hallo Thorsten,

danke für die ganze Arbeit und ich habe den Code getestet, funktioniert bei mir (All-Inkl) leider nicht.
Es wird keine CC Mail geschickt. Ansonsten funktioniert alles wie gehabt.

Gestern habe ich auch noch getestet, ich habe nur die Datei mit dem PHP-Code bei STRATO hoch geladen und im Formular bei All-Inkl die Datei bei STRATO verlinkt.
Dann funktioniert alles, auch die CC Mail!

Ich habe dann All-Inkl angeschrieben und von dem Fehler berichtet.
Leider ist es so, dass ich die Antwort nicht verstehe und nicht weiß, was ich ändern soll.

Hier die Antwort von All-Inkl:
(All-Inkl hatte ich auch den kompletten PHP-Code geschickt.)
Auffällig ist:

From ≠ ist es die eigene Domain welche auf den Server zeigt? Ansonsten Probleme mit SPF/DMARC

mail() ohne 5. Parameter sollte der Envelope-From per -f auf eine reale Absenderadresse ihrer Domain gesetzt werden.

Header-Zeilen mit \n statt \r\n
RFC-konform sind \r\n. Einige MTAs sind pingelig.

Cc: $_POST['Email'] ohne Sanitizing kann geblockt werden (Header-Injection-Schutz).
Außerdem triggert es wieder DMARC/SPF-Probleme, weil Sie im gleichen Zug an den Nutzer „weiterleiten“.
Besser: Reply-To statt From
Die Besucher-Adresse gehört in Reply-To, nicht in From.


Alternativ und von uns absolut empfohlen SMTP mit Auth über ihr existierendes Postfach
Besucher-CC als separate Mail (eigener Versand), nicht per Header-CC.
Ich habe keine Ahnung was ich ändern muss.
Gruß Rolf (eumelchen)
Benutzeravatar
chris1278
Mitglied
Beiträge: 4009
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von chris1278 »

Schau dir mal den code an den ich dir geschickt habe. Der Funktioniert auch bei all-inkl.com.
eumelchen
Mitglied
Beiträge: 712
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von eumelchen »

Hallo Thorsten,

es tut mir wirklich sehr leid, aber der Code funktioniert bei mir (und All-Inkl) nicht wie gewünscht.
Es wird nach wie vor keine Mail an CC geschickt.
Ich habe es versucht mit

Code: Alles auswählen

$mail_cc = "$_POST[$name_von_emailfeld]"; 
und auch mit

Code: Alles auswählen

$mail_cc = "meinemail@meinehomepage.de"; //Natürlich mit einer funktionierenden Mailadresse 
Beide Versionen haben nicht funktioniert!

Mein Test mit PHP-Script bei STRATO und den Rest bei All-Inkl funktioniert weiterhin einwandfrei.
Lieber wäre mir aber eine Lösung, bei der alles bei All-Inkl ist. So funktioniert es aber erst einmal.

Vielleicht hat ja noch jemand eine Idee.

Gruß Rolf (eumelchen)
Benutzeravatar
chris1278
Mitglied
Beiträge: 4009
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von chris1278 »

Sag ma eumelchen hast du überhaupt gelesen das ich dir einfunktionsfähiges skript geschrieben habe das funktioniert. Auch mit all inkl.com
Antworten

Zurück zu „Coding & Technik“