2016-07-19 14 views
2

私はウェブサイトを持っていますが、私はプロではありませんが、すでに私はsendmailの問題を除いて完了しています。 「今すぐ送信」ボタンをクリックすると「メッセージに感謝」というメッセージが画面に表示されますが、電子メールは受信されません。sendmail.phpを修正するにはどうしたらいいですか?

  • 私はそれは私がするphpinfo senmail_pathは/ usr/sbinに/ sendmailの-t -i

  • 確認私がオープンするphpinfo SMTPポートをチェックし、25

  • があまりに

  • ないスパムボックスをオンにしました

  • 私はホスティング会社に電子メールを送り、彼らはすべてのサーバー側があなたのsendmailスクリプトをチェックすることが大丈夫だと言った。

ここではsendmail.phpファイルです。

<?php 
$name  = @trim(stripslashes($_POST['name'])); 
$from  = @trim(stripslashes($_POST['email'])); 
$subject = @trim(stripslashes($_POST['subject'])); 
$message = @trim(stripslashes($_POST['message'])); 
$to   = '[email protected]'; 

$headers = array(); 
$headers[] = "MIME-Version: 1.0"; 
$headers[] = "Content-type: text/plain; charset=iso-8859-1"; 
$headers[] = "From: {$name} <{$from}>"; 
$headers[] = "Reply-To: <{$from}>"; 
$headers[] = "Subject: {$subject}"; 
$headers[] = "X-Mailer: PHP/".phpversion(); 

mail($to, $subject, $message, $headers); 
die; 

問題の原因を調べるにはヘルプが必要です。私は他の質問をチェックし、何とかそれは私のために役に立たなかった。 ありがとうございます。

P.S.誰かがフォームのHTMLコードを必要としているかどうかはわかりませんが、それを追加することも良いと思います。

<div class="contact-form wow fadeIn" data-wow-duration="1000ms" data-wow-delay="600ms"> 
     <div class="row"> 
     <div class="col-sm-6"> 
      <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> 
      <div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms"> 
       <div class="col-sm-6"> 
       <div class="form-group"> 
        <input type="text" name="name" class="form-control" placeholder="Name" required> 
       </div> 
       </div> 
       <div class="col-sm-6"> 
       <div class="form-group"> 
        <input type="email" name="email" class="form-control" placeholder="Email Address" required> 
       </div> 
       </div> 
      </div> 
      <div class="form-group"> 
       <input type="text" name="subject" class="form-control" placeholder="Subject" required> 
      </div> 
      <div class="form-group"> 
       <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required></textarea> 
      </div>       
      <div class="form-group"> 
       <button type="submit" class="btn-submit">Send Now</button> 
      </div> 
      </form> 
     </div> 
+0

に基づいてsend_mail機能の例は何を言うのですか? –

+0

'mail($ to、$ subject、$ message、$ headers)'これを 'if(){}'の中に置き、 'FALSE'を返すかどうかを調べます。 –

+0

ええ、 'mail()'の結果をチェックするのはどうですか? 'var_dump(mail ..)'あなたがファイルを送信しなかったと報告した場合、おそらくあなたのサーバー構成に問題があるでしょう。 – Christian

答えて

1

$headersパラメータが正しくありません。 でなく、arrayである必要があります。 PHP manual

電子メールヘッダーの最後に挿入する文字列。

これは通常、余分なヘッダー(From、Cc、およびBcc)を追加するために使用されます。複数の余分なヘッダーは、CRLF(\ r \ n)で区切る必要があります。外部データを使用してこのヘッダーを構成する場合は、不要なヘッダーを挿入できないようにデータをサニタイズする必要があります。

あなたはそうのような問題を解決することができるはずです:PHPから

mail($to, $subject, $message, implode("\r\n", $headers)); 
+0

こんにちはtimclutton私はただ電子メールを受信しますが、トピックメッセージと送信者名はありません。空の電子メール。何が間違っている可能性がありますか? – Itrader

+0

'mail'を呼び出す前に、変数の内容をチェックして自分でデバッグする必要があります。すべての変数の内容を見るには、 'var_dump($ to、$ subject、$ message、implode(" \ r \ n "、$ headers)); – timclutton

0

メール機能は、sendmailが適切に設定されていない場合に使用するトリッキーです。代わりに、私はhttps://github.com/PHPMailer/PHPMailerを使用しました(あなたはフリークアウトしないで、class.phpmailer.phpとclass.smtp.phpから2つのファイルしか必要ありません)。ログは

phpmailerの

function send_mail($subject, $body, $altbody, $to, $name, $attach = '') 
{ 
$mail = new PHPMailer(true); 
$mail->IsHTML(true); 
$mail->IsSMTP(); 
$mail->CharSet = 'text/html; charset=UTF-8;'; 

$mail->Host  = "some.external.smtp.server"; // SMTP server example 
$mail->SMTPDebug = 0;      // enables SMTP debug information (for testing) 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->Port  = port_for_external_smtp;      // set the SMTP port for the GMAIL server 
$mail->Username = "username_for_external_smtp_server";  // SMTP account username example 
$mail->Password = "pass";    // SMTP account password example 

try 
    { 
     $mail->setFrom('address', 'name'); 
     $mail->addReplyTo($to, $name); 
     $mail->addAddress($to, $name); 
     $mail->Subject = $subject; 
     $mail->Body = $body; 
     $mail->isHTML(true); 
     $mail->AltBody = $altbody; // altbody if for text only mail 
     if (!($attach == '')) 
     { 
       $mail->AddAttachment($attach); // attachment 
      } 
     $mail->send(); 
     } 
catch (phpmailerException $e) 
    { 
     echo $e->errorMessage(); //Pretty error messages from PHPMailer 
     } 
catch (Exception $e) 
    { 
     echo $e->getMessage(); //Boring error messages from anything else! 
     } 
} 
+0

アレックスは答えてくれてありがとうございます。すでに私はフリークアウトしています)私はプログラマーではなく、このisueの後にはPHPをもう聞く必要は全くありません。ちょうど私はそれを修正する簡単な方法を見つける必要があります。 – Itrader

関連する問題