2011-07-01 9 views
1

私は電子メールを送信するためにPHPを使用しています。電子メールの値は、フォームの入力に依存します。しかし何らかの理由で、メールは突然送信されません。それは以前のことでした。私のコードに何が問題なのですか?PHPのメール機能

注文はデータベースに正しく配置されているため、エラーはありません。

if ($order->addOrder($_DB)) { 
$user  = "SafetyCam.be";        
$verzonden  = FALSE;        

    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $address = $_POST['address']; 
    $zip  = $_POST['zip']; 
    $place  = $_POST['place']; 
    $country = $_POST['country']; 
    $phone  = $_POST['phone']; 
    $email  = $_POST['email']; 
    $twogig = $_POST['vn_qty']; 
    $fourgig = $_POST['ja_qty']; 
    $total  = $_POST['total']; 

    $totaal = (($twogig * 50) + ($fourgig *80) + 2.5); 

    $headers = 'From: [email protected]'; 

$to  = '[email protected]'; 
$subject = 'Bevestiging bestelling'; 
$message = 'Hello $firstname, 

     You placed the following order on our website. 

     - $twogig x 2GB SafetyCams ordered 
     - $fourgig x 4GB SafetyCams ordered 
     + shippingcosts (2,5 EUR) 

     The total cost for this order amounts to $totaal EUR. 

     Your products will be delivered as quickly as possible after receipt of your payment. 
     Please transfer the order amount of $totaal EUR into account X.      

     After payment, the products will be sent to the following address: 

     $firstname $lastname 
     $address 
     $zip $place 
     $country 

     We hope you will be very happy with your purchase. 

     Sincerely yours"; 


    if (mail($to, $subject, $message, $headers)) { 
       $verzonden = TRUE; 
       $feedback = '<div class="feedbackheader">Thanks</div><br/>'; 

      } else { 
       $verzonden = FALSE; 
       $feedback = '<div class="feedbackheader">Error!</div>';    } 
      } 
     else { 
      $feedback = '<div class="feedbackheader">Error!</div>'; 
     } 
} 
+0

コードが不完全で、 – fdaines

+0

は、あなたが真剣にユーザーが入力した任意のデータを消毒ないです...残りのコードを貼り付けてください? –

+0

申し訳ありませんが、コードは完全ですが、フォーマットに問題があります。 – fdaines

答えて

0

私はではSwiftMailerを使用します。

require_once('../lib/swiftMailer/lib/swift_required.php'); 
function sendEmail(){ 
    //Sendmail 
    $transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs'); 

    //Create the Mailer using your created Transport 
    $mailer = Swift_Mailer::newInstance($transport); 

    $body="Dear $fname,\n\nYour job application was successful. \n\nYours,\n\nEamorr\n\n\n\n\n\n\n"; 


    //Create a message 
    $message = Swift_Message::newInstance('Subject goes here') 
    ->setFrom(array($email => "[email protected]")) 
    ->setTo(array($email => "$fname $lname")) 
    ->setBody($body); 

    //Send the message 
    $result = $mailer->send($message); 
} 
3

なぜあなたのメール$メッセージを一重引用符で開き、二重引用符で終わらせますか?

特にPHP変数を内部で使用しているので、二重引用符を両方とも開いて終了する必要があります。

$message = 'Hello $firstname"; //Wrong 

$message = "Hello $firstname"; // Works 
+0

わかりましたが、意味がありますが、助けてくれませんでした... – Michiel

1

あなたはアポストロフィ'と「メッセージ」の文字列を開いたが、引用符"でそれをクローズしようとしました。 SOのシンタックスハイライターはそれを手放す!

1

あなたは、単一引用符を使用して変数$message = 'Hello $firstname,を開始し、二重引用符で終了している、あなたは何をする必要があるかであるあなたが文句を言わないvaribleのためのあなたの変数の内容をスキャンし、単一引用符PHPでそれを置けば

$message = "Hello $firstname 

を作ります$のFIRSTNAMEのように

+0

あまりにも悪くて、うまくいかなかった.. – Michiel

1

あなた$message変数は'で文字列を開始しますが、"でそれを終了し、それの後にすべてのコードは、あなたの$feedbackを定義するときに起こる別の'までの変数に含まれています。

基本的には文字列を閉じないので、コード全体が変更されています。カラーコードを使用している場合は、これを見たはずです(私はあなたの質問からそれを見ることができます)。

また、一重引用符を使用している場合は、インライン変数を使用できません。

$var = 1; 
echo '$var'; // ouput: $var; 
echo "$var"; // output: 1 
1

メッセージ文字列を一重引用符( ')で開始し、二重引用符で終了すると、ロジックが正しく解析されません。