我必须提交邮件。
第一个是html文件。
mailhtml.php
<form action="mailsend.php" method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name" />
<label for="Email">Email:</label>
<input type="text" name="email" id="email" />
<label for="Message">Message:</label><br />
<textarea name="message" rows="20" cols="20" id="message"></textarea>
<input type="submit" name="submit" value="Submit" />
</form>
其次是mailsend.php
<?php
try{
$name = trim(strip_tags($_POST['name']));
$email = trim(strip_tags($_POST['email']));
$message = htmlentities($_POST['message']);
// set here
$subject = "Contact form submitted!";
$to = 'test@test.com';
$body = <<<HTML
$message
HTML;
$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
// send the email
if(mail($to, $subject, $body, $headers))
{
echo "success";
}
else
{
echo "Not Success";
}
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
邮件发送成功但我的html数据没有在邮件中呈现。它看起来和我在文本框中插入的相同。见图。我收到的是邮件。
答案 0 :(得分:2)
请注意,此表单允许潜在的攻击者使用您的网站向其他人发送垃圾邮件。您没有正确清理$ _POST值,只删除它们中的标记,因此可以添加自定义标题。
例如,如果我使用
发布到您的表单 $_POST['email'] = "spam_target1@domain.com\r\nCC: spam_target2@domain.com, spam_target3@domain.com, spam_target3@domain.com, ...
我可以使用您的服务器批量垃圾邮件用户列表。
请确保在邮件标题中使用之前从您收到的值中删除任何新行(\n
)和回车符(\r
)。
至于您的实际编码问题,您使用的是htmlentities($_POST['message']
,因此您发送的邮件将其所有html标记转换为文本实体(例如<
变为<
)
答案 1 :(得分:1)
听起来信息格式不正确。确保包含doctype和标签
<!DOCTYPE HTML>
<html>
your message here
</html>
答案 2 :(得分:0)
正如尼克所说,请务必添加DOCTYPE和其他代码,同时您的htmlentities($_POST['message'])
正在转换您的&lt;和&gt;到<
和>
根据PHP文档中的htmlentities。
答案 3 :(得分:0)
<form action="" method="post">
Subject: <input name="subject" type="text" />
Message:
<textarea name="comment" ></textarea>
<input type="submit" value="submit" name="submit"/>
</form>
<?php
if(isset($_POST['submit']))
{
$to = 'example@example.com';
$subject = $_POST['subject'];
$message = $_POST['comment'];
$headers = 'From: example@example.com';
$send_email = mail($to, $subject, $message, $headers);
if($send_email == true)
{
echo "Email Successfully Insert.";
}
else
{
echo "Email Not Send.";
}
}
?>