Zur Navigation

html mail gestalten und verschicken

1 tobi

hallo zusammen,

ich bin gerade am gestalten einer html mail. der versand der email funktioniert, die grafik und der text werden auch eingeblendet.
nun meine anliegen:
1) kann ich einen rahmen um die mail machen?
2) kann ich inhalte einer datenbank mit in eine solche mail einbauen?


<?php

$Empfaenger = "123@123.de";
$Betreff = "Aktuelle Heimspieltermine der kommenden Woche";

$Nachricht = "
<html>
<head>
<title>Aktuelle Heimspieltermine</title>
</head>
<img src=\"http://123/123/123/mail_header.jpg\">
<body bgcolor=\"#E8E8E8\" text=\"#000000\">
<font face=\"arial\" size=\"3\"> Aktuelle Heimspieltermine</font>
</body>
</html>
";

$Header = "MIME-Version: 1.0\n";
$Header .= "Content-type: text/html; charset=iso-8859-1\n";
$Header .= "From: Info 123 <123@12345.de>\n";

mail($Empfaenger, $Betreff, $Nachricht, $Header);

?>

wünsche guten rutsch

mfg tobi

29.12.2009 15:32

2 Jörg

1) kann ich einen rahmen um die mail machen? 

Ich würde es mit border versuchen

2) kann ich inhalte einer datenbank mit in eine solche mail einbauen? 

Ja, da gibt es keinen Unterschied zum Erstellen von Webseiten.

Problematisch könnte da eher das Layouten in HTML und CSS für rückwärtsgewandte Emailclients sein

29.12.2009 19:01

3 tobi

ich habe nun ein wenig weiterprobiert, nachdem ich jetzt die datenbankverbindung und das auslesen sowie einbinden des datenbankinhaltes versucht habe einzubauen, bekomme ich eine fehlermeldung, leider habe ich keine ahnung wie ich ihn beheben kann.
die ganze datei sieht jetz so aus:

<?php

$Empfaenger = "123@123.de";
$Betreff = "Aktuelle Heimspieltermine der kommenden Woche";

$Nachricht = "
<html>
<head>
   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
   <title>123 - Spielevorschau</title>
   <style type=\"text/css\" media=\"screen\">
		body
		{
		font-family:Verdana, Arial, Helvetca, sans-serif;
		font-size:15px;
		background-color:#E8E8E8;
		text-align:center;
		}

		h1 {font-size:18px;color:#000000;}
		h2 {font-size:14px;color:#000000;}
		h3 {font-size:13.5px;color:#000000;}
		h4 {font-size:13px;color:#000000;}

		/* Der Kopfbereich */
		#kopf {
		height:150px;
		padding:0px;
		border-bottom:1px solid #000000;
		}
		
		/* Main-Teil */
		#main {
		padding:10px;
		}
		
		/* Tabelle Eigenschaften bei Gesamtspielplan 95% */
		.table_gesamtspielplan_90{
		margin:auto;
		idth:95%;
		border-collapse:collapse;
		border:1px solid #000000;
		padding: 3px;
		}

		/* Tabelle Eigenschaften bei Auswärtsfahrten bei th*/
		.table_gesamtspielplan{
		border:1px solid #000000;
		padding: 3px;
		}	

		/* Links allgemein - Link Angaben 1 */
		a.links {
		font-size:15px;
		text-decoration:underline;
		color:#000;
		}

		/* Links allgemein - Link Angaben 2 */
		a.links:visited {
		ont-size:15px;
		text-decoration:underline;
		color:#000;
		}

		/* Links allgemein - Link Angaben 3 */
		a.links:hover {
		font-size:15px;
		text-decoration:underline;
		color:#0000FF;
		}
   </style>

</head>
<body>

include \"../../zugang.php.inc\";

<div style=\"width:698px;margin:0px auto;text-align:left;border:solid 3px #000000;\">
	<div id=\"kopf\">
		<img src=\"http://ttc-langensteinbach.de/4/mail_header.jpg\" width=\"698\" height=\"150\" alt=\"Mail Header\">
	</div>
			<div id=\"main\">
				<p>Hallo zusammen, <br /><br />hier der die aktuellen Heimspieltermine der kommenden Woche:</p>
				
							
				$sql = \"
				SELECT id, wochentag, spielzeit, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis FROM spielergebnisse ORDER BY spielzeit\";

				$db_erg = mysql_query( $sql );
				if ( ! $db_erg )

				{
				die('Ungültige Abfrage: ' . mysql_error());
				}

				function date_mysql2german($date) {
				$d    =    explode("-",$date);
    
				return    sprintf(\"%02d.%02d.%04d\", $d[2], $d[1], $d[0]);
				}

				$anzahl = mysql_num_rows($db_erg);

				<table class=\"table_gesamtspielplan_90\">
					<tr>
						<th class=\"table_gesamtspielplan\">Spiel</th>
						<th class=\"table_gesamtspielplan\">Datum und Uhrzeit</th>
						<th class=\"table_gesamtspielplan\">Spielklasse</th>
						<th class=\"table_gesamtspielplan\">Heimmannschaft</th>
						<th class=\"table_gesamtspielplan\">Gastmannschaft</th>
						<th class=\"table_gesamtspielplan\">Heimergebnis</th>
						<th class=\"table_gesamtspielplan\">Gastergebnis</th>
					</tr>

					$anzahl = 1;

					while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
					{
					<tr>
						<td class=\"table_gesamtspielplan\">\". $anzahl . \"</td>
					$expDate = explode(\" \",$zeile['spielzeit']);
						<td class=\"table_gesamtspielplan\">\". date_mysql2german($expDate[0]).\" \".substr($expDate[1],0,5).\" </td>
						<td class=\"table_gesamtspielplan\">\". $zeile['spielklasse'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['heimmannschaft'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['gastmannschaft'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['heimergebnis'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['gastergebnis'] .\"</td>

					</tr>
					$anzahl++;
					}
				</table>
				<br />

				mysql_free_result( $db_erg );

				<p>Mit freundlichen Grüßen<br />Tobi<br />Webmaster 123</p>
				<p>checkout: <a class =\"links\" href =\"http://www.123.de\">www.123.de</a></p>
			</div>	
</div>

mysql_close($link);

</body>
</html>
";

$Header = "MIME-Version: 1.0\n";
$Header .= "Content-type: text/html; charset=iso-8859-1\n";
$Header .= "From: Info 123 <info@123.de>\n";

//mail($Empfaenger, $Betreff, $Nachricht, $Header);

echo "$Nachricht\n";

?>

für folgende zeile bekomme ich jetzt die fehlermeldung
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in


$expDate = explode(\" \",$zeile['spielzeit']);

evtl hab ich ja noch mehr falsch gemacht.

mfg tobi

30.12.2009 03:11

4 Jörg

Du musst HTML- und PHP-Code sauber voneinander trennen. Du hast die PHP-Befehle mit in den String von $Nachricht gepackt - dort werden sie aber nicht ausgeführt, sondern der PHP-Code wird dann zum Bestandteil des HTML-Strings. Du kannst die Stringzuweisung zwischendurch beenden und mit dem String Operator ".=" wieder aufnehmen, also z.B. so:

</head>
<body>";

include ("../../zugang.php.inc");

$Nachricht .= "
<div style=\"width:698px;margin:0px auto;text-align:left;border:solid 3px #000000;\">
	<div id=\"kopf\">

30.12.2009 07:53 | geändert: 30.12.2009 07:54

5 tobi

danke erstmal

hab jetzt versucht das ganze ein wenig zu trennen, sieht aber meiner meinung nach ein wenig scheußlich aus.

nun habe ich aber immer noch eine zeile mit der fehlermeldung


</head>
<body>
";

//Datenbank verbinden
include ("../../zugang.php.inc");

$Nachricht .= "

<div style=\"width:698px;margin:0px auto;text-align:left;border:solid 3px #000000;\">
	<div id=\"kopf\">
		<img src=\"http://ttc-langensteinbach.de/4/mail_header.jpg\" width=\"698\" height=\"150\" alt=\"Mail Header\">
	</div>
			<div id=\"main\">
				<p>Hallo zusammen, <br /><br />hier der die aktuellen Heimspieltermine der kommenden Woche:</p>
				";
				
				//sql Befehl			
				$sql = "
				SELECT id, wochentag, spielzeit, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis FROM spielergebnisse ORDER BY spielzeit";

				$db_erg = mysql_query( $sql );
				if ( ! $db_erg )

				{
				die('Ungültige Abfrage: ' . mysql_error());
				}

				function date_mysql2german($date) {
				$d    =    explode("-",$date);
    
				return    sprintf("%02d.%02d.%04d", $d[2], $d[1], $d[0]);
				}

				$anzahl = mysql_num_rows($db_erg);

$Nachricht .= "				

				<table class=\"table_gesamtspielplan_90\">
					<tr>
						<th class=\"table_gesamtspielplan\">Spiel</th>
						<th class=\"table_gesamtspielplan\">Datum und Uhrzeit</th>
						<th class=\"table_gesamtspielplan\">Spielklasse</th>
						<th class=\"table_gesamtspielplan\">Heimmannschaft</th>
						<th class=\"table_gesamtspielplan\">Gastmannschaft</th>
						<th class=\"table_gesamtspielplan\">Heimergebnis</th>
						<th class=\"table_gesamtspielplan\">Gastergebnis</th>
					</tr>
					";
					
					$anzahl = 1;	
					
					while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
					{
$Nachricht .= "
					<tr>
						<td class=\"table_gesamtspielplan\">\". $anzahl . \"</td>
						";
						
					$expDate = explode(" ",$zeile['spielzeit']);
					
$Nachricht .= "					
						<td class=\"table_gesamtspielplan\">\". date_mysql2german($expDate[0])." ".substr($expDate[1],0,5).\" </td>
						<td class=\"table_gesamtspielplan\">\". $zeile['spielklasse'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['heimmannschaft'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['gastmannschaft'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['heimergebnis'] .\"</td>
						<td class=\"table_gesamtspielplan\">\". $zeile['gastergebnis'] .\"</td>

					</tr>
					";
					$anzahl++;
					}

$Nachricht .= "
				</table>
				<br />
				";
				
				mysql_free_result( $db_erg );
				
$Nachricht .= "
				
				<p>Mit freundlichen Grüßen<br />123<br />Webmaster 123</p>
				<p>checkout: <a class =\"links\" href =\"http://www.123.de\">www.123.de</a></p>
			</div>	
</div>
";

// Datenbank schließen
mysql_close($link);

$Nachricht .= "
</body>
</html>
";

$Header = "MIME-Version: 1.0\n";

fehlermeldung kommt hier:

<td class=\"table_gesamtspielplan\">\". date_mysql2german($expDate[0])." ".substr($expDate[1],0,5).\" </td>

30.12.2009 14:02

6 Jörg

Du hast in der Zeile zwei Backslashes zuviel.

<td class=\"table_gesamtspielplan\">\". date_mysql2german($expDate[0])." ".substr($expDate[1],0,5).\" </td>

Die Anführungszeichen, die einen String begrenzen, dürfen nicht maskiert werden.

30.12.2009 15:48

7 tobi

hatte ich auch schon im vorfeld weggemacht, da hab ich auch eine fehlermeldung erhalten.

habe sie jtzt nochmals entreftn, nun erhalte ich folgende meldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

EDIT:
muß ja die \ auch bei den folgenden entfernen

30.12.2009 15:51 | geändert: 30.12.2009 15:53

8 Jörg

hatte ich auch schon im vorfeld weggemacht, da hab ich auch eine fehlermeldung erhalten.

Wenn die Fehlermeldung mit der Zeilennummer nach unten wandert, hast du einen vorhergehenden Fehler erfolgreich behoben. PHP zeigt bei einem Parse Error nur den ersten gefundenen Fehler an. Aber das hast du ja auch bereits erkannt:

EDIT:
muß ja die \ auch bei den folgenden entfernen

30.12.2009 16:05 | geändert: 30.12.2009 16:06

10 tobi

nun das versenden klappt eigentlich super, jetzt gefällt mir nur noch nicht die darstellung der mail die im postfach angezeigt wird.

ich habe, bevor ich die mail geschickt habe, mir erstmal im browser das ganze anzeigen lassen, und da sieht es ein wenig anderster aus, wie dann später im postfach.

ist dass normal?

31.12.2009 14:11