目前我有一个完整的电子邮件系统,我想实现我的夏令营。但是,当我提交表单时,它似乎在文本中以html代码形式发送,因此它显示了所有<>并没有特殊的格式。所以我认为。它是否正确地发送到脚本,所以我回显它并显示没有格式化的代码。
发送:
<?php require '../settings.php';
/* Check all form inputs using check_input function */
$name= check_input($_POST['name'], "Enter your name");
$email= check_input($_POST['email']);
$message= $_POST['message'];
$subject= check_input($_POST['subject']);
/* From who and Reply to Who. */
$headers = 'From: '.$name.'\r\n';
$headers .= 'Reply-To: '.$administrationemail.'\r\n';
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
/* Send the message using mail() function */
mail($email, $subject, $message, $headers);
/* Redirect visitor to the thank you page */
header('Location: /mail/');
exit();
}
?>
形式:
<form action="send.php" method="post">
<b>Your Name:</b><input class="form-control" type="text" name="name">
<b>Subject:</b> <input class="form-control" type="text" name="subject">
<b>Recipient E-mail:</b> <input class="form-control" type="text" name="email">
<b>Your Message:</b>
<textarea class="summernote" id="message" name="message"></textarea>
<input name="submit" type="submit" class="btn btn-theme" value="Send it!">
</form>
任何帮助解决这个问题都会很棒。提前谢谢。
我希望在电子邮件中显示的内容:
你好John Smith,
我收到了您的发票,很快便会付款。
来自你的朋友: 史密斯爵士。
我所展示的内容:
<p><span style="font-weight: bold;">Hello John Smith,</span></p>
<p>I have recieved your invoice and will pay shortly.</p>
<p><span style="font-weight: bold;">From Your Friend:</span></p>
<p> <span style="font-style: italic;">Sir Smith John.</span><span style="font-weight: bold;"><br></span></p>
功能:
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = preg_replace($wordlist, '****', $data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
答案 0 :(得分:2)
如果您需要灵活性,请使用PHPMailer。它是那么好。看看他们的网站:
答案 1 :(得分:0)
您可能需要调整标题,但为了论证,我们只使用与PHP文档相同的方法。
$headers = 'From: ' . $name . "\r\n";
$headers .= 'Reply-To: ' . $administrationemail . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
你的\ r \ n必须在双引号内,因为单引号是文字字符串。
答案 2 :(得分:0)
您的脚本按预期工作,如果您要使用特殊格式发送电子邮件文本,则必须使用转义字符替换HTML标记(例如<br />
至/n
)。您可以使用str_replace
:
$htmlTags = array('<br />', '<br/>');
$escapeCharacter = '/n';
$final_message = str_replace($htmlTags, $escapeCharacter, $message);