ส่งอีเมลและส่งต่อข้อความผ่าน SMTP

นี้ SmtpClient คลาสใน Aspose.Email สำหรับ Python ผ่าน .NET ให้ส่วนต่อประสานที่แข็งแกร่งและยืดหยุ่นสำหรับส่งอีเมลโดยใช้ Simple Mail Transfer Protocol (SMTP) เป็นจุดเริ่มต้นหลักสำหรับนักพัฒนาที่ต้องการส่งข้อความอีเมลภายในแอปพลิเคชันของตน.

คุณลักษณะสำคัญของ SmtpClient คลาสรวม:

  • การจัดส่งอีเมลผ่าน SMTP: เปิดใช้งานการส่งอีเมลโดยตรงผ่านเซิร์ฟเวอร์ SMTP.

  • ตัวเลือกการจัดส่งแบบทางเลือก: รองรับวิธีการจัดส่งเพิ่มเติม เช่น การบันทึกข้อความลงระบบไฟล์หรือเขียนลงคิวข้อความ.

  • การทำงานแบบซิงโครนัสและอะซิงโครนัส:

    • โหมดแบบซิงโครนัส: ใช้วิธีการ Send เพื่อบล็อกเธรดปัจจุบันจนกว่าอีเมลจะถูกส่งเต็มที่.

    • โหมด Asynchronous: ใช้เมธอด SendAsync เพื่อส่งข้อความในพื้นหลัง ทำให้แอปพลิเคชันตอบสนองได้ต่อเนื่อง.

  • รองรับ TNEF: อนุญาตให้ส่งข้อความในรูปแบบ Transport Neutral Encapsulation Format (TNEF) เพื่อความเข้ากันได้กับคุณสมบัติของ Microsoft Outlook.

บทความนี้ครอบคลุมฟังก์ชันหลักทั้งหมดที่มีให้ผ่าน SmtpClient คลาสที่แสดงวิธีส่งข้อความอีเมลมาตรฐานและขั้นสูงโดยควบคุมการกำหนดค่าและการจัดส่งอย่างเต็มที่.

ส่งอีเมลแบบ synchronous

นี้ SmtpClient.send เมธอดนี้อนุญาตให้ส่งข้อความอีเมลแบบ synchronous วิธีนี้เป็นประโยชน์เมื่อแอปพลิเคชันต้องการยืนยันการส่งก่อนดำเนินการต่อ.

เพื่อส่งอีเมลข้อความธรรมดาแบบ synchronous ด้วย Aspose.Email for Python ผ่าน .NET ให้ใช้ขั้นตอนและตัวอย่างโค้ดด้านล่าง:

  1. สร้าง MailMessage อินสแตนซ์และตั้งผู้ส่ง ผู้รับ(หลายคน) เรื่อง และเนื้อหา.
  2. กำหนดค่า SmtpClient ด้วยโฮสต์เซิร์ฟเวอร์ พอร์ต ชื่อผู้ใช้ และรหัสผ่าน.
  3. เรียกใช้ send วิธีการบน SmtpClient อินสแตนซ์และส่งค่าใน MailMessage อ็อบเจ็กต์.
# Create email
eml = ae.MailMessage()
eml.subject = "Message with Plain Text Body"
eml.body = "This is text body."
eml.from_address = "from@gmail.com"
eml.to.append(ae.MailAddress("to@gmail.com", "Recipient 1")) 

# Configure SmtpClient object
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO 

# Send email
client.send(eml)

ส่งไฟล์ EML ที่เตรียมไว้ล่วงหน้าผ่าน SMTP

หากคุณต้องการส่งข้อความอีเมลที่ได้จัดทำและบันทึกเป็นรูปแบบ EML แล้ว คุณสามารถโหลดและส่งโดยใช้โปรแกรมด้วย Aspose.Email สำหรับ Python ผ่าน .NET ได้.

ส่วนโค้ดต่อไปนี้พร้อมขั้นตอนแสดงวิธีส่งไฟล์ EML โดยใช้ SmtpClient:

  1. โหลดไฟล์ EML ด้วย MailMessage.load เมธอด.
  2. สร้างและกำหนดค่าตัวอย่างของ SmtpClient, โดยระบุโฮสต์เซิร์ฟเวอร์ SMTP, ชื่อผู้ใช้และรหัสผ่านสำหรับการตรวจสอบสิทธิ์.
  3. เรียกใช้ send วิธีการบน SmtpClient อินสแตนซ์และส่งผ่านข้อความที่โหลดแล้ว.
import aspose.email as ae

message = ae.MailMessage.load("test.eml")

# Send this message using SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)

ส่งอีเมลข้อความธรรมดา

คุณสามารถส่งอีเมลข้อความธรรมดาโดยใช้ Aspose.Email โดยระบุส่วนข้อความของเมลเป็นข้อความทั่วไปได้ โดย MailMessage.body คุณสมบัตินี้ใช้กำหนดเนื้อหา ในขณะที่ SmtpClient คลาสจัดการกระบวนการส่ง.

ส่วนโค้ดต่อไปนี้พร้อมขั้นตอนจะแสดงวิธีส่งอีเมลข้อความธรรมดา:

  1. สร้างอินสแตนซ์ของ MailMessage คลาส.
  2. ตั้งค่าที่อยู่อีเมลผู้ส่งและผู้รับ.
  3. กำหนดเนื้อหาแบบข้อความธรรมดาให้กับคุณสมบัติ body.
  4. สร้างอินสแตนซ์ของ SmtpClient คลาสพร้อมรายละเอียดเซิร์ฟเวอร์และข้อมูลประจำตัว.
  5. ส่งอีเมลโดยใช้ send เมธอด.

ส่งอีเมล HTML

Aspose.Email สำหรับ Python ผ่าน .NET อนุญาตให้คุณส่งอีเมลที่มีเนื้อหาแบบ HTML โดยใช้ MailMessage คลาส โดยกำหนดเนื้อหา HTML ให้กับ html_body คุณสมบัติและการตั้งค่า is_body_html เป็น True คุณสามารถสร้างข้อความที่มีรูปแบบและสไตล์ที่หลากหลาย.

ตัวอย่างโค้ดต่อไปนี้พร้อมขั้นตอนแสดงวิธีส่งอีเมล HTML:

  1. สร้างอินสแตนซ์ของ MailMessage คลาส.
  2. ตั้งค่าที่อยู่อีเมลผู้ส่งและผู้รับ.
  3. ตั้งค่า is_body_html = True เพื่อระบุรูปแบบ HTML.
  4. กำหนดเนื้อหา HTML ของคุณให้กับ html_body คุณสมบัติ.
  5. สร้างและกำหนดค่า SmtpClient อินสแตนซ์
  6. ใช้ send วิธีการส่งข้อความ.

หมายเหตุ: แม้ว่าตัวอย่างนี้ใช้ HTML พื้นฐาน คุณสามารถรวมโครงสร้าง HTML ที่ซับซ้อนได้เพื่อสร้างเค้าโครงอีเมลที่ตอบสนองและมีแบรนด์.

ส่งอีเมล HTML พร้อมข้อความสำรองแบบข้อความธรรมดา

เมื่อส่งอีเมล HTML ควรรวมเวอร์ชันข้อความธรรมดาเพื่อผู้รับที่ไคลเอนต์อีเมลไม่รองรับ HTML Aspose.Email สำหรับ Python ผ่าน .NET มีให้ AlternateView คลาสเพื่อรวมเนื้อหา HTML และข้อความธรรมดาไว้ในข้อความเดียว ส่งเสริมความเข้ากันได้และประสบการณ์ผู้ใช้.

ตัวอย่างโค้ดต่อไปนี้พร้อมขั้นตอนแสดงวิธีส่งอีเมลที่มีเนื้อหาข้อความสำรอง:

  1. สร้างอินสแตนซ์ของ MailMessage คลาส.
  2. ตั้งค่าที่อยู่อีเมลผู้ส่งและผู้รับ.
  3. กำหนดเนื้อหา HTML ให้กับ html_body คุณสมบัติและตั้งค่า is_body_html = True.
  4. สร้าง AlternateView แบบข้อความธรรมดาโดยใช้ create_alternate_view_from_string.
  5. เพิ่มมุมมองสำรองไปยัง alternate_views คอลเลกชันของ MailMessage.
  6. สร้างและกำหนดค่า SmtpClient อินสแตนซ์
  7. ส่งอีเมลโดยใช้ send เมธอด.

วิธีส่งอีเมลจำนวนมาก

การส่งอีเมลจำนวนมากเกี่ยวข้องกับการส่งหลายข้อความพร้อมกัน — แต่ละข้อความอาจส่งถึงผู้รับคนละคน Aspose.Email มีความสามารถนี้โดยใช้ SmtpClient คลาส.

ตัวอย่างโค้ดด้านล่างแสดงวิธีส่งชุดอีเมลในครั้งเดียว:

  1. สร้างอินสแตนซ์ของ SmtpClient คลาสและกำหนดค่าโฮสต์ พอร์ต ข้อมูลประจำตัว และการตั้งค่าความปลอดภัยของมัน.
  2. สร้างหลาย MailMessage อินสแตนซ์ — แต่ละอันเป็นข้อความอีเมลที่แยกกัน.
  3. ระบุผู้ส่ง ผู้รับ เรื่อง และเนื้อหาข้อความสำหรับแต่ละอีเมล.
  4. เพิ่มทั้งหมด MailMessage ออบเจกต์ไปยัง MailMessageCollection.
  5. เรียกใช้ send เมธอดของ SmtpClient คลาส โดยส่งผ่าน MailMessageCollection เป็นอาร์กิวเมนต์.
import aspose.email as ae
from aspose.email.clients import SmtpClient, SecurityOptions
from aspose.email import MailMessage, MailMessageCollection

# Create individual email messages
message1 = MailMessage("from@gmail.com", "to1@gmail.com", "Bulk Email - Message 1", "Hello, this is message 1.")
message2 = MailMessage("from@gmail.com", "to2@gmail.com", "Bulk Email - Message 2", "Hello, this is message 2.")
message3 = MailMessage("from@gmail.com", "to3@gmail.com", "Bulk Email - Message 3", "Hello, this is message 3.")

# Add messages to a collection
many_messages = MailMessageCollection()
many_messages.append(message1)
many_messages.append(message2)
many_messages.append(message3)

# Configure SMTP client
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO

# Send all messages in bulk
client.send(many_messages)

ส่งอีเมลด้วยการสนับสนุนหลายการเชื่อมต่อ

Aspose.Email สำหรับ Python ผ่าน .NET อนุญาตให้คุณใช้การเชื่อมต่อหลาย ๆ พร้อมกันเมื่อส่งอีเมลผ่าน SmtpClient คลาส คุณลักษณะนี้สามารถช่วยเพิ่มประสิทธิภาพเมื่อส่งอีเมลจำนวนมากโดยกระจายภาระงานไปยังหลายการเชื่อมต่อ อย่างไรก็ตาม การเปิดใช้งานโหมดการเชื่อมต่อหลายเส้นไม่ได้รับประกันว่าจะเพิ่มประสิทธิภาพในทุกสถานการณ์ — ขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์และสภาพเครือข่าย.

คุณสมบัติหลัก:

  • use_multi_connection: เปิดหรือปิดโหมดการเชื่อมต่อหลายเส้นสำหรับไคลเอนต์ SMTP.

  • connections_quantity: ระบุจำนวนการเชื่อมต่อที่จะเปิดเมื่อเปิดใช้งานโหมดการเชื่อมต่อหลายเส้น.

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเปิดโหมดการเชื่อมต่อหลายเส้น:

  1. สร้างและกำหนดค่าตัวอย่างของ SmtpClient.
  2. ตั้งค่ารายละเอียดเซิร์ฟเวอร์ เช่น โฮสต์ พอร์ต ชื่อผู้ใช้ รหัสผ่าน และการเข้ารหัส.
  3. เปิดโหมดการเชื่อมต่อหลายเส้นโดยตั้งค่า use_multi_connection.
  4. ระบุจำนวนการเชื่อมต่อด้วย connections_quantity.
import aspose.email as ae

client = ae.clients.smtp.SmtpClient
client.host = "<HOST>"
client.username = "<USERNAME>"
client.password = "<PASSWORD>"
client.port = 587
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.send(messages)

ส่งอีเมลในรูปแบบ TNEF

Transport Neutral Encapsulation Format (TNEF) คือรูปแบบอีเมลที่เป็นกรรมสิทธิ์ที่ใช้โดย Microsoft Outlook และ Exchange เพื่อคงรูปแบบที่หลากหลาย วัตถุฝัง และฟีเจอร์พิเศษเช่นปุ่มโหวต ลูกค้าอีเมลมาตรฐานอาจไม่คงรูปแบบนี้เมื่อใช้ข้อความแบบ MIME ธรรมดา.

Aspose.Email สำหรับ Python ผ่าน .NET รองรับการส่งอีเมลในรูปแบบ TNEF เพื่อให้การจัดรูปแบบและฟีเจอร์ขั้นสูงทั้งหมดคงอยู่ การทำเช่นนี้ทำได้โดยเปิดใช้งาน use_tnef คุณสมบัติของ SmtpClient คลาส.

ตัวอย่างโค้ดต่อไปนี้พร้อมขั้นตอนแสดงวิธีส่งอีเมล TNEF:

  1. โหลดข้อความ EML ที่มีอยู่หรือสร้างใหม่โดยใช้ MailMessage คลาส.
  2. ตั้งค่าที่อยู่ผู้ส่งและผู้รับ.
  3. เปิดการฟอร์แมต TNEF โดยตั้งค่า use_tnef = True บน SmtpClient อินสแตนซ์
  4. ส่งข้อความโดยใช้ send() เมธอด.

ส่งคำขอประชุมผ่านอีเมล

Microsoft Outlook และไคลเอนต์อีเมลที่รองรับปฏิทินอื่น ๆ เช่น IBM Lotus Notes อนุญาตให้ผู้ใช้จัดการนัดหมายโดยตรงจากกล่องขาเข้า เมื่อผู้ใช้ได้รับคำเชิญประชุม พวกเขาสามารถตอบรับหรือปฏิเสธได้โดยตรงในไคลเอนต์อีเมล ด้วย Aspose.Email สำหรับ Python ผ่าน .NET นักพัฒนาสามารถสร้างและส่งคำเชิญประชุมเหล่านี้โดยอัตโนมัติตามมาตรฐาน iCalendar (RFC 2445).

วิธีส่งคำเชิญประชุมผ่านอีเมล

Aspose.Email มีการสนับสนุนในตัวสำหรับการสร้างและส่งคำขอการประชุม iCalendar เป็นส่วนหนึ่งของอีเมล คำขอเหล่านี้เข้ากันได้กับไคลเอนต์ปฏิทินที่นิยมและอนุญาตให้ผู้รับตอบรับคำเชิญได้อย่างง่ายดาย.

|คำขอประชุม iCalendar ส่งทางอีเมล| | :- | |todo:image_alt_text|

ส่วนโค้ดต่อไปนี้แสดงวิธีส่งคำขอผ่านอีเมล:

  1. สร้าง MailMessage อินสแตนซ์
  2. ระบุที่อยู่อีเมลของผู้ส่งและผู้รับ.
  3. สร้าง Appointment ออบเจกต์ที่มีตำแหน่ง เวลาเริ่ม/สิ้นสุด ผู้ส่ง และผู้รับ.
  4. ตั้งค่าสรุปและคำอธิบายของการนัดหมาย.
  5. แนบการนัดหมายเข้ากับอีเมลโดยใช้ add_alternate_view().
  6. ส่งอีเมลโดยใช้ SmtpClient.

รองรับ iCalendar สำหรับ IBM Lotus Notes

Aspose.Email ใช้รูปแบบ iCalendar (RFC 2445) ซึ่งทำให้คำขอการประชุมของคุณเข้ากันได้กับ Microsoft Outlook, IBM Lotus Notes และไคลเอนต์อื่น ๆ ที่รองรับมาตรฐานเดียวกัน กระบวนการเดียวกันสามารถใช้ได้ไม่ว่าผู้รับจะใช้แพลตฟอร์มใด.

ส่งต่ออีเมลโดยใช้ SMTP Client

การส่งต่ออีเมลเป็นงานทั่วไปในการสื่อสารดิจิทัล มักใช้เพื่อแชร์ข้อความที่รับกับผู้อื่น Aspose.Email สำหรับ Python ผ่าน .NET อนุญาตให้นักพัฒนาส่งต่ออีเมลโดยอัตโนมัติด้วย SmtpClient คลาส วิธีการ forward ช่วยให้ส่งต่ออีเมลที่บันทึกหรือรับไปยังผู้รับใหม่โดยไม่ต้องเกี่ยวข้องกับผู้ส่งต้นฉบับ.

ด้านล่างเป็นตัวอย่างโค้ดที่แสดงวิธีส่งต่ออีเมลโดยใช้ MailMessage คลาส:

ส่งต่อไฟล์ EML โดยไม่โหลดเข้าสู่ MailMessage

Aspose.Email ยังรองรับการส่งต่อไฟล์ .eml โดยตรงโดยไม่ต้องโหลดเข้าไปใน MailMessage ออบเจกต์ สิ่งนี้มีประโยชน์เป็นพิเศษในกรณีที่ต้องลดการใช้หน่วยความจำของระบบ.

ตัวอย่างโค้ดด้านล่างแสดงวิธีส่งต่อไฟล์ EML โดยตรง:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient(host, smtp_port, username, password, ae.clients.SecurityOptions.AUTO)
file = open("test.eml", "rb")
client.forward(sender, recipients, file)