使用HTML发送PHP邮件

时间:2017-10-14 17:18:39

标签: php html email send

大家好我想用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代码,那就可以了。

1 个答案:

答案 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发送邮件(某些托管商需要这些邮件以避免垃圾邮件),图书馆也会根据设置优化您的标题,使其与大多数(网络)邮件客户端有效/兼容。