web-dev-qa-db-fra.com

Comment configurer PHP envoyer un e-mail?

Je dois envoyer un courrier électronique aux utilisateurs de mon site Web à l'aide d'un script php. J'ai essayé d'utiliser la fonction mail en php.
Mon code est le suivant:

  $to = "[email protected]";
  $subject = "Test mail";
  $message = "My message";
  $from = "[email protected]";
  $headers = "From:" . $from;
  mail($to,$subject,$message,$headers);

Lorsque j'essaie de lancer le programme, voici ce que je reçois:

 Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set().

S'il vous plaît, dites-moi quelle adresse inclure dans la variable $ from. Ai-je besoin d'un serveur smtp pour cela? Comment envoyer des mails en utilisant un localhost? S'il vous plaît dites-moi ce qu'il faut éditer dans le fichier php.ini

Je suis nouveau à tout cela .. S'il vous plaît aidez-moi ..

5
abcdefgh

Utilisez plutôt PHPMailer: https://github.com/PHPMailer/PHPMailer

Comment l'utiliser:

require('./PHPMailer/class.phpmailer.php');
$mail=new PHPMailer();
$mail->CharSet = 'UTF-8';

$body = 'This is the message';

$mail->IsSMTP();
$mail->Host       = 'smtp.gmail.com';

$mail->SMTPSecure = 'tls';
$mail->Port       = 587;
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;

$mail->Username   = '[email protected]';
$mail->Password   = '123!@#';

$mail->SetFrom('[email protected]', $name);
$mail->AddReplyTo('[email protected]','no-reply');
$mail->Subject    = 'subject';
$mail->MsgHTML($body);

$mail->AddAddress('[email protected]', 'title1');
$mail->AddAddress('[email protected]', 'title2'); /* ... */

$mail->AddAttachment($fileName);
$mail->send();
4
pooria

Pour pouvoir envoyer des courriels, vous devez installer un service smtp sur votre ordinateur local. Il existe de nombreuses possibilités de recherche librement sur google. 

Si vous possédez un serveur ou un serveur virtuel virtuel, téléchargez le script et tout fonctionnera correctement. 

2
user2541120

Lorsque vous rencontrez des problèmes, un bon point de départ est généralement le manuel . La page sur configuration d'e-mail explique qu'il existe une grande différence entre la commande mail PHP s'exécutant sur MSWindows et tous les autres systèmes d'exploitation. Lorsque vous posez une question, il est judicieux de fournir des informations pertinentes sur la configuration de cette partie de votre système et sur le système d'exploitation sur lequel elle s'exécute.

Votre PHP est configuré pour communiquer avec un serveur SMTP - la valeur par défaut pour une machine MSWindows, mais aucun MTA n'est installé ou il bloque les connexions. Tandis que pour un site Web commercial exécutant votre propre MTA, il est invraisemblable de figurer en bonne place dans la liste des tâches à effectuer, ce n’est pas un exercice trivial - vous devez vraiment savoir ce que vous faites pour en configurer un et le faire fonctionner de manière sécurisée. Dans votre cas, il serait beaucoup plus logique d'utiliser un service configuré et géré par quelqu'un d'autre.

Puisque vous vous connecterez à un MTA distant en utilisant une adresse Gmail, vous devriez probablement utiliser le serveur de Gmail. vous aurez besoin de l'authentification SMTP et probablement de la prise en charge de SSL - qui ne sont pas prises en charge par la fonction mail () de PHP. Voici un exemple simple utilisant swiftmailer avec gmail ou voici un exemple utilisant phpmailer

1
symcbean

Vous ne pourrez pas envoyer de message via les serveurs de messagerie d'autres personnes. Vérifiez auprès de votre hébergeur comment envoyer des emails. Essayez d'envoyer un email de votre serveur sans PHP, vous pouvez utiliser n'importe quel client de messagerie comme Outook. Juste après que cela fonctionne, essayez de configurer PHP.ini avec la configuration SMTP (envoi d’e-mail) de votre client de messagerie.

1
neves

Pour résoudre ce problème, vous devez consulter votre fichier PHP.ini, ainsi que la configuration des services de messagerie installée sur votre serveur.

Mais mon meilleur conseil à vous est d’oublier la fonction mail(). Cela dépend des paramètres PHP.INI, sa configuration est différente selon la plate-forme (Linux ou Windows), et il ne peut pas gérer l'authentification SMTP, ce qui est un gros problème actuellement. Trop de maux de tête.

Utilisez plutôt "PHP Mailer" ( http://phpmailer.worxware.com ), il s’agit d’une classe PHP disponible gratuitement et peut gérer presque tous les serveurs SMTP, internes ou externes, avec ou sans. authentification, cela fonctionne exactement de la même façon sous Linux et Windows, et cela ne dépend pas des paramètres PHP.INI. Il est livré avec de nombreux exemples, il est très puissant et facile à utiliser.

0
Marcovecchio

configurez votre php.ini comme ceci `SMTP = smtp.gmail.com

[mail function]

; XAMPP: Commentez ceci si vous voulez travailler avec un serveur SMTP comme Mercury

; SMTP = smtp.gmail.com

; smtp_port = 465

; Pour Win32 seulement .; http://php.net/sendmail-from ; sendmail_from = postmaster @ localhost

0
achref akrouti