XAMPP Sendmail usando la cuenta de Gmail

Estoy intentando configurar Sendmail a través de XAMPP para enviar correos electrónicos. En mi sendmail.ini tengo estas configuraciones:

# 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 myemail@gmail.com auth on user myemail06@gmail.com password mypassword account default : Gmail 

Creé un script de prueba como este:

 $to = "testemail@btinternet.com"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $headers = "From: myemail06@gmail.com" . "\r\n"; if (mail($to, $subject, $body, $headers)) { echo ("Message successfully sent!"); } else { echo ("Message delivery failed..."); } 

Recibo un mensaje para decir que el correo electrónico fue enviado pero nunca llega y en los registros que recibo:

sendmail: Error durante la entrega: primero debe emitir un comando STARTTLS.

¿Alguien sabe cuál podría ser el problema aquí?

¡Gracias por adelantado!

Gaz

Esto es lo que funcionó para mí. Ojalá nadie más quemará petróleo para resolver esto como yo lo hice.

Aquí está mi sendmail.ini

 [sendmail] smtp_server=smtp.gmail.com smtp_port=25 error_logfile=error.log debug_logfile=debug.log auth_username=myemail@gmail.com auth_password=yourgmailpassword force_sender=myemail@gmail.com 

php / php.ini —- básicamente comenta todo, excepto sendmail_path y 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" 

Esto funcionó para mí después de actualizar los archivos de sendmail (los antiguos no son compatibles con smtp)

  • vaya a http://glob.com.au/sendmail/ y tome el último archivo zip de sendmail
  • descomprimir en el escritorio y copiar los archivos en su carpeta \ xampp \ sendmail reemplazando todo lo que estaba allí. ¡TODO!
  • Ahora abra sendmail.ini y copie y pegue lo que mostré arriba (¡elimine todo en ese archivo primero o simplemente coméntelo todo!)
  • NOTA: no necesita servidores de Mercury iniciados para esto.

Estaba haciendo una recuperación de contraseña php en localhost cuando encontré este problema. Necesitaba enviarles a los usuarios su contraseña. – Tu php parece okey

De acuerdo, hoy, la mejor respuesta no funcionó para mí. Pero, esto hizo:

en 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 

en php.ini:

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

Basado en port @: http://support.google.com/mail/bin/answer.py?hl=es&answer=13287

Todo lo que tuve que hacer fue cambiar a “Permitir que las aplicaciones menos seguras accedan a tu cuenta”. Supongo que esta es una alternativa a la creación de una contraseña específica de la aplicación.

https://support.google.com/accounts/answer/6010255 para obtener información

https://www.google.com/settings/security/lesssecureapps para el conmutador

Podría valer la pena desactivarlo después de que haya terminado por razones de seguridad.

Estos son los requisitos más recientes del servidor SMTP de Google:

  1. Dirección del servidor SMTP de Gmail: smtp.gmail.com
  2. Contraseña SMTP de Gmail: (Su contraseña de Gmail)
  3. Puerto SMTP de Gmail (TLS): 587
  4. Puerto SMTP de Gmail (SSL): 465
  5. Requiere Gmail SMTP TLS / SSL:

Requisitos de SMTP de Google

Si solo usa SSL, se complica con la prueba de verificación de Captcha requerida, así que configuro mi SSL en automático, que probará TLS cuando SSL falle.
enter image description here

Solo para agregar a las ya excelentes respuestas. Asegúrese de ejecutar XAMPP como administrador. Eso fue lo que me solucionó.

Hay otro problema al usar Gmail. Gmail ahora tiene seguridad, por lo que debe generar una contraseña específica de la aplicación; no puede usar la contraseña que tiene para su acceso normal a Gmail. Descubrí esto probando los ejemplos anteriores y luego notando que en la carpeta sendmail se había generado un registro de errores. En el registro de errores me encontré con un mensaje que indica esto.

Sé que esta es una publicación antigua, pero pensé que compartiría el hecho de que lo siguiente funcionó para mí.

Actualmente estoy usando un servidor WAMP en Windows 7 ENT con Apache / 2.4.9 (Win64) PHP / 5.5.12 y MySQL 5.6.17.

Seguí este tutorial: http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/

 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 (eg 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 (eg 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 

a) Cambie php.ini Localice php.ini en la ruta del archivo “[Letra de unidad]: [directorio XAMPP] \ php”. por ejemplo, C: \ xampp \ php \ php.ini

Busque sendmail_path en su archivo php.ini y elimine el punto y coma “;” antes que [el mío no tenía ruta].

 [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) Cambiar sendmail.ini Localizar sendmail.ini en la ruta del archivo es “[Letra de unidad]: [directorio XAMPP] \ sendmail” por ejemplo, C: \ xampp \ sendmail \ sendmail.ini

Comenta los contenidos “Mercury” y “Un ejemplo de servicio de correo gratuito” como se muestra a continuación:

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

do. Agrega la cuenta de gmail.

Ejemplo:

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

re. Reiniciar servidor Apache


No usé gmail. Usé mi cuenta de hosting. Si lo hace, asegúrese de que la configuración de SMTP sea correcta. El mío fue mail.abc.com, no smtp.gmail.com. Este código es de 2 sitios web. Necesita cambiar ambos archivos. Lo tengo trabajando en Xampp 1.73 ejecutándose en una caja win200sp4. Toda la configuración predeterminada excepto estos dos archivos. php.ini y sendmail.ini