Frage zu mail_cc in PHP-Mailer?
Guten Tag,
was muss ich bei $mail_cc = ""; eintragen damit der Absender des Formulars eine Kopie seines Formulars per Mail bekommt
?
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
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?
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?
Ich habe es mit
$mail_cc = "$_POST[$name_von_emailfeld]";
versucht, das funktioniert aber nicht.
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
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.
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.
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.
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.