2017-02-01 1 views
2

J'ai cherché le débordement de pile ainsi que les forums Ubuntu. J'écris un site web et je l'héberge moi-même en utilisant un serveur LAMP. J'ai un formulaire que l'utilisateur remplit et je veux qu'il envoie un email une fois que l'utilisateur clique sur le bouton soumettre. Jusqu'à présent, j'ai essayé sendmail, ssmtp, phpmailer, et en installant mailutils et en utilisant postfix. La raison pour laquelle je crois que c'est un problème avec le programme de messagerie est parce qu'après le test, je ne reçois aucune erreur du code et je suis incapable d'envoyer du courrier à partir de la ligne de commande. Je préférerais ne pas utiliser phpmailer car je ne veux pas coder en dur les mots de passe sur le site Web dans le cas où il serait compromis. J'apprécierais toute aide que quelqu'un pourrait me donner. J'ai inclus le script de mail si vous avez besoin de fichiers de configuration faites le moi savoir Merci d'avance.Difficulté à envoyer du courrier en php

<?php 
session_start(); 

if(isset($_POST['submit'])){ 
    $to = "[email protected]"; // this is your Email address 
    $from = $_POST['email']; // this is the sender's Email address 
    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 
    $subject = "Website Email"; 
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 

    $type = 'plain'; // or HTML 
    $charset = 'utf-8'; 

    $_SESSION['from'] = $_POST['email']; 
    $_SESSION['first_name'] = $_POST['first_name']; 
    $_SESSION['last_name'] = $_POST['last_name']; 
    $_SESSION['message'] = $_POST['message']; 

    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n"; 
    $headers .= 'To: ' . $to . '<' . $to . '>' . "\r\n"; 
    $headers .= 'From: ' . $from . '<' . $from . '>' . "\r\n"; 

    if($first_name == NULL || $last_name == NULL || $from == NULL || $message == NULL){ 
     header("Location: mailError.php"); 
     die(); 
    } 
    else{ 
     //$headers2 = "From:" . $to; 
     mail($to,$subject,$message,$headers); 
     header("Location: thanksPage.php"); 
     //mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender 
     //echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly."; 
    } 
} 
?> 
+0

Votre serveur dispose-t-il d'un serveur de messagerie configuré? Rappelez-vous que 'mail()' ne fait que passer le message à un serveur de messagerie, il ne l'envoie pas lui-même. – RiggsFolly

+0

Avez-vous essayé l'API Google Mail pour PHP? C'est vert pratique et rapide. Voici le lien pour en savoir plus: https://cloud.google.com/appengine/docs/php/mail/ – Rishi

+1

Ou il y a le 'phpMailer' presque ubiquitus https://github.com/PHPMailer/PHPMailer Alors vous n'avez pas besoin pour installer et maintenir un serveur de messagerie – RiggsFolly

Répondre

0

Si vous envoyez un message en utilisant l'hôte local, il n'enverra pas de courrier. Il nécessite un serveur live.

+0

Je me rends compte que, mais simplement installer sendmail, ou postfix faire le tour ou ai-je besoin de modifier les fichiers php.ini ou les fichiers de configuration de messagerie sur le serveur? – JMaggsDF

+0

mail() fonctionnera, référez-vous à quelques exemples ou vous pouvez utiliser des logiciels tierce comme phpmailer. – Tosif