2016-04-25 2 views
1

誰かが私のフォームに情報を記入したときに私に電子メールを送るためにphpメーラーをセットアップしようとしています。 ファイル上の現在の1ページのサイトここで「index.phpを」PHPメーラーをセットアップしましたが、それでも動作しません。私は何を間違えたのですか?

は私のPHPです:

<?php 

    include("includes/class.phpmailer.php"); 

    $mail = new PHPMailer; 

    $mail->setFrom($email, $name); 
    $mail->addAddress("[email protected]");  // Add a recipient 
    $mail->addReplyTo($email, $name); 

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

    $mail->Subject = 'Message From ' . $name; 

    $mail->Body = " 
    <h2>Message Details</h2>    
    <p>Name: {$name} </p> 
    <p>Email: {$email} </p> 
    <p>Phone: {$phone} </p> 
    "; 
    ?> 

私はプライバシーのために私の電子メールを削除しますのでご注意ください。

以下は私の人生のために同じ「index.phpの」ファイル

<form id="contact" method="post" action="index.php"> 
    <ul> 
    <h2>Contact</h2> 
    <li><input type="text" id="name" name="name" placeholder="Your Name" value="<?php echo $name; ?>"></li> 
    <li><input type="email" id="email" name="email" placeholder="Email Address" value="<?php echo $email; ?>"></li> 
    <li><input type="phone" id="phone" name="phone" placeholder="Phone Number" value="<?php echo $phone; ?>"></li> 
    <li><textarea name="message" id="message" placeholder="Your Message"> </textarea></li> 
    <li><input type="submit" id="submit" name="submit"></li> 
    </ul> 
    </form> 

に私のフォームですが、私はなぜこのありえないの作業を把握することはできませんし、任意の助けをいただければ幸いです。ありがとう

+0

ここで、「POST」リクエストを処理していますか? –

+0

phpmailerコードはどこですか?それは同じファイルにあります。フォームは、私のhtmlタグの内容の中にありますが、PHPコードはオープニングタグの上にあります。 – colby42536

+0

PHPMailerで提供されているサンプルを見ると、本当に役に立ちます。彼らは、多くの一般的なシナリオのための信頼性の高い、テストされた開始のpountsを提供します - あなたがこれをやりたい最初ではありません。 – Synchro

答えて

1

ためphpmailerのログを探しているならば、あなたは多くの形式があります

$mail->send() 

を追加する必要があります。このフォームが動作するためにはあなたがシンプルなGoogleの場合は利用可能なテンプレートやフォームなどsimalar質問のたくさんこれらのフォーラムを使用して

あなたのフィールドを解析する最も簡単な方法は、ここで約$ _POSTを読むことができるhttp://php.net/manual/en/reserved.variables.post.php

$name = $_POST['name']; 

このトピックは読んでおくと便利です。phpmailer経由でフォームデータを送信する方がはっきりしています。

PHPmailer: Send from form

0

index.phpには、有効なPOST値がある場合にのみ電子メールを実行します。また、実際に$mail->send()メソッドでメールを送信しているとは思われません。

このようなものでなければなりません:など、あなたは件名、本文、addAddressを持った後、送信()関数を呼び出し、実際にメッセージを送信するには

if (count($_POST) > 0 && isset($_POST['submit'])) { 

    include("includes/class.phpmailer.php"); 

    $mail = new PHPMailer; 
    $mail->setFrom($email, $name); 
    $mail->addAddress("[email protected]");  // Add a recipient 
    $mail->addReplyTo($email, $name); 

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

    $mail->Subject = 'Message From ' . $name; 

    $mail->Body = " 
     <h2>Message Details</h2>    
     <p>Name: {$name} </p> 
     <p>Email: {$email} </p> 
     <p>Phone: {$phone} </p> 
    "; 
} 
+0

投稿リクエストが解析されていません。 PS:あなたに投票したことはありませんでした。 –

0

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 
1

あなたは

if(!empty($_POST['name'] && !empty($_POST['email'] && !empty($_POST['phone']){ 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 

    include("includes/class.phpmailer.php"); 
    //the rest of you code ... 
    //and finally $mail->Send() 

    if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    } else { 
    echo "Message sent!"; 
    } 

    } 

012: POST要求を解析する必要があり、ここでそれを行うための一つの方法ですの

注:

私は

$mail->send() 

を参照してくださいいけないが、私はあなたがその上で忘れてしまったPHPのscript.haven'tの終わりを見ていないいくつかのPHPMailer examples

0

を見てみましょうか?

あなたもそれ以上0に$SMTPDebugを設定し、エラー

+0

PHPの '?>'の後に静的コンテンツがない場合、 '?>'の終了は必要ありません。実際には、終了タグの後ろに余分な空白があるかもしれないので、それを使用するための反パターンと見なされます。 – Synchro

0

あなたはまだあなたがあなたのサーバー上でホスティング会社のメール設定を検討する必要があります電子メールを送信することができない場合。人気のあるgmail smtpを使用している場合は、多くの場合、smtpの設定を確認する必要があります。

なぜ電子メールを送信できないのかを呼び出す必要があるかもしれません。これはよくある問題です。

以下は、phpmailerで設定したgmail SMTPの例です。

$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Host  = "mail.yourdomain.com"; // SMTP server 
$mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
// 1 = errors and messages 
// 2 = messages only 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "tls";     // sets the prefix to the servier 
$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$mail->Port  = 587;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // GMAIL username 
$mail->Password = "yourpassword";   // GMAIL password 
関連する問題