2017-10-14 15 views
0

こんにちは、私はPHPでHTMLメールを送信しようとしています。 1ページのボタンをクリックすると、phpファイルが読み込まれ、メールに送られるデータが送られます。そのデータはHTMLコードですが、私は同じ変数/コードを使ってPHPファイルにコンテンツを生成しています。コンテンツは完全に生成されますが、電子メールは空ですが、私はそのページでコンテンツを作成するために使用するのと同じ変数を送ります。コードは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"> 

EDIT:htmlコードを手動で入力すると動作します。

答えて

2

ヘッダーはドキュメント(https://secure.php.net/manual/en/function.mail.php)#4に従ってOKです。

コードの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> 

あなたは本当に彼らが、例えばのようなものを行うことができ、これはXSSインジェクションが発生する可能性があります電子メールを介してユーザが入力したHTMLを送信することは避けてください

<script>alert('TEST');</script> 

私は両方のフリー/オープンソースですphpmailerの(https://github.com/PHPMailer/PHPMailer)またはではSwiftMailer(https://swiftmailer.symfony.com/)のようなライブラリを使用するためにあなたを示唆しているであろう。あなたはSMTP経由でメールを送信する可能性があります(スパムを避けるためにいくつかのホスティング業者が必要です)。また、ライブラリはほとんどの(ウェブ)メールクライアントと有効/互換性があるようにヘッダーを最適化します。

+0

これはどのように修正できたかわからないのですか? :) – guber90

+0

これは私のメールにメールを送信しない私は間違って何かをしている必要があります私は多くのWebプログラミングでexpirienceを持っていません。 (私は私の電子メールに[email protected]を編集する) – guber90

+1

これはメール機能を使用すると問題になる可能性があります。私はあなたのスクリプトにのみ助けを与えることができます - それはあなたのスクリプトを書くつもりはありません;) – SebTM