How to setup Sendmail (smtp) on Windows for Php

User avatar
axew3
w3all User
w3all User
Posts: 2677
Joined: Fri Jan 22, 2016 5:15 pm
Location: Italy
Contact:

How to setup Sendmail (smtp) on Windows for Php

Post by axew3 »

Just a remind, on setting up sendmail for PHP on windows OS.
I have a laptop with win8 (and Debian OS on another partition) where is running php 7.2. I changed recently my internet provider and magically (i do not know why, since the email account still exists and work by the way, so it is strange), php mail stopped working. It was configured to work on port 25, without any particular setting, and was working fine from years now:

Code: Select all

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

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = me@example.com
Now not more, and any php version you use, unfortunately, allow you to setup on php.ini file only this, as explained here
I've follow instructions on fly, commenting with ; all lines about in php.ini, and setting
sendmail_path = C:\sendmail\sendmail.exe
so the resulting on php.ini is:

Code: Select all

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

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com
and where on php.ini there is this line:
;sendmail_path =
changed into:
sendmail_path = C:\sendmail\sendmail.exe

I previously created the folder
C:\sendmail
with inside these files
sendmail-1.zip
(1.08 MiB) Downloaded 586 times
Setup the sendmail.exe to be executed as Administrator

this is my resulting sendmail.ini file that work, and in which, for what i know (and as i've read into a page i can't remember nor find out the link to) is impossible to setup smtp over ssl: do not try, will NOT work. If you find out a way, please let me know! There is a bug on the sendmail program that make it fail if ssl.

Code: Select all

; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[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.vodafone.it
smtp_port=587
auth_username=myemail@address.com
auth_password=mypass

; smtp port (normally 25)

;smtp_port=25

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

smtp_ssl=none

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

; 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=
;auth_password=

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

; 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=
Then i've restart apache 2.4 to make changes take effect on server.