2017-03-13 5 views
0

私は電子メールを送信するためにPHPmailerを使用しています。私はいくつかの詳細(電子メールアドレスを含む)を入力するフォームを作成しました。 submit/generateをクリックすると、フォームの詳細を使用して電子メールメッセージの内容を変更します。電子メールメッセージはhtml電子メールとして表示されます。しかし、フォームを正しく表示したり、正しく送信するために自分のHTMLメールを取得することはできません。PHPを使用してhtml-emailとして送信するHTMLコンテンツを要求および変更する

フォームのコード(index.phpを): `

<?php 
    //PHP mailer code 
    require 'PHPmailer/PHPMailerAutoload.php'; 
    $emailmessage = require 'mail.php'; 

    $mail = new PHPMailer; 

    //$mail->SMTPDebug = 3;    // Enable verbose debug output 
    if (isset($_POST['submit'])) { 
     $mail->isSMTP();     // Set mailer to use SMTP 
     $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers 
     $mail->SMTPAuth = true;   // Enable SMTP authentication 
     $mail->Username = '[email protected]'; // SMTP username 
     $mail->Password = 'password';  // SMTP password 
     $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted 
     $mail->Port = 587;     // TCP port to connect to 

     $mail->setFrom('[email protected]', 'Me'); 
     $mail->addAddress($_POST['emailrecipients'], $_POST['client']); // Add a recipient 

     $mail->isHTML(true);    // Set email format to HTML 

     $mail->Subject = $_POST['callid'].' | Customer Feedback'; 
     $mail->Body = $emailmessage; 
     $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

     if(!$mail->send()) { 
      echo 'Message could not be sent.'; 
      echo 'Mailer Error: ' . $mail->ErrorInfo; 
     } else { 
      echo 'Message has been sent'; 
     } 
    } 
?> 
<!DOCTYPE html> 
    <html> 
     <body> 
     <form> 
      <input type="text" id="firstname" name="firstname" placeholder="John" /> 

      <input type="text" id="lastname" name="lastname" placeholder="Doe" /> 

      <input type="email" id="email" name="email" placeholder="[email protected]" /> 

      <button type="submit" name="submit">Generate</button> 
     </form> 
     </body> 
    </html>` 

メールコード(mail.php):

<!DOCTYPE html> 
<html> 
<body> 
<p>First Name: <?php $_POST['firstname']; ?></p> 
<p>Last Name: <?php $_POST['lastname']; ?></p> 
</body> 
</html> 

私は提出時に、必要な電子メールメッセージが変更されることを想像していました入力フィールドごとに入力し、電子メール入力フィールドに入力したアドレスに送信します。

+0

HTMLには「フォーム」はありません。 – fragmentedreality

答えて

0

私は予想通り、このラインが動作するかどうかわからない:

$emailmessage = require 'mail.php'; 

以下のようにあなたのmail.phpを持っている必要があります。その後、

$emailmessage = " 
     <!DOCTYPE html> 
     <html> 
     <body> 
     <p>First Name:".$_POST['firstname']."</p> 
     <p>Last Name: ".$_POST['lastname']."</p> 
     </body> 
     </html>"; 

そして唯一

require "mail.php" 
を使用コードの2行目の

また、HTMLフォームに "フォーム"タグを追加する必要があります。

+0

ありがとうございます。私はそれを試した。しかし今、emailmessage変数に含まれるすべての二重引用符を一重引用符に変更する必要があるようです。たとえば、$ emailmessage = "...

ファーストネーム:"。$ _ POST ['firstname']。 "

..."は$ emailmessage = "...

ファーストネーム: '$ _ POST [' firstname ']。'

... "これは正しいようですか?それとも、XAMPサーバーが求めるものですか? – nj167252

+0

バッククォートを使用して、二重引用符を '\" –

関連する問題