web-dev-qa-db-fra.com

XAMPP Sendmail avec un compte Gmail

J'essaie de configurer Sendmail via XAMPP pour envoyer un courrier électronique. Dans mon sendmail.ini j'ai ces paramètres:

# Set default values for all following accounts.

logfile "C:\xampp\sendmail\sendmail.log
account Gmail
tls on
port 587
tls_certcheck off
Host smtp.gmail.com
from [email protected]
auth on
user [email protected]
password mypassword

account default : Gmail

J'ai créé un script de test comme ceci:

$to = "[email protected]";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$headers = "From: [email protected]" . "\r\n";
if (mail($to, $subject, $body, $headers)) {
    echo ("Message successfully sent!");
} else {
    echo ("Message delivery failed...");
}

Je reçois un message pour dire que l'e-mail a été envoyé mais il n'arrive jamais et dans les journaux, je reçois:

sendmail: Erreur lors de la livraison: Doit d'abord émettre une commande STARTTLS.

Est-ce que quelqu'un sait ce que le problème pourrait être ici?

Merci d'avance!

Gaz

18
Gaz

C'est ce qui a fonctionné pour moi. J'espère que personne d'autre ne brûlera de l'huile pour comprendre cela comme je l'ai fait.

Voici mon sendmail.ini 

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=yourgmailpassword
[email protected]

php/php.ini ---- en principe, tout commente sauf sendmail_path & mail.add_x_header

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

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

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "C:\xampp\Apache\logs\php_mail.log"

Cela a fonctionné pour moi après avoir mis à jour les fichiers sendmail (les anciens ne supportent pas smtp)

  • allez à http://glob.com.au/sendmail/ et récupérez le dernier fichier ZIP sendmail
  • décompressez sur le bureau et copiez les fichiers dans votre dossier\xampp\sendmail en remplaçant tout ce qui se trouvait là-bas.TOUT! 
  • Maintenant, ouvrez sendmail.ini et copiez-collez ce que j'ai montré ci-dessus (enlevez tout d'abord ce fichier ou faites simplement un commentaire!)
  • REMARQUE: vous n'avez pas besoin que les serveurs Mercury soient démarrés pour cela.

Je faisais une récupération de mot de passe php sur localhost quand j'ai rencontré ce problème. Je devais envoyer aux utilisateurs leur mot de passe. - votre php a l'air okey

35
braviato

Bon, aujourd'hui, la meilleure réponse n'a pas fonctionné pour moi. Mais cela a:

dans sendmail.ini:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=****@gmail.com
auth_password=*******
force_sender=****@gmail.com

dans php.ini:

[mail function]
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Basé sur port @: http://support.google.com/mail/bin/answer.py?hl=fr&answer=13287

13
aubreypwd

Tout ce que je devais faire était d'activer l'option "Autoriser les applications moins sécurisées à accéder à votre compte". J'imagine que c'est une alternative à la création d'un mot de passe spécifique à l'application.

https://support.google.com/accounts/answer/6010255 pour informations

https://www.google.com/settings/security/lesssecureapps pour le commutateur

Cela vaut peut-être la peine de le désactiver une fois que vous avez terminé pour des raisons de sécurité. 

3
Dean_Wilson

Juste pour ajouter aux réponses déjà excellentes. Assurez-vous d’exécuter XAMPP en tant qu’administrateur. C'est ce qui a réglé le problème pour moi. 

1
Julian

Voici les dernières exigences du serveur SMTP de Google:

  1. Adresse du serveur Gmail SMTP: smtp.gmail.com
  2. Mot de passe SMTP Gmail: (Votre mot de passe Gmail)
  3. Port Gmail SMTP (TLS): 587
  4. Port Gmail SMTP (SSL): 465
  5. Gmail SMTP TLS/SSL requis: Oui

Configuration requise pour Google SMTP

Si vous utilisez uniquement SSL, le test de vérification Captcha requis complique les choses. Je règle donc mon SSL sur auto, qui essaiera TLS si SSL échoue.
 enter image description here

1
Ryan Santos

a) Modifiez php.ini Recherchez php.ini dans le chemin du fichier “[Lettre du lecteur]: [répertoire XAMPP]\php”. par exemple. C:\xampp\php\php.ini

Recherchez sendmail_path dans votre fichier php.ini et supprimez le point-virgule «;» avant celui-ci [le mien n'avait pas de chemin].

[mail function]
; For Win32 only.

SMTP = smtp.gmail.com

smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = [your_gmail_username]@gmail.com
sendmail_path = "\"C:\xampplite\sendmail\sendmail.exe\" -t"

b) Modifiez sendmail.ini Localisez sendmail.ini dans le chemin du fichier sous la forme «[Lettre du lecteur]: [répertoire XAMPP]\sendmail», par exemple. C:\xampp\sendmail\sendmail.ini

Commentez les exemples «Mercury» et «Un exemple de service de messagerie gratuit» sous la forme Ci-dessous:

 # Mercury  <br/> 
 #account Mercury  <br/> 
 #Host localhost  <br/> 
 #from postmaster@localhost  <br/> 
 #auth off  <br/> 
 # A freemail service example  <br/> 
 #account Hotmail  <br/> 
 #tls on  <br/> 
 #tls_certcheck off  <br/> 
 #Host smtp.live .com  <br/> 
 #from [exampleuser]@hotmail.com  <br/> 
 #auth on  <br/> 
 #user [exampleuser]@hotmail .com  <br/> 
 #password [examplepassword]  <br/> 

c. Ajoutez le compte gmail.

Exemple:

account Gmail
tls on 
tls_certcheck off
Host smtp.gmail.com 
 from [your_gmail_username]@gmail.com 
auth on
  account default : Gmail 

ré. Redémarrer le serveur Apache


Je n'ai pas utilisé Gmail. J'ai utilisé mon compte d'hébergement. Si vous faites cela, assurez-vous que les paramètres SMTP sont corrects. Le mien était mail.abc.com pas smtp.gmail.com. Ce code provient de 2 sites. Vous devez changer les deux fichiers. Je l'ai sur Xampp 1.73 fonctionnant sur une boîte de Win200sp4. Tous les paramètres par défaut sauf pour ces deux fichiers. php.ini et sendmail.ini 

0
Joe

L'utilisation de Gmail pose un autre problème. Gmail étant désormais sécurisé, vous devez générer un mot de passe spécifique à l'application. Vous ne pouvez pas utiliser le mot de passe que vous avez pour votre accès Gmail normal. J'ai découvert cela en essayant les exemples ci-dessus, puis en remarquant qu'un journal des erreurs avait été généré dans le dossier sendmail. Dans le journal des erreurs, je suis tombé sur un message l'indiquant. 

0
user2554122
THIS IS WHAT YOU SENDMAIL SHOULD LOOK LIKE


[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.gmail.com

; smtp port (normally 25)

smtp_port=465

; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl = always use SSL
;   tls  = always use TLS
;   none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

;default_domain=mydomain.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=Your Email Here
auth_password=Your Password Here

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.

pop3_server=
pop3_username=
pop3_password=

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify 
; the "From: " header of the message content

force_sender=Your Email Here

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify 
; the "To: " header of the message content

force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

hostname=smtp.gmail.com

THIS IS WHAT YOU PHP.INI FILE SHOULD LOOK LIKE

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
smtp_server=smtp.gmail.com
smtp_port = 465

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

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program filesC:\xampp) fakemail and mailtodisk do not work correctly.
; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (e.g. C:\sendmail) and use this for sendmail_path.  
; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the C:\xampp\mailoutput folder
;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=Off
0
Khalid

Je sais que c’est un billet ancien, mais je pensais partager le fait que ce qui suit a fonctionné pour moi.

J'utilise actuellement un serveur WAMP sur Windows 7 ENT avec Apache/2.4.9 (Win64) PHP/5.5.12 et MySQL 5.6.17.

J'ai suivi ce tutoriel: http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/

0
Bri