2010-10-13 11 views
0

J'ai un script qui envoie un e-mail à moi-même à partir d'une page de contact:CodeIgniter PHP Mail Fonction ne fonctionne pas

if($_POST["submit"] == "Send Message") 
{ 
    $to = "[email protected]"; 
    $subject = "Message received from Contact Us"; 
    $message = "Email: ".$_POST["email"]."<br>"; 
    $message .= "Name: ".$_POST["name"]."<br>"; 
    $message .= "Message: ".$_POST["message"]."<br>"; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    echo mail($to,$subject,$message,$headers); 
    $messageSent = TRUE; 
} 

Il ne fait pas écho en fait 1. Mais je ne reçois pas les e-mails dans mon compte e-mail (gmail). J'utilise Codeigniter, j'ai vu qu'il y a une bibliothèque d'email, mais cela devrait fonctionner ne devrait-il pas?

J'ai quelques autres formes similaires, je ne veux pas vraiment intégrer cette bibliothèque si j'ai déjà PHP normal pour le faire.

Je sais que mon serveur est capable d'envoyer des emails parce que je l'ai déjà fait, j'ai le sentiment que c'est lié au codeigniter. S'il n'y a pas d'autres options, je suppose que je peux utiliser la bibliothèque et changer le code. Tout conseil à ce sujet aidera! Merci :)

+0

Essayez de faire juste '\ n' plutôt que' \ r \ n'. Je crois que PHP peut se faire embrouiller par cela. – lonesomeday

+0

c'est un bon point - bien que semble un vieux problème à en juger par un google rapide, je ne peux pas dire que je l'ai jamais connu moi-même si – Ross

Répondre

2

ce n'est pas lié à CI car vous n'utilisez aucune fonctionnalité CI.

raison pour laquelle vous n'utilisez pas l'aide par e-mail?

dans CI:

$this->load->library('form_validation'); 

$this->form_validation->set_rules('name', 'Name', 'trim|required'); 
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email'); 
$this->form_validation->set_rules('message', 'Message', 'required'); 

if($this->form_validation->run() == FALSE) 
{ 
    $this->load->view('contact-form'); 
} 
else 
{ 
    $this->load->library('email'); 

    $name = $this->input->post('name'); 
    $email = $this->input->post('email'); 
    $message= $this->input->post('message'); 

    $this->email->from($email, $name); 
    $this->email->to('[email protected]'); 

    $this->email->subject('Subject'); 
    $this->email->message($message); 
    if($this->email->send()) 
    { 
     echo $this->email->print_debugger(); 
     //redirect('contact-us/thanks', 'location'); 
    } 
    else 
    { 
    echo 'Something went wrong...'; 
    } 

} 

noter également que le courrier renvoie true/false selon si php a pu envoyer. il n'y a aucun moyen de dire si le message a été reçu.

essayer dans CI - voir s'il y a une différence dans les résultats

+0

Merci pour votre temps, je vais essayer ce –

+0

vous aurez besoin de l'aide de form_validation aussi, je l'ai omis de mon code d'origine. Voir la version modifiée – Ross

+0

N'UTILISEZ PAS CI CIPER SON CRAP VOIR: http://stackoverflow.com/questions/5262794/codeigniter-email-doesnt-work – Chris

0

Codeigniter ne peut pas être responsable de vos problèmes car mail() est une fonction php qui ne peut être écrasée que par un prétraitement de chaîne de caractères avant d'inclure un fichier source php.

+0

Ok, savez-vous pourquoi cela ne fonctionne pas? –

+1

try var_dump (mail ($ à, $ sujet, $ message, $ en-têtes)); Si cela est vrai, alors le courrier a livré votre email au serveur sortant et le problème réside soit dans votre en-tête, soit dans googlemail. – ITroubs

+0

BTW downvote-t-on chaque réponse qui ne vous donne pas le propper et la solution complète directement? – ITroubs

Questions connexes