Seruvs TTP,
kannst du mir das Script nicht so editieren, dass es eine ganze datei ist, also mit <? beginnend und mit ?> aufhörend, dass ich nur die passenden emailadressen angeben muss und den HTML-Text?
Bitteschön:
An der Stelle an der die Inhalte bestimmt werden, wähle die"<<<EOF" Syntax, weil Du im HTML Teil durchaus eine Fehler erzeugen könntest, sobald Hochkommas ins Spiel kommen.
bsp. $konf['Inhalt_HTML'] ="<span class="">blah</span>";
Das erste Hochkomma nach class=" würde auch das Ende des Strings bedeuten und somit eine Fehlerausgabe erzeugen.
Variablen werden zu allem Glück auch noch expandiert :-)
Bilder im HTML Quelltext solltest Du am besten von einem externen Server holen(<img src="http://domäne.de/bild.jpg">) da mache mailclients(wie meiner) solche Outlook HTML Mistdinger(bilder als Anhang) nicht interpretiert. Grundsätzlich solltest Du noch wissen, das HTML mails zwar bequem und beliebt, aber auch gefährlich sein können und deshalb von machen(wie mir) komplett abgelehnt werden. Aber zum Glück hast Du ja noch den text/plain Teil :-).
Ganz wichtig ist, dass in der Zeile in der "<<<TEXT" steht, nichts
anderes mehr steht, auch kein leerzeichen. Benutze eine Editor, er Dir auch die Leerzeichen anzeigt.
Ausserdem wird explizit zwischen normalem Text und HTML Inhalt unterschieden.
Warum? Weil das extrahieren des Textes aus dem HTML code mittels "strip_tags" gerade bei z.b Tabellenkonstrukten eine sehr unschöne bis nicht mehr lesbare Ausgabe erzeugt.
Ausserdem hast Du noch die Wahl, ob Du CC oder BCC Empfänger belieferen willst(bsp. Newsletter o.ä[<- kein SPAM]).
hier noch die Lösung wie Du mehre Empfänger adressieren kannst, die aus irgend einem "Speicher" kommen.
- Code: Select all
$bccEmpfArray = array(
"asdfadf@blah.de",
"asdfadf@blah.de",
"asdfadf@blah.de"
);
// initialisiere "$bccEmpf" String
$bccEmpf ="";
for($i=0;$i<count($bccEmpfArray);$i++):
$bccEmpf .= $ccEmpfArray[$i].",";
endfor;
// Alle ccEmpfänger per Kommata getrennt ** letztes Kommata entfernt
$bccEmpf = ereg_replace(",$","",$bccEmpf);
//
// [....]
//
$konf['bcc_Empfaenger'] = $bccEmpf;
Mit den "ccEmpfänger" machst Du das analog. Musst es nicht benutzen.
Genug der Worte, hier der Quelltext. Müsste eigentlich sofort funktionieren. Wenn nicht, meld Dich einfach
- Code: Select all
<?PHP
//Funktion sende_mail
function sende_mail($AbsName,$AbsMail,$Betreff,$Empfaenger,$cc,$bcc,$TEXT,$HTML)
{
/**
* Initialisiere Kopfzeilen der Mail
*/
$KopfZeile = "Return-Path: <".$AbsMail.">\n";
$KopfZeile = "From: ".$AbsName." <".$AbsMail.">\n";
/**
* Wenn Empfänger für Kopie oder Blindkopie angegeben, dann schreibe die
* passenden Kopfzeilen
*/
if(!empty($cc))
$KopfZeile .= "cc: ".$cc."\n";
if(!empty($bcc))
$KopfZeile .= "bcc: ".$bcc."\n";
/**
* Generiere einen Boundary ** Abgrenzung der Inhalte
* Bestimme den MIME Typ des Inhaltes
*/
$boundary = strtoupper(md5(uniqid(time())));
$KopfZeile .= "MIME-Version: 1.0\n";
$KopfZeile .= "Content-Type: multipart/alternative; boundary=".$boundary."\n";
/**
* Schreibe den Mailinhalt
*/
// Textteil
$KopfZeile .= "--".$boundary."\n";
$KopfZeile .= "Content-Type: text/plain\n";
$KopfZeile .= "Content-Transfer-Encoding: 8bit\n\n";
$KopfZeile .= $TEXT."\n";
// HTMLteil
$KopfZeile .= "--".$boundary."\n";
$KopfZeile .= "Content-Type: text/html; charset=iso-8859-1\n";
$KopfZeile .= "Content-Transfer-Encoding: 8bit\n\n";
$KopfZeile .= $HTML;
$KopfZeile .= "\n--".$boundary."--";
/**
* Alle Kopfzeilen da, sende die Mail.
* Prüfe, ob der versand erfolgreich.
*/
if(@mail($Empfaenger,$Betreff,"",$KopfZeile)):
return true;
else:
return false;
endif;
}
/***** ENDE function sende_mail($AbsName,$AbsMail,$Betreff,$Empfaenger,$cc,$bcc,$TEXT,$HTML) ****/
/**
* Wenn Du mehrer mails(kein Spam) verschicken willst, nimm Deine eigene
* Emailadresse als Hauptempfänger und die anderen als bbc_Empfänger.
* WARUM? -> http://www.trollpress.de/bcc/
*/
$konf['AbsenderName'] = "TTP";
$konf['AbsenderAdresse'] = "";
$konf['Betreff'] = "Neues von TTP";
$konf['Empfaenger'] = "";
/**
* Mehrer Empfänger mit Kommata separieren
* z.B $konf['bccEmpfaenger'] = "empf@enger.de, undnoch@einer.de, usw@etc.de";
* Nach dem letzten Eintrag darf keine Komma mehr stehen.
*/
$konf['cc_Empfaenger'] = "";
$konf['bcc_Empfaenger'] = "";
/**
* Meldungen
*/
$konf['MailErfolg'] = "Email erfolgreich verschickt.";
$konf['MailMisserfolg'] = "Es gab einen Fehler beim versenden!";
/**
* Inhalt der Mail bestimmen.
*/
// Text Inhalt
$konf['Inhalt_TEXT'] =
<<<TEXT
Thema 1
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Link zum Thema 1 -> http://domäne.tld
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Thema 2
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Link zum Thema 2 -> http://domäne.tld
TEXT;
/******* TEXT ENDE ******************************/
// HTML Inhalt
$konf['Inhalt_HTML'] =
<<<HTML
<html>
<head>
<title>Lecker Wurst</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body,td,a{
background-color:#ffffcc;
color:#3399cc;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
</style>
</head>
<body>
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td style="width:120px;vertical-align:top;">
<strong>Thema 1</strong>
<br>
<br>
<a href="http://schwaademaache.de">LinkzumThema 1</a>
<br>
<br>
<img src="http://schwaademaache.de/wirschd/schwaademaache.jpg" alt="Lecker" width="100">
<br>
Bild zum Thema
</td>
<td style="width:350px;vertical-align:top;">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
</td>
</tr>
<tr>
<td style="width:120px;vertical-align:top;">
<strong>Thema 2</strong>
<br>
<br>
<a href="http://schwaademaache.de">LinkzumThema 2</a>
</td>
<td style="width:350px;vertical-align:top;">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
</td>
</tr>
</table>
</body>
</html>
HTML;
/******* HTML ENDE ******************************/
// ENDE Konfiguration
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>e-Mails verschicken</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?PHP
/**
* Rufe die Funktion auf, und prüfe gleichzeitig ob sie erfolgreich war.
*/
if (sende_mail(
$konf['AbsenderName'],
$konf['AbsenderAdresse'],
$konf['Betreff'],
$konf['Empfaenger'],
$konf['cc_Empfaenger'],
$konf['bcc_Empfaenger'],
$konf['Inhalt_TEXT'],
$konf['Inhalt_HTML']
) == true ):
echo $konf['MailErfolg'];
else:
echo $konf['MailMisserfolg'];
endif;
?>
</body>
</html>
Hoffe es hilft.
beste Grüße
Stefan
PS: Ach ja, Du hast es schon gelesen, wenn Du mit Deiner lokalen Kiste was verschicken willst, wird die Post von vielen relays vermutlich abgelehnt, da die als Absender "wwwrun@localhost" o.ä nicht akzeptieren.
hast Du eine Subdomäne bei z.B dyndns.org, gib Deinem Server diesen Namen. z.B "ttp.dyndns.org" richte Dir einen User/Postfach in Sendmail ein, und schon kannste als "ttp@ttp.dnydns.org" mails versenden und empfangen. Im Mailclient musste halt die Einstellungen "localhost POP/smtp" verwenden. Ich kanns jetzt nicht definitv sagen, aber bei mir funktioniert das auf alle Fälle schon zwei Jahrs so.