นี่คือการฟื้นฟูโปรแกรม sendmail ปลอมโดย Byron Jones (https://www.glob.com.au/sendmail/) หากคุณไม่ต้องการการรองรับ TLS v1.1 หรือ v1.2 โปรดใช้เวอร์ชันดั้งเดิม ไม่มีการสนับสนุนสำหรับทั้งสองเวอร์ชันและทั้งสองเวอร์ชันไม่ได้รับการบำรุงรักษาอย่างแข็งขัน
sendmail.exe เป็นแอปพลิเคชันคอนโซล Windows ธรรมดาที่จำลองตัวเลือก -t ของ sendmail เพื่อส่งอีเมลที่ส่งผ่าน stdin
มีจุดมุ่งหมายเพื่อความสะดวกในการรันโค้ดยูนิกซ์ที่มี /usr/lib/sendmail ฮาร์ดโค้ดเป็นวิธีการส่งอีเมลหรือของโปรแกรมที่ใช้วิธีการไปป์ sendmail เช่น php บน windows ใช้
ไม่รองรับการจัดส่งแบบเลื่อนออกไป และต้องใช้เซิร์ฟเวอร์ smtp เพื่อดำเนินการส่งข้อความตามจริง
ฉันใช้โปรแกรม sendmail ปลอมมาหลายปีแล้ว แต่เมื่อใช้เซิร์ฟเวอร์ Office 365 smtp TLS v1.0 ยังไม่เพียงพออีกต่อไป พวกเขาต้องการ TLS v1.2 ดังนั้นฉันจึงพยายามคอมไพล์แหล่งที่มาที่ Byron Jones ใหม่ รวมอยู่ในการเผยแพร่บนเว็บไซต์ของเขา ด้วยปัญหาเล็กน้อยและการเปลี่ยนแปลงเล็กน้อย ฉันสามารถคอมไพล์โปรแกรม Delphi 2007 อีกครั้งในรุ่นชุมชนปัจจุบันของ Delphi builder 10.3 (Rio) จาก Embarcadero ซึ่งมี Indy เวอร์ชันใหม่กว่า ซึ่งรองรับ TLS v1.2 และบังคับใช้ TLS v1.1+ ในโค้ด sendmail
เพื่อช่วยใครก็ตามไม่ต้องยุ่งยากในการคอมไพล์ sendmail ปลอมจากซอร์สโค้ดใหม่ ฉันทำให้มันพร้อมใช้งานบนไซต์ GitHub นี้ รวมถึงซอร์สโค้ด เช่นเดียวกับเวอร์ชันดั้งเดิม
ดาวน์โหลด sendmail.zip จาก GitHub นี้ และแตกไฟล์เนื้อหาไปยังโฟลเดอร์ชั่วคราวในระบบของคุณ
คัดลอก sendmail.exe, sendmail.ini และไฟล์ .dll ทั้งสองไฟล์ไปที่ usrlib บนไดรฟ์ที่ติดตั้งแอปพลิเคชัน unix เช่น หากแอปพลิเคชันของคุณติดตั้งบน c:, sendmail.exe และ sendmail.ini จำเป็นต้องคัดลอกไปยัง c:usrlibsendmail.exe และ c:usrlibsendmail.ini หรือไดเร็กทอรีอื่นหากเส้นทางไม่ได้ ไม่ได้ฮาร์ดโค้ดในแอปพลิเคชันที่ใช้งานอยู่
กำหนดค่าเซิร์ฟเวอร์ smtp และโดเมนเริ่มต้นใน sendmail.ini
โดยทั่วไปสิ่งที่คุณต้องทำคือติดตั้ง sendmail.exe ใน usrlib และโค้ดที่มีอยู่ซึ่งเรียก /usr/lib/sendmail จะใช้งานได้
หากคุณกำลังเขียนโค้ดแอปพลิเคชันใหม่ สิ่งที่คุณต้องทำคือสร้างข้อความอีเมลของคุณด้วยส่วนหัวที่สมบูรณ์ จากนั้นไปป์ที่ 'sendmail.exe -t'
ด้วย PHP เส้นทาง sendmail จะไม่ฮาร์ดโค้ด แต่สามารถกำหนดค่าได้ในไฟล์ php.ini ดังนั้น sendmail.exe และไฟล์ของมันสามารถวางรวมกันได้ทุกที่ในระบบ การตั้งค่าระบุว่า "Unix เท่านั้น" สำหรับตัวเลือก sendmail_path แต่มันใช้งานได้บน 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 เมื่อเกิดความล้มเหลว
ยกเลิกหมายเหตุรายการ debug_logfile ใน sendmail.ini และลองส่งข้อความที่ล้มเหลวอีกครั้ง สิ่งนี้ควรสร้าง debug.log ในไดเรกทอรีเดียวกันกับ sendmail.exe ที่แสดงการถอดเสียง SMTP ที่สมบูรณ์
โปรดดูเว็บไซต์เวอร์ชันดั้งเดิม: https://www.glob.com.au/sendmail/
โปรแกรมนี้เผยแพร่ภายใต้ใบอนุญาต bsd: https://www.glob.com.au/sendmail/license.html
รายละเอียดใบอนุญาตและซอร์สโค้ดแบบเต็ม (Delphi 10.3 Rio) จะรวมอยู่ในโฟลเดอร์ซอร์สในไฟล์ zip และที่เก็บนี้