Il s'agit d'une reprise du faux programme sendmail de Byron Jones (https://www.glob.com.au/sendmail/), si vous n'avez pas besoin du support TLS v1.1 ou v1.2, veuillez utiliser la version originale, aucun support n'est disponible sur les deux versions et elles ne sont pas toutes deux activement maintenues.
sendmail.exe est une simple application de console Windows qui émule l'option -t de sendmail pour envoyer des e-mails via stdin.
il est destiné à faciliter l'exécution de code Unix qui a /usr/lib/sendmail codé en dur comme moyen de livraison de courrier électronique ou programme utilisant la méthode de canal sendmail, par exemple comme php sur Windows.
il ne prend pas en charge la livraison différée et nécessite un serveur SMTP pour effectuer la livraison réelle des messages.
J'utilise le faux programme sendmail depuis plusieurs années, mais lorsque j'utilise des serveurs SMTP Office 365, TLS v1.0 ne suffit plus, ils nécessitent TLS v1.2, j'ai donc essayé de recompiler la source que Byron Jones inclus dans le communiqué sur son site. Avec un peu de bricolage et quelques modifications mineures, j'ai pu recompiler le programme Delphi 2007, dans l'édition communautaire actuelle du constructeur Delphi 10.3 (Rio) d'Embarcadero. Cela contient une version Indy plus récente, qui prend en charge TLS v1.2 et TLS v1.1+ forcé dans le code sendmail.
Pour éviter à quiconque d'avoir à recompiler le faux sendmail à partir du code source, je l'ai rendu disponible sur ce site github, y compris le code source, tout comme la version originale.
Téléchargez sendmail.zip depuis ce github et décompressez son contenu dans un dossier temporaire sur votre système
copiez sendmail.exe, sendmail.ini et les deux fichiers .dll dans usrlib sur le lecteur sur lequel l'application Unix est installée. par exemple. si votre application est installée sur c:, sendmail.exe et sendmail.ini doivent être copiés dans c:usrlibsendmail.exe et c:usrlibsendmail.ini ou dans un autre répertoire si le chemin est 'pas codé en dur dans l'application qui l'utilise.
configurez le serveur SMTP et le domaine par défaut dans sendmail.ini.
en général, tout ce que vous avez à faire est d'installer sendmail.exe dans usrlib, et le code existant qui appelle /usr/lib/sendmail fonctionnera.
si vous codez de nouvelles applications, tout ce que vous avez à faire est de construire votre message électronique avec des en-têtes complets, puis de le diriger vers « sendmail.exe -t ».
Avec PHP, le chemin sendmail n'est pas codé en dur, il peut être configuré dans le fichier php.ini, donc sendmail.exe et ses fichiers peuvent être placés ensemble n'importe où sur le système, la configuration indique "Unix uniquement" pour l'option sendmail_path, mais cela fonctionne sous Windows, il remplace les 3 options Win32 uniquement au-dessus, voir le manuel PHP (https://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path)
Remarque : Si votre serveur SMTP ne nécessite pas d'authentification ou de cryptage, vous pouvez simplement utiliser les paramètres de configuration SMTP et SMPT_PORT pour spécifier un serveur SMTP, vous n'avez alors pas besoin de sendmail.exe.
PHP.ini :
[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:sendmailsendmail.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().
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On
Dans le fichier sendmail.ini, vous spécifiez l'adresse du serveur SMTP et la combinaison nom d'utilisateur/mot de passe.
Sendmail définit le ERRORLEVEL sur 0 en cas de succès.
Les versions 28 et supérieures définissent ERRORLEVEL sur -1 si l'e-mail n'a pas pu être livré. La valeur a été modifiée pour offrir une meilleure compatibilité avec PHP, qui s'attend à ce que ERRORLEVEL soit -1 en cas d'échec.
décommentez l'entrée debug_logfile dans sendmail.ini et essayez de renvoyer un message ayant échoué. cela devrait créer debug.log dans le même répertoire que sendmail.exe affichant la transcription SMTP complète.
Veuillez consulter le site des versions originales : https://www.glob.com.au/sendmail/
Ce programme est publié sous licence bsd : https://www.glob.com.au/sendmail/license.html
Les détails de la licence et le code source complet (Delphi 10.3 Rio) sont inclus dans le dossier source du fichier zip et de ce référentiel.