kutombawewe.net

XAMPP Sendmail usando l'account Gmail

Sto cercando di configurare Sendmail tramite XAMPP per inviare email. Nel mio sendmail.ini ho queste impostazioni:

# 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

Ho creato uno script di test come questo:

$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...");
}

Ricevo un messaggio per dire che l'email è stata inviata ma non arriva mai e nei log ottengo:

sendmail: errore durante la consegna: è necessario prima emettere un comando STARTTLS.

Qualcuno sa quale potrebbe essere il problema qui?

Grazie in anticipo!

Gaz

18
Gaz

Questo è ciò che ha funzionato per me Spero che nessun altro brucerà il petrolio per capirlo come ho fatto io.

Ecco il mio 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 ---- commenta fondamentalmente tutto tranne sendmail_path e 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 = [email protected]

; 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"

Questo ha funzionato per me dopo aver aggiornato i file sendmail (i vecchi non supportano smtp)

  • vai su http://glob.com.au/sendmail/ e prendi l'ultimo file zip di sendmail
  • decomprimere sul desktop e copiare i file nella cartella\xampp\sendmail sostituendo tutto ciò che era lì. TUTTO! 
  • Ora apri sendmail.ini e copia incolla quello che ho mostrato sopra (rimuovi tutto in quel file prima o commenta tutto!)
  • NOTA: non è necessario avviare i server Mercury per questo.

Stavo facendo un php di recupero password su localhost quando ho riscontrato questo problema. Avevo bisogno di inviare agli utenti la loro password. - il tuo php sembra okey

35
braviato

Ok, oggi la risposta migliore non ha funzionato per me. Ma questo ha fatto:

in 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

in php.ini:

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

Basato su port @: http://support.google.com/mail/bin/answer.py?hl=it&answer=13287

13
aubreypwd

Tutto quello che dovevo fare era passare a "Consenti alle app meno sicure di accedere al tuo account". Immagino che questa sia un'alternativa alla creazione di una password specifica per l'app.

https://support.google.com/accounts/answer/6010255 per informazioni

https://www.google.com/settings/security/lesssecureapps per l'opzione

Potrebbe essere utile spegnerlo dopo aver finito per motivi di sicurezza. 

3
Dean_Wilson

Giusto per aggiungere alle già grandi risposte. Assicurati di eseguire XAMPP come amministratore. Questo è stato ciò che ha risolto per me. 

1
Julian

Questi sono i più recenti requisiti del server SMTP di Google:

  1. Indirizzo del server SMTP di Gmail: smtp.gmail.com
  2. Password SMTP di Gmail: (la tua password Gmail)
  3. Porta SMTP di Gmail (TLS): 587
  4. Porta SMTP di Gmail (SSL): 465
  5. Gmail SMTP TLS/SSL richiesto:

Google SMTP Requirements

Se si utilizza SSL, la procedura di verifica Captcha è complicata, quindi ho impostato SSL in automatico per provare TLS in caso di errore di SSL.
enter image description here

1
Ryan Santos

a) Cambia php.ini Cerca php.ini nel percorso del file "[Lettera unità]: [directory XAMPP]\php". per esempio. C:\xampp\php\php.ini

Cerca sendmail_path nel tuo file php.ini e rimuovi il punto e virgola ";" prima di [mine non ha percorso].

[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) Cambia sendmail.ini Localizza sendmail.ini nel percorso del file è "[Drive Letter]: [XAMPP directory]\sendmail" ad es. C:\xampp\sendmail\sendmail.ini

Commenta i contenuti "Mercury" e "Un servizio di posta gratuito" come Mostrato di seguito:

 # Mercury  <br/> 
 #account Mercury  <br/> 
 #Host localhost  <br/> 
 #from [email protected]  <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. Aggiungi l'account Gmail.

Esempio:

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

d. Riavviare il server Apache


Non ho usato Gmail. Ho usato il mio account di hosting. Se lo fai, assicurati che le impostazioni SMTP siano corrette. Il mio era mail.abc.com non smtp.gmail.com. Questo codice proviene da 2 siti Web. È necessario modificare entrambi i file. Ho lavorato su Xampp 1.73 su una casella win200sp4. Tutte le impostazioni predefinite ad eccezione di questi due file. php.ini e sendmail.ini 

0
Joe

C'è un altro problema quando si usa Gmail. Gmail ora ha sicurezza, quindi devi generare una password specifica per l'applicazione: non puoi usare la password che hai per il normale accesso a Gmail. L'ho scoperto provando gli esempi sopra e notando che nella cartella sendmail era stato generato un log degli errori. Nel registro degli errori mi sono imbattuto in un messaggio che indica questo. 

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 = [email protected]

; 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

So che questo è un post vecchio, ma ho pensato di condividere il fatto che le seguenti hanno funzionato per me.

Attualmente sto usando un server WAMP su Windows 7 ENT con Apache/2.4.9 (Win64) PHP/5.5.12 e MySQL 5.6.17.

Ho seguito questo tutorial: http://blog.techwheels.net/send-email-from-localhost-wamp-server-using-sendmail/

0
Bri