link in E-mail Text

Hallo,

hab folgendes Problem:

Ich möchte einen Freischaltlink per E-mail versenden aber ich weiß nicht wie ich einen Link als Link in der E-mail darstellen kann. Mir wird ständig nur der String ausgegeben.

Der Code schaut wie folgt aus:

[CODE]$id = $daten[‚id‘];

$Beitrag_freischalt = ‚<a href=„/guest/gae_freischalt.php?id=“‘.$id.‚">Beitrag freischalten‘;

// E-mail versenden zur Bestätigung
$empfaenger = „empfang@bla.de“;
$absender = „test“;
$betreff = „Freischalten“;
$mailtext = „Beitrag freischalten: $Beitrag_freischalt“;
mail( $empfaenger,
$betreff,
$mailtext
);[/CODE]

Danke

Du musst eine HTML-Mail versenden. Und dazu solltest du eine fertige Klasse w.z.B. den phpMailer nutzen

Hallo bdt600,

Dank für die schnelle Antwort.

Der Tipp mit der HTML - Mail war sehr nützlich, ich hätte aber dazu noch ein paar Fragen:

  1. Der Name ($name_mail) und der Beitrag ($beitrag_mail) steht in der Variablen, nur angezeigt wird er mir nicht in der E-mail Wieso?
  2. Der zweite Link wird gar nicht angezeigt in der Mail, warum?

So schaut der Code jetzt aus: (Das mit dem Link und der Variablen ID klappt)

[CODE]// SQL-Befehl für letzten Wert
$sql = " SELECT id FROM gaestebuch ORDER BY id DESC LIMIT 1 ";
// ausführen des mysql-Befehls
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ’ . mysql_error());
}

$daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC);
{

// ID, Name und Beitrag in Variable ablegen
$id_mail = $daten[‚id‘];
$name_mail = $daten[‚name‘];
$beitrag_mail = $daten[‚eintrag‘];

// E-mail fürs freischalten versenden
$mailtext = '

Neuer Gaestebuch Eintrag wartet auf Freischaltung

Gästebuch Eintrag

Folgender Eintrag wurde erstellt:

Name: '.$name_mail.'
Eintrag:
'.$beitrag_mail.'

Damit der Eintrag im Gästebuch freigeschalten wird, bitte folgenden Link anklicken:
Beitrag freischalten

Falls der Eintrag gelöscht werden soll, bitte folgenden Link anklicken:

'; $empfaenger = "mich@mail.de"; //Mailadresse $absender = "du@mail.de"; $betreff = "Gaestebuch Eintrag freischalten"; $header = "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; $header .= "From: bla@bla.de\r\n"; $header .= "Reply-To: sieglbua006@yahoo.de\r\n"; $header .= "X-Mailer: PHP ". phpversion();

mail( $empfaenger,
$betreff,
$mailtext,
$header);
}
[/CODE]

Danke schon mal…

www.php.net/var_dump

damit kann man wunderbar gucken was schief läuft. Packe folgende Zeile mal ans Ende deines Scriptes.

[php]echo ‚

‘;
var_dump($id_mail, $name_mail, $beitrag_mail, $mailtext);[/php]

Ps: Wenn du jemandem eine E-Mail schickst und in ihr ein Link steht der so Aussieht
[ol]
[li]Beitrag freischalten[/li][/ol]
was denkst du, wo der user hin kommt, wenn er drauf klickt?

Das ist mir klar, bei dem Code gehts es ja nur ums Prinzip.
In der richtigen Datei heißt es schon Beitrag freischalten :wink:

werd das mit dem var_dump Befehl mal ausprobieren, danke für den Tip.

ABER Problem 1 habe ich nun gelöst.

der SQL - Befehl war falsch, der muss nämlich so heißen dass es klappt

SELECT id, name, eintrag FROM gaestebuch ORDER BY id DESC LIMIT 1

Nur der zweite Link wird immer noch nicht angezeigt, k.A. warum, wisst Ihr es?

Richtig debuggen

  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set(‚display_errors‘, true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (…not a valid MySQL result resource…): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Danke für den Tipp. Habs jetzt hinbekommen :wink: