大家好我想用php发送HTML电子邮件。当我点击一个页面上的按钮时,它会加载php文件并向其发送应该通过邮件发送的数据。该数据是HTML代码,我也使用相同的变量/代码在该PHP文件中生成内容。内容生成完美,但电子邮件是空的,我应该发送相同的变量,用于在该页面上制作内容。代码是
<?php
$message=$_POST["email"];
echo $message;//Use variable to generate content
if (isset($_POST['button1']))
{
$to = 'test@gmail.com';
$subject = 'Subject';
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
mail($to, $subject, $message, implode("\r\n", $headers));
}
?>
<form method="POST" action=''>
<input type="submit" name="button1" value="Send mail" class="btn">
编辑:如果我输入html代码,那就可以了。
答案 0 :(得分:2)
根据文档(https://secure.php.net/manual/en/function.mail.php)#4。
,您的标题似乎没问题字段&#34;电子邮件&#34;您在第2行代码中使用的内容未包含在表单中!
<?php
function mailX($to, $subject, $message, $headers) {
var_dump($message);
}
if (array_key_exists('button1', $_POST)) {
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
mailX(
'test@gmail.com',
'Subject',
array_key_exists('email', $_POST) && !empty($_POST['email']) ? $_POST['email'] : 'Empty message!',
implode("\r\n", $headers)
);
}
?>
<form method="POST">
<input type="text" name="email">
<input type="submit" class="btn" name="button1" value="Send mail">
</form>
你应该真的避免发送用户通过电子邮件输入的HTML,这可能导致xss注入,因为他们可以做像这样的事情。
<script>alert('TEST');</script>
我建议你使用像PHPMailer(https://github.com/PHPMailer/PHPMailer)或SwiftMailer(https://swiftmailer.symfony.com/这样的库都是免费/开源的。您可以轻松通过SMTP发送邮件(某些托管商需要这些邮件以避免垃圾邮件),图书馆也会根据设置优化您的标题,使其与大多数(网络)邮件客户端有效/兼容。