이것은 Byron Jones(https://www.glob.com.au/sendmail/)의 가짜 sendmail 프로그램의 부활입니다. TLS v1.1 또는 v1.2 지원이 필요하지 않은 경우 원본 버전을 사용하십시오. 두 버전 모두에서 사용할 수 있는 지원이 없으며 둘 다 적극적으로 유지 관리되지 않습니다.
sendmail.exe는 stdin을 통해 파이프된 이메일을 전달하기 위해 sendmail의 -t 옵션을 에뮬레이트하는 간단한 Windows 콘솔 애플리케이션입니다.
이는 /usr/lib/sendmail이 이메일 전달 수단으로 하드코딩된 유닉스 코드나 sendmail 파이프 방법을 사용하는 프로그램(예: Windows의 PHP가 사용하는 것처럼)을 쉽게 실행하기 위한 것입니다.
지연된 배달을 지원하지 않으며 메시지의 실제 배달을 수행하려면 smtp 서버가 필요합니다.
몇년간 페이크 센드메일 프로그램을 사용해왔는데, Office 365 smtp 서버를 사용하게 되면 더 이상 TLS v1.0만으로는 부족하고, TLS v1.2가 필요하기 때문에 Byron Jones가 제공하는 소스를 다시 컴파일해 보았습니다. 그의 사이트 릴리스에 포함되었습니다. 약간의 조정과 약간의 변경을 통해 Embarcadero의 Delphi 빌더 10.3(Rio)의 현재 커뮤니티 에디션에서 Delphi 2007 프로그램을 다시 컴파일할 수 있었습니다. 여기에는 TLS v1.2를 지원하고 sendmail 코드에서 TLS v1.1+를 강제 적용하는 최신 Indy 버전이 포함되어 있습니다.
다른 사람이 소스 코드에서 가짜 sendmail을 다시 컴파일하는 번거로움을 덜기 위해 원본 버전과 마찬가지로 소스 코드를 포함하여 이 github 사이트에서 사용할 수 있도록 했습니다.
이 github에서 sendmail.zip을 다운로드하고 해당 내용을 시스템의 임시 폴더에 압축을 풉니다.
sendmail.exe, sendmail.ini 및 두 .dll 파일을 모두 Unix 응용 프로그램이 설치된 드라이브의 usrlib에 복사합니다. 예. 응용 프로그램이 c:에 설치된 경우 sendmail.exe 및 sendmail.ini를 c:usrlibsendmail.exe 및 c:usrlibsendmail.ini 또는 경로가 다음과 같은 경우 다른 디렉터리에 복사해야 합니다. 그것을 사용하는 애플리케이션에 하드코딩되지 않았습니다.
sendmail.ini에서 smtp 서버와 기본 도메인을 구성합니다.
일반적으로 해야 할 일은 usrlib에 sendmail.exe를 설치하는 것뿐입니다. 그러면 /usr/lib/sendmail을 호출하는 기존 코드가 작동합니다.
새로운 애플리케이션을 코딩하는 경우 완전한 헤더로 이메일 메시지를 구성한 다음 'sendmail.exe -t'로 파이프하기만 하면 됩니다.
PHP를 사용하면 sendmail 경로가 하드코딩되지 않고 php.ini 파일에서 구성할 수 있으므로 sendmail.exe와 해당 파일을 시스템의 어느 곳에나 함께 배치할 수 있습니다. 구성에서는 sendmail_path 옵션에 대해 "Unix only"라고 명시합니다. 하지만 Windows에서는 위의 3가지 Win32 전용 옵션을 재정의합니다. PHP 매뉴얼(https://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path)을 참조하세요.
참고: SMTP 서버에 인증이나 암호화가 필요하지 않은 경우 SMTP 및 SMPT_PORT 구성 매개변수를 사용하여 smtp 서버를 지정할 수 있으므로 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
sendmail.ini에서 smtp 서버 주소와 사용자 이름/비밀번호 콤보를 지정합니다.
Sendmail은 성공하면 ERRORLEVEL을 0으로 설정합니다.
버전 28 이상에서는 이메일을 전달할 수 없는 경우 ERRORLEVEL을 -1로 설정합니다. PHP와의 더 나은 호환성을 제공하기 위해 값이 변경되었으며, 실패 시 ERRORLEVEL은 -1이 될 것으로 예상됩니다.
sendmail.ini에서 debug_logfile 항목의 주석 처리를 제거하고 실패한 메시지를 다시 보내 보십시오. 전체 SMTP 기록을 표시하는 sendmail.exe와 동일한 디렉터리에 debug.log가 생성되어야 합니다.
원본 버전 사이트를 참조하세요: https://www.glob.com.au/sendmail/
이 프로그램은 bsd 라이센스에 따라 출시됩니다: https://www.glob.com.au/sendmail/license.html
라이선스 세부정보와 전체 소스 코드(Delphi 10.3 Rio)는 zip 파일의 소스 폴더와 이 저장소에 포함되어 있습니다.