Codeigniter:无法发送电子邮件

时间:2013-03-12 05:43:08

标签: php codeigniter

我有一个“联系我们”页面,如果用户提交表单。然后,电子邮件应该转到指定的电子邮件。

提交表单后,我收到了成功消息,但我的收件箱/垃圾邮件中没有收到任何电子邮件。

我正在实时服务器上进行测试。

Pelase帮我解决了我的问题。

我的代码:

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

1 个答案:

答案 0 :(得分:0)

也许您正在尝试转发错误,因为Google服务器不接受从一个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日志,你会发现主机无法访问。