I use this php script to send an
email. It works well, but german mutated vowels (ö,ä,ü, etc) are not displayed correctly. Any hints how to change that?
<?php
/* Geben Sie hier Ihre E-Mail Adresse zwischen den beiden " an: */
$_emails[0] = "
[email protected]";
// Wenn keine $_POST Daten übermittelt wurden, dann abbrechen
if(!isset($_POST) OR empty($_POST))
{
header("Content-type: text/plain");
echo "Es wurden keine Daten übermittelt!";
exit;
}
else
{
// Datum, Uhrzeit und Pfad zum eigenen Script feststellen
$date = date("d.m.Y");
$time = date("H:i");
$host = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
// Empfänger feststellen und auf Gültigkeit prüfen
if(isset($_POST['recipient']) AND isset($_emails[ $_POST['recipient'] ])
AND preg_match("/^.*@.*\..*$/", $_emails[ $_POST['recipient'] ]))
{
$recipient = $_emails[ $_POST['recipient'] ];
}
// Wurde kein (gültiger) Empfänger angegeben, es mit $_email[0] versuchen
elseif(isset($_emails[0]) AND preg_match("/^.*@.*\..*$/", $_emails[0]))
{
$recipient = $_emails[0];
}
// Ist auch diese Adresse ungültig, mit Fehlermeldung abbrechen
else
{
header("Content-type: text/plain");
echo "Fehler im Script - es wurde kein Empfänger oder eine ungültige E-Mail Adresse in \ angegeben.";
exit;
}
// Wenn Betreff übermittelt, diesen verwenden
if(isset($_POST['subject']))
{
$subject = $_POST['subject'];
}
// sonst einen Default Betreff verwenden
else
{
$subject = "Formular Daten von {$_SERVER['HTTP_HOST']}";
}
// E-Mai Kopf generieren
$email = "Formular Eintrag\n"
. "\n"
. "Am $date um $time Uhr hast das Script auf $host Formulardaten empfangen,\n"
. "welche nach Angabe des Browsers von {$_SERVER['HTTP_REFERER']} stammen.\n"
. "\n"
. "Der Formular Inhalt wird nachfolgend wiedergegeben.\n"
. "\n";
// Alle $_POST Werte an den E-Mail Kopf anhängen
foreach($_POST as $key => $value)
{
if($key == "redirect" OR $key == "recipient" OR $key == "subject")
{
continue;
}
$email .= "Fomular Feld '$key':\n"
. "=============================\n"
. "$value\n"
. "\n";
}
// E-Mail Fuß anfügen
$email .= "=============================\n"
. "Ende der automatisch generierten E-Mail.";
// Versuchen E-Mail zu versenden
if(!mail($recipient, $subject, $email)) {
// Ist dies gescheitert, Fehlermeldung ausgeben
echo "Es ist ein Fehler beim Versenden der E-Mail aufgetreten,"
. " eventuell liegt ein Konfigurationsfehler am Server vor.\n\n";
exit;
}
// Wenn gewünscht, auf Bestätigungsseite weiterleiten
if(isset($_POST['redirect']) AND preg_match("=^(http|ftp)://.*\..*$=", $_POST['redirect'])) {
header("Location: ".$_POST['redirect']);
exit;
} else {
header("Content-type: text/html");
echo "Die E-Mail wurde erfolgreich versendet.";
echo '<br>';
echo '<a href="http://www.ovlu.li/cms/index.php?page=kontakt">Zurueck</a>';
exit;
}
}
?>
So i followed the hint in the first answer and the code looks now the following:
<?php
/* Geben Sie hier Ihre E-Mail Adresse zwischen den beiden " an: */
$_emails[0] = "
[email protected]";
// Wenn keine $_POST Daten übermittelt wurden, dann abbrechen
if(!isset($_POST) OR empty($_POST))
{
header("Content-type: text/plain; charset=utf-8");
echo "Es wurden keine Daten übermittelt!";
exit;
}
else
{
// Datum, Uhrzeit und Pfad zum eigenen Script feststellen
$date = date("d.m.Y");
$time = date("H:i");
$host = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
// Empfänger feststellen und auf Gültigkeit prüfen
if(isset($_POST['recipient']) AND isset($_emails[ $_POST['recipient'] ])
AND preg_match("/^.*@.*\..*$/", $_emails[ $_POST['recipient'] ]))
{
$recipient = $_emails[ $_POST['recipient'] ];
}
// Wurde kein (gültiger) Empfänger angegeben, es mit $_email[0] versuchen
elseif(isset($_emails[0]) AND preg_match("/^.*@.*\..*$/", $_emails[0]))
{
$recipient = $_emails[0];
}
// Ist auch diese Adresse ungültig, mit Fehlermeldung abbrechen
else
{
header("Content-type: text/plain");
echo "Fehler im Script - es wurde kein Empfänger oder eine ungültige E-Mail Adresse in \ angegeben.";
exit;
}
// Wenn Betreff übermittelt, diesen verwenden
if(isset($_POST['subject']))
{
$subject = $_POST['subject'];
}
// sonst einen Default Betreff verwenden
else
{
$subject = "Formular Daten von {$_SERVER['HTTP_HOST']}";
}
// E-Mai Kopf generieren
$email = "Formular Eintrag\n"
. "\n"
. "Am $date um $time Uhr hast das Script auf $host Formulardaten empfangen,\n"
. "welche nach Angabe des Browsers von {$_SERVER['HTTP_REFERER']} stammen.\n"
. "\n"
. "Der Formular Inhalt wird nachfolgend wiedergegeben.\n"
. "\n";
// Alle $_POST Werte an den E-Mail Kopf anhängen
foreach($_POST as $key => $value)
{
if($key == "redirect" OR $key == "recipient" OR $key == "subject")
{
continue;
}
$email .= "Fomular Feld '$key':\n"
. "=============================\n"
. "$value\n"
. "\n";
}
// E-Mail Fuß anfügen
$email .= "=============================\n"
. "Ende der automatisch generierten E-Mail.";
$email = htmlentities($email, ENT_QUOTES, 'uft-8');
// Versuchen E-Mail zu versenden
if(!mail($recipient, $subject, $email))
{
// Ist dies gescheitert, Fehlermeldung ausgeben
echo "Es ist ein Fehler beim Versenden der E-Mail aufgetreten,"
. " eventuell liegt ein Konfigurationsfehler am Server vor.\n\n";
exit;
}
// Wenn gewünscht, auf Bestätigungsseite weiterleiten
if(isset($_POST['redirect']) AND preg_match("=^(http|ftp)://.*\..*$=", $_POST['redirect']))
{
header("Location: ".$_POST['redirect']);
exit;
}
// sonst eine Bestätigung ausgeben
else
{
header("Content-type: text/html");
echo "Die E-Mail wurde erfolgreich versendet.";
echo '<br>';
echo '<a href="http://foto.roser.li/admin/index.php?page=kontakt">Zurueck</a>';
exit;
}
}
?>
Now when I send the
email, the following message is displayed:
> Warning: htmlentities(): charset
> `uft-8' not supported, assuming
> iso-8859-1 in
> /home/www/web21/html/roser/foto/admin/mail.php
> on line 77 Die E-Mail wurde
> erfolgreich versendet.