Mail mit Variable im Link

05/27/2020 03:45 Legithos#1
Hallo liebe Devs,

ich bin am verzweifeln. Ich würde gerne einen Link in eine von mir via mail() versandte E-Mail einbauen, um sich von dem Newsletter abzumelden. Dementsprechend muss der Link zur Abmeldung variable sein, da natürlich jeder User sich selbst und keinen anderen abmelden soll.

Während wir in der while-Schleife sind (damit ich von jedem dem Newsletter angemeldetem User die E-Mail bekomme), lege ich diese auf meine variabel $mail_reciever

Code:
$mail_reciever = htmlspecialchars($newsletter["user_email"]);
Anschließend versuche ich einen Link in meinen E-Mail-Text einzubauen, welcher sich natürlich von User zu User in der while-Schleife ändern soll.

Code:
$mail_text = "<a href='www.musterdomain.de/abmelden.php?user=" . $mail_reciever . "'>Abmelden</a>"
Wenn ich das jedoch als mail nun versende und in der E-Mail den Link kopiere, bekomm ich folgendes.

Code:
'www.musterdomain.de/abmelden.php?user=" . $mail_reciever . "'
Der Witz an der Sache ist, dass wenn ich die Variable nicht als Link (also ohne den html-tag) verschicke, siehe

HTML Code:
$mail_text = "www.musterdomain.de/abmelden.php?user=" . $mail_reciever
funktioniert alles einwandfrei.

Vielleicht kann mir ja jemand helfen.

Danke schonmal und Grüße,

Legithos
05/27/2020 21:35 Mad0ck#2
Quote:
Originally Posted by Legithos View Post
Hallo liebe Devs,

Legithos
Also hab das grad getestet.
PHP Code:
$mail_reciever '[Only registered and activated users can see links. Click Here To Register...]';
$tag "<a href='www.musterdomain.de/abmelden.php?user=" $mail_reciever "'>Abmelden</a>";
echo(
$tag); 
Erzeugt ne verlinkung auf die url
[Only registered and activated users can see links. Click Here To Register...]


[Only registered and activated users can see links. Click Here To Register...]

Hier aus dem Network tab.
[Only registered and activated users can see links. Click Here To Register...]


Hat also iwas mit der Funktion / lib vom Email versenden zutun i guess
05/28/2020 01:18 Legithos#3
Quote:
Originally Posted by Mad0ck View Post
Hat also iwas mit der Funktion / lib vom Email versenden zutun i guess
Das wird der springende Punkt sein. Ich finde nur leider nichts was mir weiterhilft.
05/28/2020 07:50 Mikesch01#4
Vermutlich irgendwo ein Fehler innerhalb des anderen Codes. Zeig uns doch mal einen größeren Ausschnitt deines Codes.
05/28/2020 11:35 Legithos#5
Ich geh stark davon aus, dass es mit ' und " und deren Verschachtelung zusammenhängt.

Ich bin inzwischen soweit, dass ich den kompletten Link in der E-Mail richtig darstellen kann. Problem ist, dass es kein eigentlicher Link ist.

Code:
$mail_topic = "Testtopic";
$mail_receiver = "[Only registered and activated users can see links. Click Here To Register...]";
$mail_sent = "[Only registered and activated users can see links. Click Here To Register...]"
$mail_header  = "MIME-Version: 1.0\n";
$mail_header .= "Content-type: text/html; charset=utf-8\r\n";
$mail_header .= "From: $mail_sent\r\n";
$mail_header .= "X-Mailer: PHP ". phpversion();

$mail_text = PROJECTLINK . "musterpfad/musterpfad/unsibscribe.php?user='" . htmlspecialchars($mail_receiver) . "'";

mail(htmlspecialchars($mail_receiver), $mail_topic, $mail_text, $mail_header);
Der Code funktioniert einwandfrei !
Code:
Ausgabe: localhost/musterpfad/musterpfad/unsubscribe.php?email='[Only registered and activated users can see links. Click Here To Register...]'
Nur wird halt der Link nicht als Link, sondern als Text ausgegeben. Sobald ich einen Link als wirklichen Link einbauen will

Code:
$mail_text = "<a href='" . PROJECTLINK . "musterpfad/musterpfad/unsibscribe.php?user='" . htmlspecialchars($mail_receiver) . "'>LINK</a>";
funktioniert es nicht mehr. Selbst wenn ich die ' ' bei $mail_receiver weg lasse funktionierts nicht. Lieber wäre mir natürlich mit den ' '.

Code:
$mail_text = "<a href='" . PROJECTLINK . "musterpfad/musterpfad/unsibscribe.php?user=" . htmlspecialchars($mail_receiver) . ">LINK</a>";
05/28/2020 12:10 Mad0ck#6
[Only registered and activated users can see links. Click Here To Register...]

Scheint das gleiche Problem gewesen zu sein
05/28/2020 13:19 Legithos#7
Quote:
Originally Posted by Mad0ck View Post
[Only registered and activated users can see links. Click Here To Register...]

Scheint das gleiche Problem gewesen zu sein
Hilft mir leider nicht, da ich den header ja bereits identisch konfiguriert habe.
05/28/2020 14:00 Devsome#8
Probiere es doch mit [Only registered and activated users can see links. Click Here To Register...].
05/28/2020 14:44 Legithos#9
Quote:
Originally Posted by Devsome View Post
Probiere es doch mit [Only registered and activated users can see links. Click Here To Register...].
Verstehe nicht ganz an welcher Stelle mir hier sprinft() weiterhelfen kann ?
05/28/2020 15:34 Devsome#10
Quote:
Originally Posted by Legithos View Post
Verstehe nicht ganz an welcher Stelle mir hier sprinft() weiterhelfen kann ?
Ohne zu testen, würde ich es so irgendwie machen.

Code:
$mail = htmlspecialchars('[Only registered and activated users can see links. Click Here To Register...]');
$projectLink = 'https://devsome.com';

$mailBody = 'Hallo Benutzer, dies ist eine E-Mail.' .
  'Bitte rufe diesen Link auf <a href="%sunsub.php?user=%s">Hier</a> um dich abzumelden.';

$mail = sprintf($mailBody, $mail, $projectLink);
Wenn dann dort auch die Links nicht gescheit sind, stimmt was nicht an deinen Einstellungen für die E-Mail versenden.
05/28/2020 16:31 Legithos#11
Quote:
Originally Posted by Devsome View Post
Ohne zu testen, würde ich es so irgendwie machen.

Code:
$mail = htmlspecialchars('[Only registered and activated users can see links. Click Here To Register...]');
$projectLink = 'https://devsome.com';

$mailBody = 'Hallo Benutzer, dies ist eine E-Mail.' .
  'Bitte rufe diesen Link auf <a href="%sunsub.php?user=%s">Hier</a> um dich abzumelden.';

$mail = sprintf($mailBody, $mail, $projectLink);
Wenn dann dort auch die Links nicht gescheit sind, stimmt was nicht an deinen Einstellungen für die E-Mail versenden.
Funktioniert so leider auch nicht. Kann aber natuerlich auch an meinem lokalen E-Mail-Server liegen. HTML im Allgemeinen funktioniert auf alle Faelle.
05/28/2020 18:23 False#12
Habe mir den Code nicht weiter angesehen, da ich noch "nie" die mail Funktion von php direkt genutzt habe.
Wieso machst du dir überhaupt den aufwand ? (Gibt genug zu beachten bei Mails)
Nutz einfach vorhanden und gut getesteteten Code z.B. SwiftMail, PHPMailer o.ä.
Dann sollte dein Beispiel aus dem ersten Beitrag aufjedenfall funktionieren.
05/28/2020 19:20 Legithos#13
Quote:
Originally Posted by False View Post
Habe mir den Code nicht weiter angesehen, da ich noch "nie" die mail Funktion von php direkt genutzt habe.
Wieso machst du dir überhaupt den aufwand ? (Gibt genug zu beachten bei Mails)
Nutz einfach vorhanden und gut getesteteten Code z.B. SwiftMail, PHPMailer o.ä.
Dann sollte dein Beispiel aus dem ersten Beitrag aufjedenfall funktionieren.
Soweit ich weiß sind die meisten Anbieter für solche Zusätze lizensiert und fallen für ein kommerzielles Projekt raus. Dementsprechend muss ich mich mit dem Vergnügen, was ich zur Verfügung habe.
05/28/2020 19:23 False#14
Paar Sekunden googeln und du hättest gesehen das der Swiftmailer unter der MIT Lizenz entwickelt wird ([Only registered and activated users can see links. Click Here To Register...]).
Somit kann man das ohne Probleme Nutzen.
05/28/2020 20:28 Legithos#15
Quote:
Originally Posted by False View Post
Paar Sekunden googeln und du hättest gesehen das der Swiftmailer unter der MIT Lizenz entwickelt wird ([Only registered and activated users can see links. Click Here To Register...]).
Somit kann man das ohne Probleme Nutzen.
Das ist schon richtig, nur will ich mich von "License and copyright notice" fernhalten. Ich benutze weder ein Framework, noch - abgesehen von Bootstrap, den Programmiersprachen und Mysql - Werke anderer Personen. Ja, das mag für mach einen nicht verständlich und extrem langwierig und mühselig klingen alles selbst zu programmieren, jedoch habe ich nach 5 Jahren Arbeit und 2 dicken Büchern über PHP das Schlimmste schon hinter mir. Ich scheue mich einfach vor kostspieligen Privatklagen/Unterlassungsklagen wegen vergessenen Copyrighthinweisen oder Urheberrechtsverletzungen!

Wenn ich das jetzt aber mal alles zusammenfassen kann, ist es mit der PHP eigenen mail()-Funktion nicht möglich oder mir kann keiner von euch helfen ?