2013-03-12 4 views
1

У меня есть страница «Свяжитесь с нами», если пользователи отправят форму. Затем электронная почта должна перейти к указанному электронному адресу.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' => '[email protected]', 
           '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('[email protected]', 'ddd'); 

         $list = array('[email protected]'); 
         $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: "[email protected]" 
    X-Sender: [email protected] 
    X-Mailer: CodeIgniter 
    X-Priority: 3 (Normal) 
    Message-ID: <[email protected]> 
    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-- 
+0

Все здесь выглядит хорошо. Проблема, вероятно, в другом месте. Либо неправильный адрес электронной почты, либо сервер может иметь проблемы с отправкой электронной почты в целом. Проверьте свои журналы сервера на наличие ошибок. Надеюсь, это не ваш настоящий SMTP-пароль. –

+0

@NicholasPickering Письмо и пароль, которые я упоминаю в своем заявлении, на 100% правильны. Но я не знаю, почему почта не отправляется после получения сообщения об успешном завершении, как показано выше. Или есть ли другой способ отправки почты в codeigniter? Я тоже попробую. Пожалуйста, помогите –

+0

Не могли бы вы показать свою конфигурацию/email.php? – Girish

ответ

0

Может быть, вы поэкспериментировать ретрансляцию ошибка Somtimes в Google сервер не принимает ретранслировать почту, образуют одну MTA в другую Входящие. Попробуйте протестировать, чтобы установить SMTP-диалог на ваш сервер, попробуйте отправить почту. Вот простой пример диалога SMTP:

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

Попробуйте отправить почту, если сервер отправляет сообщение об ошибке реле вы должны попробовать с другим сервером SMTP. Если нет, возможно, это несогласованность вашего php.

Но, по моему опыту, gmail всегда отрицает ретрансляционную почту для спама и соображений безопасности, если MTA не является доверенным агентом.

Другой причиной может быть то, что вы неправильно настроили DNS-серверы, и ваш MTA не может найти записи MX. Пример y ваш MTA - sendmail, он уведомляет php, что почта была успешно отправлена, но если вы просматриваете журналы sendmail, вы можете обнаружить, что хост недоступен.

Смежные вопросы