1

ユーザーがフォームを送信する場合は、「お問い合わせ」ページがあります。次に、電子メールは指定された電子メールに送信されます。

フォームを送信した後、成功メッセージが表示されますが、受信トレイ/スパムにメールがありません。

私は自分のライブサーバーでテストしています。

私の問題を解決するのを手伝ってください。

私のコード:

<?php
        if ( ! defined('BASEPATH')) exit('No direct script access allowed');

        class contact extends CI_Controller  {
            public function __construct()
            {
                parent:: __construct(); 
                $this->load->helper('url');
                $this->load->helper('form');
                $this->load->library('session');
                $this->load->library('email');
                $this->load->model('shopmodel');
                $this->load->model('contactusmodel');
                $this->load->library('form_validation'); 
            } 

            function index()
            {
                 $this->form_validation->set_error_delimiters(' <li  class="errorlist">', '</li>')->set_rules('fullname', 'Name','trim|required|min_length[5]|max_length[50]|xss_clean');
                 $this->form_validation->set_error_delimiters('<li  class="errorlist">', '</li>')->set_rules('countryname', 'Country','trim|required|min_length[2]|max_length[50]|xss_clean');
                 $this->form_validation->set_error_delimiters('<li  class="errorlist">', '</li>')->set_rules('email', 'Email', 'trim|required|valid_email');
                 $this->form_validation->set_error_delimiters('<li  class="errorlist">', '</li>')->set_rules('contactdetails', 'Contact Details','trim|required|min_length[40]|max_length[2000]|xss_clean');
                 $data=$this->contactusmodel->contactusmodel();
                 $data["query"] = $this->shopmodel->getshopdetailsById(199);//taking data as shop id 199 

                  if($this->form_validation->run() === FALSE)
                  {  
                        $data['ffullname']['value'] = $this->input->post('fullname');
                        $data['fcountryname']['value'] =$this->input->post('email');
                        $data['femail']['value'] = $this->input->post('countryname'); 
                        $data['fcontactdetails']['value'] =$this->input->post('contactdetails'); 
                        $this->load->view('contact/contact',$data);  
                  }

                  else if ($this->form_validation->run() === TRUE)
                  {
                      $name=$this->input->post('fullname');
                      $sendersemail=$this->input->post('email');
                      $fromcountry=$this->input->post('countryname');
                      $message=$this->input->post('contactdetails'); 

                      $config = Array(
                        'protocol' => 'smtp',
                                'smtp_host' => 'ssl://smtp.googlemail.com',
                                'smtp_port' => 465,
                                'smtp_user' => 'ashutosh10g@gmail.com',
                                'smtp_pass' => 'xxxxxxxx',
                                'mailtype'  => 'html', 
                                'charset' => 'utf-8',
                                'wordwrap' => TRUE

                     );

                       $this->load->library('email', $config);
                       $this->email->set_mailtype("html");
                        $this->email->set_newline("\r\n");
                        $email_body ="<div>hello world</div>";
                        $this->email->from('ashutosh10g@gmail.com', 'ddd');

                        $list = array('ashutosh10g@gmail.com');
                        $this->email->to($list);
                        $this->email->subject('Testing Email');
                        $this->email->message($email_body);

                        $this->email->send();
                        echo $this->email->print_debugger(); 
                  }
                  else{
                      $this->load->view('contact/contact',$data);  
                  }
            }
        }
        ?>

私が得ている出力は次のとおりです。

    [code]
    Your message has been successfully sent using the following protocol: mail
    From: "ddd" 
    Return-Path: 
    Reply-To: "ashutosh10g@gmail.com" 
    X-Sender: ashutosh10g@gmail.com
    X-Mailer: CodeIgniter
    X-Priority: 3 (Normal)
    Message-ID: <513e1456185d4@gmail.com>
    Mime-Version: 1.0
    Content-Type: multipart/alternative; boundary="B_ALT_513e1456185e3"


    =?utf-8?Q?Testing_Email?=
    This is a multi-part message in MIME format.
    Your email application may not support this format.

    --B_ALT_513e1456185e3
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit

    hello world


    --B_ALT_513e1456185e3
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: quoted-printable

    <div>hello world</div>

    --B_ALT_513e1456185e3--
4

1 に答える 1

0

Google サーバーが 1 つの MTA から別の受信トレイへのリレー メールを受け入れない場合があるため、リレー エラーを実験している可能性があります。サーバーへの SMTP ダイアログを確立するテストを行い、メールを送信してみてください。簡単な SMTP ダイアログの例を次に示します。

http://www.soi.wide.ad.jp/class/20000009/slides/11/6.html

サーバーがリレー エラーを送信する場合は、メールの送信を試みます。別の SMTP サーバーで試してください。そうでない場合は、php の設定が間違っている可能性があります。

しかし、私の経験では、MTA が信頼できるエージェントでない場合、gmail は常にスパムとセキュリティ上の理由からメールの中継を拒否します。

もう 1 つの理由として、DNS サーバーが正しく構成されておらず、MTA が MX レコードを見つけられないことが考えられます。例 y あなたの MTA は sendmail で、メールが正常に送信されたことを php に通知しますが、sendmail ログを調べると、ホストに到達できないことがわかります。

于 2013-03-12T13:54:44.127 に答える