2017-10-14 101 views
0

嗨,大家好我想用PHP发送HTML邮件。当我点击一个页面上的按钮时,它会加载php文件并发送应该发送到邮件中的数据。该数据是HTML代码,我也使用相同的变量/代码来生成该PHP文件中的内容。内容完全生成,但电子邮件是空的,altought我发送相同的变量,我使用该页面上的内容。代码是发送带有HTML的PHP​​邮件

      <?php 
          $message=$_POST["email"]; 
          echo $message;//Use variable to generate content 
          if (isset($_POST['button1'])) 
          {   

            $to = '[email protected]';                    
            $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代码manualy它的作品。

回答

2

根据文档(https://secure.php.net/manual/en/function.mail.php)#4,您的标题似乎没问题。

您在第2行代码中使用的字段“email”未包含在表单中!

<?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(
     '[email protected]', 
     '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(这是一些主机为避免垃圾邮件需要)发送邮件的简单可能性,图书馆也会根据设置优化您的邮件头以与大多数(网络)邮件客户端有效/兼容。

+0

所以不知道如何解决这个问题? :) – guber90

+0

这不会发送邮件到我的电子邮件必须是我做错了事情我在网络编程没有多少expirience。 (我将[email protected]编辑到我的电子邮件) – guber90

+1

这可能是使用邮件功能的问题。我只能给你脚本的帮助 - 这不意味着我会写你的脚本;) – SebTM