簡體   English   中英

Codeigniter:無法發送電子郵件

[英]Codeigniter: unable to send email

我有一個“聯系我們”頁面,如果用戶提交表單,請在該頁面上。 然后,電子郵件應轉到指定的電子郵件。

提交表格后,我收到成功消息,但收件箱/垃圾郵件中沒有看到任何電子郵件。

我正在實時服務器上進行測試。

請幫助我解決我的問題。

我的代碼:

<?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--

也許您正在嘗試中繼錯誤,因此Google Server有時不接受從一個MTA到另一個收件箱的中繼郵件。 嘗試測試以建立到服務器的SMTP對話框,然后嘗試發送郵件。 這是一個簡單的SMTP對話框示例:

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

如果服務器發送中繼錯誤,請嘗試發送郵件,您應該嘗試使用另一台SMTP服務器。 如果不是,也許是您的php的配置錯誤。

但是根據我的經驗,如果MTA不是受信任的代理,gmail總是出於垃圾郵件和安全原因而拒絕中繼郵件。

另一個原因可能是您沒有正確配置DNS服務器,並且您的MTA無法找到MX記錄。 例如,您的MTA是sendmail,它通知php郵件已成功發送,但是如果查看sendmail日志,您會發現主機無法訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM