2017-10-14 96 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