2010-08-30 80 views
0

好吧,我有我的表單(第一段代碼),我試圖用PHPmailer發送它。但是,它發送沒有任何實際表單信息的消息。我很迷茫,如何讓這個工作。PHPmailer:從表單發送

<form action="send_form_email.php" method="post" id="ContactForm"> 
        <fieldset> 
       <p class="email">magazines/newspapers</p> 
         <ol> 
          <li> 
           <label for=name>Name</label> 
           <input id="name" name="name" type="text" placeholder="name" required autofocus> 
          </li> 


          <li> 
           <label for=email>Email</label> 
           <input id="email" name="email" type=email placeholder="[email protected]" required> 
          </li> 

          <li> 
           <label for=telephone>Phone</label> 
           <input id=telephone name=telephone type=tel placeholder="Eg. 888-555-5555" required> 
          </li> 

          <li> 
          <label for="comments">note</label> 
       <textarea name=comments type=text placeholder="enter your comments" required></textarea> 
          </li> 

          <li> 
          <label for="file">File</label> 
          <input id="file" type="file" name="file" /> 
          </li> 

         </ol> 
        </fieldset> 

       <fieldset> 
         <button type=submit>submit</button> 
        </fieldset> 

       </form> 

郵件腳本:

require("mail/class.phpmailer.php"); 

$mail = new PHPMailer(); 
$mail->Host = "localhost";    
$mail->From = "[email protected]"; 
$mail->FromName = "Your Name"; 
$mail->AddAddress("[email protected]"); 


$mail->Subject = "Feedback form results"; 
$mail->Body = $comments; 
$mail->WordWrap = 50; 

if(!$mail->Send()) 
{ 
    echo 'Message was not sent.'; 
    echo 'Mailer error: ' . $mail->ErrorInfo; 
} 
else 
{ 
    echo 'Thank you for your feedback.'; 
} 
    $email = $_REQUEST['email'] ; 
    $comments = $_POST['telephone'] ; 
    $phone = $_REQUEST['comments'] ; 
    $message = $_REQUEST['message'] ; 

回答

0

看來,你設置$意見可變後發送消息。

+0

O,謝謝..非常愚蠢的問題。但是,我如何發送多個「變量」。現在$評論被設置爲電話。但我確實需要電子郵件,電話,評論,甚至是文件上傳。 – 2010-08-30 20:13:59

+0

您希望得到的電子郵件看起來像給定的電子郵件地址,電話號碼,評論等,看起來像什麼? – ngroot 2010-08-30 20:36:49

+0

名稱 電子郵件 數 評論 文件附件 – 2010-08-30 22:12:48

0

您正在嘗試發送郵件後設置變量。另外,我沒有看到名爲message的表單輸入。但是,我確實看到一個名爲file,但表單的enctype未設置。所以有很多錯誤需要修復。

不知道你在做什麼,但看起來你不需要同時需要commentsmessage。從發送腳本中刪除message,並從html表格中刪除file以查看是否可以像這樣工作。同時將發送腳本底部的變量賦值移至頂部。

+0

感謝webbiedave。我確實將它移到頂端,並修復了一切。那麼,它確實發送了帶有$ comments數據的電子郵件。但是,我需要發送電子郵件,電話以及一個文件(使用文件上傳輸入)。對不起,我對這一切都很陌生。 – 2010-08-30 20:16:54

1

好吧,所以第一步(可選)是收集發佈變量到本地變量 - 之前你進入$mail=new PHPMailer()...位。對於您提供的有限代碼片段,這不是必需的,但可以在其他地方使用它們。

$name = $_POST['name'] ; 
$email = $_REQUEST['email'] ; 
$telephone = $_REQUEST['telephone'] ; 
$comments = $_POST['comments'] ; 

而現在,改變$mail->Body = $comments;行:

$mail->Body=" 
Name: $name 
Email: $email 
Telephone: $telephone 
Comments: $comments"; 

而作爲ngroot指出;添加附件:

$mail->AddAttachment($_FILES['file']['tmp_name']); 

...您可以多次調用多個附件。由於表單上傳的工作方式(文件存儲在臨時空間中),因此您需要使用這個tmp_name子變量。您還需要添加多部分表單編碼以允許文件上傳,因此表單行應爲:

<form enctype="multipart/form-data" action="send_form_email.php" method="post" id="ContactForm" >