เป็นเรื่องปกติที่จะต้องส่งอีเมลจากแอปของคุณ และในกรณีส่วนใหญ่ มันเป็นความเจ็บปวดอย่างมากใน ... คุณรู้ไหมว่าอยู่ที่ไหน
ดังนั้นสิ่งที่ฉันทำคือรับอีเมล Apache Commons (ซึ่งอิงตาม API อีเมล "อย่างเป็นทางการ" ของ Java) และฉันกำลังส่งอีเมลด้วยวิธีที่ง่ายที่สุดที่มีอยู่ กล่าวคือ โดยไม่ต้องตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ smtp ฉันแค่ค้นหา MX แบบง่ายๆ บนชื่อโฮสต์ปลายทาง รับเซิร์ฟเวอร์ MX และพยายามทิ้งข้อความของฉันไปที่ชื่อโฮสต์แรก (ไม่ว่าอีเมลจะถูกปฏิเสธหรือไม่นั้นเป็นปัญหาที่แตกต่างไปจากเดิมอย่างสิ้นเชิง และฉันอาจจะถามคำถามเพิ่มเติมเกี่ยวกับ ยุ่งวุ่นวายกับ return-path: vs. from: vs. Reply-to: และวิธีการจัดการส่วนหัวเหล่านี้ (ไม่) ใน java) กลับมาสู่ธุรกิจ... ดังนั้นฉันจึงพยายามส่งข้อความของฉันไปที่เซิร์ฟเวอร์อีเมลโดยมีคะแนนการตั้งค่าน้อยที่สุด
นี่คือตัวอย่าง: ฉันต้องการเขียนถึง [email protected]
การค้นหา MX บอกฉันว่า domain.com
ทราบถึงเซิร์ฟเวอร์ MX สองเครื่อง และเซิร์ฟเวอร์เหล่านี้ได้แก่ mail1.domain.com
ด้วยการตั้งค่า 10 และ mail2.domain.com
ด้วยการตั้งค่า 20 วิธี rfc ในการทำสิ่งต่างๆ คือการไปที่เซิร์ฟเวอร์ที่มีค่ากำหนดน้อยที่สุด และวางเมลไปที่นั่น นั่นคือสิ่งที่ฉันทำ
และสุดท้ายปัญหาของฉัน: จะเกิดอะไรขึ้นถ้าเซิร์ฟเวอร์นั้นไม่สามารถใช้งานได้ในทางใดทางหนึ่ง? มันค่อนข้างง่าย - ฉันไปที่เซิร์ฟเวอร์อื่น แต่ Apache Commons (และฉันสงสัยว่า java mail api) ไม่อนุญาตให้ฉันทำเช่นนั้น ตัวแปร mail.smtp.host
ถูกรูทภายในอุปกรณ์ประกอบฉากของเซสชันในข้อความในอีเมล และฉันไม่สามารถรับมันได้
ดังนั้นวิธีที่ดีที่สุดในการจัดการปัญหานี้คืออะไร? ฉันควรสร้างอีเมลของฉันทั้งหมดจากด้านบนด้วยชื่อโฮสต์ใหม่ (mail2) หรือมีวิธีที่ชาญฉลาดในการทำให้ทั้งหมดนี้ทำงานใน java โดยไม่เจ็บปวดมากนักหรือไม่