2016-12-20 8 views
0

Ich benutze Shared Hosting-Plan. Ich habe mein Bestes versucht, aber ich kann dieses Problem nicht lösen. Hier ist mein Code. Ich versuchte zuerst mit gmail, aber arbeitete nicht, dann las ich irgendwo, dass die IP meines geteilten hosting-Plans von google dann schwarze Liste ist, ermüdete ich mein eigenes smtp dann imap Server, selbe Resultate funktioniert es gut auf localhost aber wieder bekomme ich das selbe Error.CodeIgniter Mail funktioniert nicht auf dem Server aber funktioniert gut localhost

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

class Contact extends CI_Controller { 

    /** 
    * Index Page for this controller. 
    * 
    * Maps to the following URL 
    *  http://example.com/index.php/welcome 
    * - or - 
    *  http://example.com/index.php/welcome/index 
    * - or - 
    * Since this controller is set as the default controller in 
    * config/routes.php, it's displayed at http://example.com/ 
    * 
    * So any other public methods not prefixed with an underscore will 
    * map to /index.php/welcome/<method_name> 
    * @see http://codeigniter.com/user_guide/general/urls.html 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form','url')); 
     $this->load->library(array('session', 'form_validation', 'email')); 
    } 
    public function index() 
    { 
     $this->load->helper('security'); 
     //set validation rules 
     $this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean|callback_alpha_space_only'); 
     $this->form_validation->set_rules('email', 'Emaid ID', 'trim|required|valid_email'); 
     $this->form_validation->set_rules('subject', 'Subject', 'trim|required|xss_clean'); 
     $this->form_validation->set_rules('message', 'Message', 'trim|required|xss_clean'); 

     //run validation on form input 
     if ($this->form_validation->run() == FALSE) 
     { 
      //validation fails 
     $this->load->view('head'); 
     $this->load->view('map'); 
     $this->load->view('footer_map'); 
     } 

     else 
     { 
      //get the form data 
      $name = $this->input->post('name'); 
      $from_email = $this->input->post('email'); 
      $subject = $this->input->post('subject'); 
      $message = $this->input->post('message'); 

      //set to_email id to which you want to receive mails 
      $to_email = '[email protected]'; 

      //configure email settings 
      $config['protocol'] = 'imap'; 
      $config['smtp_host'] = 'imap.example.com'; 
      $config['smtp_port'] = '587'; 
      $config['smtp_user'] = '[email protected]'; 
      $config['smtp_pass'] = 'example'; 
      $config['mailtype'] = 'html'; 
      $config['charset'] = 'iso-8859-1'; 
      $config['wordwrap'] = TRUE; 
      $config['newline'] = "\r\n"; //use double quotes 
      // $this->load->library('email', $config); 


      $this->email->initialize($config); 
      //send mail 
      $this->email->from($from_email, $name); 
      $this->email->to($to_email); 
      $this->email->reply_to($from_email, $name); 
      $this->email->subject($subject); 
      $this->email->message($message); 


      if ($this->email->send()) 
      { 
       // mail sent 
       $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Your mail has been sent successfully!</div>'); 
       redirect('contact/index'); 
      } 
      else 
      { 
       //error 
       echo $this->email->print_debugger(); 
       $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">There is error in sending mail! Please try again later</div>'); 
       redirect('contact/index'); 
      } 
     } 

    } 
    public function alpha_space_only($str) 
    { 
     if (!preg_match("/^[a-zA-Z ]+$/",$str)) 
     { 
      $this->form_validation->set_message('alpha_space_only', 'The %s field must contain only alphabets and space'); 
      return FALSE; 
     } 
     else 
     { 
      return TRUE; 
     } 
    } 
} 

ich diese Ausgabe

There is error in sending mail! Please try again later. 

Helfen Sie mir Jungs bin immer, ich bin müde

+0

Einige E-Mail-Server in gemeinsam genutzten Systemen erlauben Ihnen das Senden von E-Mails nur, wenn die Absenderadresse eine Adresse in dieser Domäne ist. Wenn Ihre Website also beispiel.com ist, muss der Absender [email protected] sein. Versuchen Sie, diese Einstellung vorzunehmen, und legen Sie die E-Mail-Adresse des Absenders als Reply To fest. – aynber

Antwort

0

Zeile 73 des Code Sie auf dem Laufenden es sieht aus wie die if-Anweisung für

$this->email->send() 

schlägt fehl, was dann folgendes ausführt:

else 
    { 
     //error 
     echo $this->email->print_debugger(); 
     $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">There is error in sending mail! Please try again later</div>'); 
     redirect('contact/index'); 
    } 

Ich würde die Konfiguration in email.php Check - in meinem Codeigniter 3 Projekt es sich hier:

html/system/libraries/Email.php 

Am Ende der this Codeigniter 3 API Seite einige Informationen über print_debugger und über die E-Mail Bibliothek. Es sollte dir helfen, in die richtige Richtung zu kommen.

Verwandte Themen