web-dev-qa-db-fra.com

Définition des détails SMTP pour la fonction php mail ()

J'ai cherché une réponse et essayé beaucoup de choses à ce problème.

Mon script fonctionne très bien sur mon hébergeur mais lors du déplacement vers un autre serveur dédié, le courrier n'est jamais remis. Maintenant, je dois configurer le serveur SMTP, mais je ne comprends pas.

Utilisation des applications Gmail btw. Voici à quoi ressemble le code.

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("@",$email )){
    $error.="Invalid email address entered";
    $errors=1;
}
if($errors==1) echo $error;
else{
    $values = array ('name','email','telephone','message');
    $required = array('name','email','telephone','message');

    $your_email = "[email protected]";
    $email_subject = "New Messag: ".$_POST['subject'];
    $email_content = "New message:\n";

    foreach($values as $key => $value){
      if(in_array($value,$required)){
        if ($key != 'subject' && $key != 'telephone') {
          if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
        }
        $email_content .= $value.': '.$_POST[$value]."\n";
      }
    }

    if(@mail($your_email,$email_subject,$email_content)) {
        echo 'Message sent!'; 
    } else {
        echo 'ERROR!';
    }
}

$mail->Mailer = "smtp";  
$mail->Host = "ssl://smtp.gmail.com";  
$mail->Port = 465;  
$mail->SMTPAuth = true; // turn on SMTP authentication  
$mail->Username = "[email protected]"; // SMTP username  
$mail->Password = "password"; // SMTP password 

?>

Alors, comment puis-je définir les paramètres SMTP correctement?

11
inpbox

Sous Windows uniquement: Vous pouvez essayer d'utiliser la fonction ini_set() Docs pour le SMTP Docs et smtp_port Docs paramètres:

ini_set('SMTP', 'mysmtphost'); 
ini_set('smtp_port', 25); 
5
heximal

Vérifiez votre php.ini, vous pouvez y définir ces valeurs.

Voici la description dans le manuel php: http://php.net/manual/en/mail.configuration.php

Si vous souhaitez utiliser plusieurs serveurs SMTP différents dans votre application, je vous recommande d'utiliser un framework de mailing "plus grand", p.e. Swiftmailer

2
Bjoern

Essayez de votre serveur dédié de telnet à smtp.gmail.com sur le port 465. Il pourrait être bloqué par votre fournisseur d'accès Internet

0
Tudor Constantin