2013-06-06 6 views
5

Ho impostato il mio controller e il mio modulo di contatto è stato configurato. Ma quando faccio clic su "Invia" nella mia pagina di contatto, non ricevo errori ma non ricevo email. Qualcuno può aiutarmi a capire perché in realtà non sto ricevendo l'email? Apprezzo qualsiasi aiuto. Ecco il mio codice per il controller:Come inviare correttamente un'e-mail in un modulo di contatto tramite CodeIgniter?

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

class Home extends CI_Controller { 
    public function index() 
    { 
     $this->template->build('home'); 
    } 

    public function email() { 
     $name = $this->input->post('name'); 
     $email = $this->input->post('email'); 
     $phone_number = $this->input->post('phone_number'); 
     $message = $this->input->post('message'); 
     $this->load->library('email'); 
     $this->email->from($email, 'Your Name'); 
     $this->email->to('[email protected]'); 
     $this->email->cc('[email protected]'); 
     $this->email->bcc('[email protected]'); 
     $this->email->subject('Email Test'); 
     $this->email->message(
      'My name is'.$name.', Im testing this email class. My email is '.$email. '. My Phone number is '.$phone_number. 
     ' This is my message '.$message. ' Thanks!!' 
     ); 
     $this->email->send(); 
     echo $this->email->print_debugger(); 
     $this->template->build('home'); 
    } 
} 

E qui è il mio codice per il mio contatto visuale pagina:

<div class="inner-content" id="contact-content"> 

    <title>CSS3 Contact Form</title> 
    <div id="contact"> 
    <h1>Send an email</h1> 
    <form method="post" action="/home/email"> 
     <fieldset> 
     <label for="name">Name:</label> 
     <input name="name" id="name" type="text" placeholder="Enter your full name"> 
     <label for="email">Email:</label> 
     <input name="email" id="email" type="email" placeholder="Enter your email address"> 
     <label for="message">Message:</label> 
     <textarea name="message" id="message" placeholder="Type your message here..."></textarea> 
     <input type="submit" value="Send message"> 
     </fieldset> 
    </form> 
    </div> 
</div> 
+1

Innanzitutto assicurati di aver installato il server smtp per inviare correttamente l'e-mail. –

+0

Cosa echeggia il debugger? –

+0

Il risultato è esattamente questo: Il messaggio è stato inviato con successo utilizzando il seguente protocollo: la posta Da: "Your Name" Return-Path: Cc: [email protected] Ccn: li @ their- example.com Reply-To: "[email protected]" X-Sender: [email protected] X-Mailer: CodeIgniter X-Priority: 3 (normale) Message-ID: <51b0de09bea00 @ gd. com> Mime-Version: 1.0 Content-Type: text/plain; charset = utf-8 Content-Transfer-Encoding: 8bit =? utf-8? Q? Email_Test? = Mi chiamo isdfdfdf, sto testando questa classe email. La mia email è [email protected] Il mio numero di telefono è Questo è il mio messaggio dfdfdfdfdfdadafsafsdfsfdsfdsfsdf Grazie !! –

risposta

1

abilitare php_openssl.dll in php.ini di file e provare a utilizzare Gmail. Funzionerà la risposta di Pascal Spruit o Omade. Non dimenticare di riavviare il server locale dopo la modifica nel file php.ini.

0

Se aiuta tenta di configurare classe e-mail prima

$config['protocol'] = 'sendmail'; 
$config['mailpath'] = '/usr/sbin/sendmail'; 
$config['charset'] = 'iso-8859-1'; 
$config['wordwrap'] = TRUE; 

$this->email->initialize($config); 

Try per aggiungere questo codice alla funzione email-> send() per vedere qual è la risposta

Cambia $this->email->send(); Per

if (! $this->email->send()) 
{ 
    echo 'Some error in sending email'; 
} 

Se la stringa di errore non eco allora il problema non è con CI, la sua, probabilmente con server di posta.

+0

Grazie per il suggerimento, ma non sto ricevendo alcuna uscita. Quando faccio clic su "Invia", viene visualizzata la pagina di Firefox che indica: Documento scaduto Questo documento non è più disponibile. Il documento richiesto non è disponibile nella cache di Firefox. –

+1

Prova a inviare email a gmail. Alcuni server potrebbero bloccare le e-mail di prova. –

+0

L'ho inviato a gmail. Ancora non ha funzionato. –

0

Provare a utilizzare Gmail

$config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => '465', 
     'smtp_user' => '[email protected]', 
     'smtp_pass' => 'password', 
     'mailtype' => 'html', 
     'starttls' => true, 
     'newline' => "\r\n" 
    ); 

$this->load->library('email', config); 
$this->email->from('[email protected]', 'George'); 
$this->email->to('[email protected]'); 
$this->email->subject('hey this is an email'); 
$this->email->message('this is the content of the email'); 
$this->email->send(); 
echo $this->email->print_debugger(); 
1
$config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => '465', 
     'smtp_user' => '[email protected]', 
     'smtp_pass' => 'yourpassword', 
     'mailtype' => 'html', 
     'starttls' => true, 
     'newline' => "\r\n" 
    ); 

$this->load->library('email', $config); 
$this->email->from('[email protected]', 'Jodie'); 
$this->email->to('[email protected]'); 
$this->email->subject('testing email'); 
$this->email->message('This shows the email worked'); 
$this->email->send(); 
echo $this->email->print_debugger(); 
0

Mi sono anche bloccato con lo stesso problema, ma trovo una cosa su ogni cosa che va avanti con successo su Gmail, ma solo la posta elettronica non funziona.

se si invia $email = $this->input->post('useremail'); che non va su gmail. La mail show mail è stata inviata con successo o, in ogni caso, si passa alla condizione "se", ma la posta non viene inviata nella casella postale. Ma se mi passano qualcos'altro come nome password del telefono o qualsiasi cosa, tutto va bene. C'è qualche restrizione in CI o PHP per email. Perché sto inviando contenuto html con successo sul server ma solo email non va. Un'altra cosa che ogni cosa invia include email ma tramite host locale, ma il mio sito web è su hostinger e config tutto e tutto va bene ma solo email non passare modulo,

Se qualcuno ha qualche idea su questo- come includere la posta elettronica sul modulo di contatto, quindi applaudire le tue conoscenze con me.

+0

Non ho ancora la soluzione completa, ma se vuoi controllare commenta il tuo $ email = $ this-> input-> post ('email '); e rimuovi anche la parte relativa ai messaggi del modulo, quindi controlla, sii che ricevi posta nella tua casella di posta elettronica. –