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: 715
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: 4012
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: 715
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: 4012
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: 715
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: 4012
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
eumelchen
Mitglied
Beiträge: 715
Registriert: 09.02.2008 08:28
Wohnort: Gottin

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von eumelchen »

Ja, habe ich gelesen und das Skript auch ausprobiert!

Wie schon geschrieben, außer Mail CC hat alles funktioniert. Leider.
Benutzeravatar
chris1278
Mitglied
Beiträge: 4012
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von chris1278 »

Ok. Also wenn du das Skript hier:

viewtopic.php?p=1432413#p143241

probiert hast und bei deiner cc Adresse keine Mail ankommt, hast du definitiv ein anderes Problem

Also ich bin selber beim Hoster all-inkl.com und da funktioniert das Skript so wie ich es dir gepostet habe.


Pass auf, wir machen mal mit dem skript von mir ein paar tests.

Du übermittelst ja irgendwoher die adresen in das skript. schreibe zum test mal die adressen fix in das skript.

Also hier diese werte:

Code: Alles auswählen

$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
Und lasse das skript dann mal durchlaufen.

Weil wenn mein skript bei dir nicht funktioniert mit der cc adresse kann das eigentlich nur sein das bei der übermittlung der cc adresse in dein skript was schief läuft.

Du hattestd as Ursprünglich so:

Code: Alles auswählen

if (!empty($mail_cc)) {
   $header .= "\n";
   $header .= "Cc: $mail_cc";
}

Das habe ich ja kommplet entfernt und dies durch das hier ersetzt:

Code: Alles auswählen

//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';
	}
}
Und dort steht der cc ja an der stelle drin wo bei dem anderen normalen der normale empfänger steht.

Und das hier wird ja auch nur ausgefüllt wenn die variable $mail_cc nicht leer ist. ALso liegt meine Vermutung nahe das dort evtl. anzusetzen ist.


Füge mal testweise vor:

Code: Alles auswählen

//Hier prüfen wir ob die Variable $mail_cc einen eintrag erhält. Wenn nicht wird cc ignoriert
Das hier ein:

Code: Alles auswählen

var_dump($mail_cc);
Und lass dein skript ansonsten unverändert. Lass das durchlaufen und mach von der fehlermeldung die im kopfbereich erscheint mal ein screenshot.

Wenn deine cc mail im forumalr korrekt vorhanden ist sollte in der meldung dann auch diese stehen eigentlich.
Benutzeravatar
IMC
Mitglied
Beiträge: 793
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: mail_cc bei PHP-Mailer funktioniert nicht

Beitrag von IMC »

eumelchen hat geschrieben: 05.09.2025 09:26 Ich habe keine Ahnung was ich ändern muss.
Wenn ich die Info von All-Ink richtig interpretiere ist dort die Einbindung von CC in den E-Mailheader aus Sicherheitsgründen nicht möglich. Ein Vorschlag von ihnen ist, es so zu machen wie von Chris schon vorher vorgeschlagen.

Mein Vorschlag wäre den PHPMailer oder andere alternativen zu nutzen. Die Nutzung ist deutlich einfacher als es dir im Moment vorkommt. Im Netz gibt es viele Beispiele. Auch der von All-Ink erwähnte Header-Injection-Schutz ist dort gegeben. Spätestens wenn du deinen E-Mails ein Logo oder Anhänge hinzufügen möchtest kommst du nicht um den PHPMailer oder ähnlichen herum. Einen E-Mailheader selbst zu erzeugen ist eine Kunst für sich.
Gruß, Thorsten

Meine Extensions
Antworten

Zurück zu „Coding & Technik“