web-dev-qa-db-fra.com

PHP: envoyer du courrier dans localhost

Je souhaite envoyer des e-mails via du code php hébergé localement.

<?php 
$email  = "[email protected]"; 
$titre   = "My subject"; 
$message = "Text message !"; 
mail($email, $titre, $message); 
?>

Lorsque j'exécute ce code, j'obtiens l'erreur suivante:

Warning: mail() [<a href='function.mail'>function.mail</a>]: Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\...

Je suis entré dans le php.ini fichier et il semble être déjà bien configuré.

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

Comment puis-je réparer cela ?

Merci

23
Henri

Il est configuré pour utiliser localhost:25 pour le serveur de messagerie.

Le message d'erreur indique qu'il ne peut pas se connecter à localhost:25.

Par conséquent, vous avez deux options:

  1. Installer/configurer correctement un serveur SMTP sur le port localhost 25
  2. Modifiez la configuration pour pointer vers un autre serveur SMTP auquel vous pouvez vous connecter
15
Quentin

J'ai passé des heures là-dessus. Auparavant, je n'obtenais pas d'erreurs, mais je n'ai jamais envoyé de courrier. Finalement, j'ai trouvé une solution et je voudrais la partager.

<?php
include 'nav.php';
/*
    Download PhpMailer from the following link:
    https://github.com/Synchro/PHPMailer (CLick on Download Zip on the right side)
    Extract the PHPMailer-master folder into your xampp->htdocs folder
    Make changes in the following code and its done :-)

    You will receive the mail with the name Root User.
    To change the name, go to class.phpmailer.php file in your PHPMailer-master folder,
    And change the name here: 
    public $FromName = 'Root User';
*/
require("PHPMailer-master/PHPMailerAutoload.php"); //or select the proper destination for this file if your page is in some   //other folder
ini_set("SMTP","ssl://smtp.gmail.com"); 
ini_set("smtp_port","465"); //No further need to edit your configuration files.
$mail = new PHPMailer();
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPSecure = "ssl";
$mail->Username = "[email protected]"; //account with which you want to send mail. Or use this account. i dont care :-P
$mail->Password = "trials.php.php"; //this account's password.
$mail->Port = "465";
$mail->isSMTP();  // telling the class to use SMTP
$rec1="[email protected]"; //receiver. email addresses to which u want to send the mail.
$mail->AddAddress($rec1);
$mail->Subject  = "Eventbook";
$mail->Body     = "Hello hi, testing";
$mail->WordWrap = 200;
if(!$mail->Send()) {
echo 'Message was not sent!.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo  //Fill in the document.location thing
'<script type="text/javascript">
                        if(confirm("Your mail has been sent"))
                        document.location = "/";
        </script>';
}
?>
5
user2684198

Vous devrez installer un serveur de messagerie local pour ce faire. Si vous souhaitez l'envoyer à des adresses e-mail externes, il peut se retrouver dans des e-mails indésirables ou ne pas arriver du tout.

Un bon serveur de messagerie que j'utilise (je l'utilise sous Linux, mais il est également disponible pour Windows) est Axigen: http://www.axigen.com/mail-server/download/

Vous devrez peut-être une certaine expérience avec les serveurs de messagerie pour l'installer, mais une fois qu'il fonctionne, vous pouvez faire tout ce que vous voulez avec.

5
Menno

essaye ça

ini_set("SMTP","aspmx.l.google.com");
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: [email protected]" . "\r\n";
mail("[email protected]","test subject","test body",$headers);
1
Nisanth Kumar