2017-10-14 9 views
0

안녕하세요, PHP로 HTML 이메일을 보내려고합니다. 한 페이지의 버튼을 클릭하면 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"> 

입니다. 편집 : html 코드를 수동으로 입력하면 작동합니다.

답변

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> 

당신이해야 정말 그들이 예를 들어, 같은 일을 할 수 있기 때문에이 XSS 주입을 일으킬 수 있습니다 이메일을 통해 사용자가 입력 한 HTML 전송을 방지

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

내가 PHPMailer (https://github.com/PHPMailer/PHPMailer) 또는 SwiftMailer (https://swiftmailer.symfony.com/) 모두 무료/오픈 소스처럼 라이브러리를 사용하도록 건의 할 것입니다. SMTP를 통해 메일을 보내는 것이 쉽지만 (일부 스팸을 피하기 위해 일부 호스트 사용자가 필요함) 라이브러리는 대부분의 (웹) 메일 클라이언트와의 유효/호환 설정에 따라 헤더를 최적화합니다.

+0

이렇게 어떻게 수정 될지 모르십니까? :) – guber90

+0

이것은 나의 이메일에 메일을 보내지 않는다. 나는 틀린 일을하고있다. 나는 웹 프로그래밍에 많은 경험이 없다. (나는 내 ​​이메일에 [email protected]를 편집한다.) – guber90

+1

메일 기능을 사용할 때 문제가 될 수있다. 나는 당신에게 당신의 스크립트에 도움을 줄 수 있습니다 - 당신의 스크립트를 쓸 뜻은 아닙니다;) – SebTM