Blackbenji
Lieutenant
- Registriert
- Nov. 2009
- Beiträge
- 563
Hallo,
ich versuche gerade eine HTML Mail zu versenden.
Ich habe lediglich beim "content" ein Problem, so dass Zeilenumbrüche in der Mail als \r\n dargestellt werden.
Das Formular dazu sieht so aus:
und das template:
output:
ich versuche gerade eine HTML Mail zu versenden.
Ich habe lediglich beim "content" ein Problem, so dass Zeilenumbrüche in der Mail als \r\n dargestellt werden.
PHP:
<?php
/**
* DevListBlog
*
* Copyright (C) 2012-2013 Blackbenji
*
* @package ---
* @link ---
* @license http://www.gnu.org/licenses/lgpl-3.0.html LGPL
*/
class Mail {
public function __construct() {}
public function sendContactMail() {
$output = $this->cleanInput();
if (!$output['name'] == NULL && !$output['email'] == NULL && !$output['content'] == NULL){
if (filter_var($output['email'], FILTER_VALIDATE_EMAIL)) {
$acceptor="meine@addresse.de";
$name=$output['name'];
$sender=$output['email'];
$subject="Eine Kundenanfrage";
$content=$output['content'];
$mailbody = file_get_contents( TEMPLATE_DIR.FRONTEND.'mail.vm' );
$mailbody = str_replace( '###NAME###', $name, $mailbody );
$mailbody = str_replace( '###EMAIL###', $sender, $mailbody );
$mailbody = str_replace( '###NACHRICHT###', nl2br($content), $mailbody );
// Mail Header erstellen
$mailheader = "From: ".$sender."\r\n";
$mailheader .= "Reply-To: " .$sender. "<" .$sender. ">\r\n";
$mailheader .= "Return-Path: noreply@" .$_SERVER['SERVER_NAME']. "\r\n";
$mailheader .= "MIME-Version: 1.0\r\n";
$mailheader .= "Content-Type: text/html; charset=UTF-8\r\n";
$mailheader .= "Content-Transfer-Encoding: 7bit\r\n";
$mailheader .= "Message-ID: <" .time(). " noreply@" .$_SERVER['SERVER_NAME']. ">\r\n";
$mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n\r\n";
// Email versenden
if (@mail( $acceptor, htmlspecialchars( $subject ), $mailbody, $mailheader ))
{
return true;
}
} else {
return false;
}
} else {
return false;
}
}
private function cleanInput() {
$input['name'] = stripslashes($_POST['name']);
$input['email'] = stripslashes($_POST['email']);
$input['content'] = stripslashes($_POST['content']);
$input['name'] = trim($input['name']);
$input['email'] = trim($input['email']);
$input['content'] = trim($input['content']);
$input['name'] = mysql_real_escape_string($input['name']);
$input['email'] = mysql_real_escape_string($input['email']);
$input['content'] = mysql_real_escape_string($input['content']);
return $input;
}
}
Das Formular dazu sieht so aus:
HTML:
<form accept-charset="utf-8" action="<?=$_SERVER['SCRIPT_NAME']?>?contact=send" method="post">
<div class="element">
<label for="name">Name <span class="red">(wird benötigt)</span></label>
<input id="name" name="name" class="text err" />
</div>
<div class="element">
<label for="email">Email <span class="red">(wird benötigt)</span></label>
<input id="email" name="email" class="text err" />
</div>
<div class="element">
<label for="content">Nachricht <span class="red">(wird benötigt)</span></label>
<textarea name="content" class="textarea err" rows="5"></textarea>
</div>
<div class="element">
<button type="submit" class="add">absenden</button> <a class="button lost" href="" rel="deactivate">abbrechen</a>
</div>
</form>
und das template:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kundenanfrage</title>
<style type="text/css">
body { font: normal 12px Verdana, Arial, Helvetica, sans-serif; }
a { color: blue; text-decoration: none; }
h2 { font-size: 16px; font-weight: bold; }
.gruen { color: green; }
</style>
</head>
<body>
<h2>Soeben ist eine Nachricht von <span class="gruen">###NAME###</span> eingetroffen.</h2>
<p>Als Antwortadresse wurde <a href="mailto:###EMAIL###">###EMAIL###</a> angegeben.</p>
<p>Die Nachricht die gesendet wurde lautet:<br />
###NACHRICHT###<br />
</p>
</body>
</html>
output:
HTML:
Soeben ist eine Nachricht von 1 eingetroffen.
Als Antwortadresse wurde xxx angegeben.
Die Nachricht die gesendet wurde lautet:
123\r\n123\r\n123\r\n123\r\n123