Frage zu mail_cc in PHP-Mailer?

4 Antworten

Du bräuchtest eine Eingabe des Nutzers, über die er seine E-Mail-Adresse an dich weitergeben kann. Diese Eingabe müsstest du anschließend auslesen und als zusätzlichen Header an die mail-Funktion überreichen.

Deinem Code zufolge sollte es bereits ein entsprechendes Eingabefeld dafür geben, zumindest hast du eine Variable $name_von_emailfeld, in der der Feldname steht. Prüfe dennoch deinen HTML-Code gegen, dein Formular sollte ein sichtbares Feld wie dieses beinhalten:

<input name="Email" type="email"> 

Wichtig ist, dass das Element innerhalb deines form-Elements liegt und ein name-Attribut mit dem Wert Email hat. Anderes kann evt. variieren (noch andere Attribute o.ä.).

In deinem PHP-Code kannst du den Wert über das $_POST-Array einholen, doch ich würde in dem Zuge noch empfehlen, eine Validation einzubauen. Du weißt nicht, was ein Nutzer dir da herüberschickt. Im schlechtesten Fall gelingt eine Injecton.

Also, erst filtern:

$mail_cc = filter_var(trim($_POST[$name_von_emailfeld]), FILTER_VALIDATE_EMAIL);

if ($mail_cc === false) {
  die 'Invalid email';
}

// continue with other stuff ...

Die CC-Email wird anschließend als zusätzlicher Header an die mail-Funktion gegeben.

Beispiel:

$headers[] = 'From: ' . $email_from;
$headers[] = 'Cc: ' . $mail_cc;

if (!mail($empfaenger, 'Subject ...', 'Message ...', implode('\r\n', $headers))) {
  die 'Mail could not be sent.';
}

Zum Test wäre es nicht verkehrt, für kurze Zeit ein paar Debug-Ausgaben einzubauen. Zumindest der Wert von $mail_cc wäre von Interesse.

print 'CC-Mail: ' . $mail_cc;

Wenn das Skript bei erwartetem Header erfolgreich E-Mails verschickt, nur nicht an den CC-Empfänger, müsstest du dich einmal um die Logs des genutzten Mailservers bemühen. Und vergiss nicht, sämtliche Spamfilterordnervariationen zu durchforsten.

Hi eumeladmin,

das CC ist nur eine Kopie der E-Mail, aber du kannst es nutzen um dem Absender der das Formular ausgefüllt hat eine Kopie zu senden. Das ist eigentlich nicht der Sinn dahinter. Du schreibst am besten via

$mail->addAddress('info@example.com', 'name');

vit vit

Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)

Naja bei cc kommt eben die E-Mail Adresse rein die ebenfalls eine Kopie von der E-Mail bekommt wenn das nicht nötig ist kannst du es glaube ich einfach weglassen

Damit es an den Absender geht natürlich die E-Mail des absenders. logisch oder? Allerdings ist das doch eigentlich unnötig, da die EMail unter gesendet sein müsste. Oder verstehe ich die Frage nicht?


eumeladmin 
Beitragsersteller
 02.09.2025, 19:57

Es sind doch immer andere Absender und das Formular geht im an den Empfänger, also an mich. Der Absender des Formulars soll eine Kopier erhalten, weil das Formular über meine Homepage verschickt wird.

Suiram1  02.09.2025, 20:00
@eumeladmin

Ja. Du hast doch dort die variable name_von_emailfeld welche zumindestaut ihrem Namen die E-Mail des senders (auf der Seite) enthalten sollte. Was ist also so schwer daran?

eumeladmin 
Beitragsersteller
 02.09.2025, 20:04
@Suiram1

Ich habe es mit

$mail_cc = "$_POST[$name_von_emailfeld]";

versucht, das funktioniert aber nicht.

Suiram1  02.09.2025, 20:07
@eumeladmin

Weißt du üverhaupt was du da machst? Und verstehst du überhaupt deine eigene Seite?

Vom Namen her würde ich vermuten daß die variable name_von_emailfeld die E-Mail des Absenders beinhaltet wenn er dieser sie angegeben hat. Also

$mail_cc = $name_von_emailfeld

Oder halt mail_cc ganzvweglassen

eumeladmin 
Beitragsersteller
 02.09.2025, 20:12
@Suiram1

Im Kopf meiner Mail steht bei CC der jeweiligen Absender des Formulars, es kommt bei den Absendern aber keine Mail an.
Bei mir kommt das Formular aber als Mail korrekt an.

Suiram1  02.09.2025, 20:15
@eumeladmin

Schonmal versucht, dann diese zu debuggen? Falls du eine entsprechende Umgebung nutzt kannst du z.B. an der stelle anhalten und cc überprüfen.

Falls nicht kannst du einfach mal testweise probieren $mail_cc in den mail body zu schreiben um zu schauen ob es den richtigen wert hat.

regex9  03.09.2025, 01:49
@Suiram1

Eingabefeldern wird ein Name zugeordnet, der bei Formularversand als Parametername an das PHP-Skript weitergereicht wird. Wenn der Variablenbezeichner richtig benannt ist, wäre meine Erwartungshaltung die selbe, wie die es FS: In der Variable steht der Parametername, nicht dessen Wert. Um den Wert auszulesen, muss der Request-Body ausgelesen werden.