一、使用Python SMTP Server發送郵件的優勢
Python提供了一個簡單而強大的SMTP模塊,方便開發者使用Python代碼發送郵件。使用Python SMTP Server發送郵件的優勢主要有以下幾點:
1、Python SMTP Server模塊提供了許多高級功能,例如SSL支持、身份驗證和多個收件人。
2、使用Python SMTP Server發送郵件比使用其他郵件客戶端發送郵件更方便和安全。
3、Python SMTP Server對於郵件服務器錯誤的處理能力很強,讓開發者可以輕鬆處理郵件發送失敗、服務器不可用和其他網絡問題。
二、Python SMTP Server發送簡單的文本郵件
下面是一個使用Python SMTP Server發送簡單文本郵件的代碼示例:
import smtplib # 發送人郵箱 sender_email = "sender@example.com" # 接收人郵箱 receiver_email = "receiver@example.com" # SMTP服務器 smtp_server = "smtp.example.com" smtp_port = 587 # 發送人郵箱及密碼 username = "sender@example.com" password = "password" # 郵件內容 message = """\ Subject: Hello, World! This is a plain text email from Python SMTP Server. """ # SSL加密方式 context = ssl.create_default_context() # 發送郵件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message)
在代碼中,我們首先將SMTP服務器的地址、端口號、郵箱和密碼等信息設置好,並將要發送的郵件內容填寫好,之後使用SMTP模塊的SMTP()
方法連接上SMTP服務器,並使用starttls()
方法開啟SSL加密。
最後使用login()
方法登錄SMTP服務器,使用sendmail()
方法將郵件發送給指定收件人。其中,sendmail()
方法的三個參數分別為發送人郵箱、接收人郵箱以及郵件內容。
三、Python SMTP Server發送帶附件郵件
下面是一個使用Python SMTP Server發送帶附件郵件的代碼示例:
import smtplib import ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication # 發送人郵箱 sender_email = "sender@example.com" # 接收人郵箱 receiver_email = "receiver@example.com" # SMTP服務器 smtp_server = "smtp.example.com" smtp_port = 587 # 發送人郵箱及密碼 username = "sender@example.com" password = "password" # 郵件內容 message = MIMEMultipart() message["From"] = sender_email message["To"] = receiver_email message["Subject"] = "Python SMTP Server with Attachment" # 添加正文 message.attach(MIMEText("This is a plain text email with attachment from Python SMTP Server.")) # 添加附件 with open("example.jpg", "rb") as attachment: part = MIMEApplication(attachment.read(), _subtype="jpg") part.add_header('Content-Disposition', "attachment", filename="example.jpg") message.attach(part) # SSL加密方式 context = ssl.create_default_context() # 發送郵件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string())
我們可以在創建郵件內容message
的時候,使用MIMEMultipart()
方法創建一個帶有多個部分的郵件。其中一部分是正文,另一部分是附件。我們使用MIMEText()
方法將正文內容添加到郵件內容中,使用MIMEApplication()
方法添加附件並指定附件的文件名,之後使用add_header()
方法指定附件的內容。
在發送郵件的時候,我們使用了as_string()
方法將郵件內容轉換為字符串形式,並使用sendmail()
方法發送郵件。
四、Python SMTP Server發送HTML郵件
下面是一個使用Python SMTP Server發送HTML郵件的代碼示例:
import smtplib import ssl from email.mime.text import MIMEText # 發送人郵箱 sender_email = "sender@example.com" # 接收人郵箱 receiver_email = "receiver@example.com" # SMTP服務器 smtp_server = "smtp.example.com" smtp_port = 587 # 發送人郵箱及密碼 username = "sender@example.com" password = "password" # 郵件內容 message = MIMEText("Hello, World!
This is a HTML email from Python SMTP Server.
", "html") message["From"] = sender_email message["To"] = receiver_email message["Subject"] = "Python SMTP Server with HTML" # SSL加密方式 context = ssl.create_default_context() # 發送郵件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string())
在這個代碼示例中,我們使用了MIMEText()
方法創建郵件內容。我們將郵件內容目標類型設置為html
,並在郵件內容中嵌入HTML標記。在最後發送郵件時,我們也是使用as_string()
方法將郵件內容轉換為字符串形式。
五、Python SMTP Server發送帶有圖片的HTML郵件
下面是一個使用Python SMTP Server發送帶有圖片的HTML郵件的代碼示例:
import smtplib import ssl from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage # 發送人郵箱 sender_email = "sender@example.com" # 接收人郵箱 receiver_email = "receiver@example.com" # SMTP服務器 smtp_server = "smtp.example.com" smtp_port = 587 # 發送人郵箱及密碼 username = "sender@example.com" password = "password" # 郵件內容 message = MIMEMultipart("related") message["From"] = sender_email message["To"] = receiver_email message["Subject"] = "Python SMTP Server with Image" # 添加HTML內容 body = """Hello, World!
This is a HTML email with image from Python SMTP Server.
""" message.attach(MIMEText(body, "html")) # 添加圖片 with open("example.jpg", "rb") as image: img = MIMEImage(image.read()) img.add_header('Content-ID', '') message.attach(img) # SSL加密方式 context = ssl.create_default_context() # 發送郵件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string())
在這個代碼示例中,我們使用了MIMEMultipart()
方法創建郵件內容,將多個郵件正文及圖片組合在一起。我們使用MIMEText()
方法將郵件正文指定為HTML格式,並在郵件內容中嵌入<img>
標記以顯示圖片。
在添加圖片img
時,我們使用了add_header()
方法指定了圖片的Content-ID。相應地,在嵌入圖片的<img>
標記中,我們使用了cid:
協議方案指定了圖片的Content-ID,達到了在HTML郵件中嵌入圖片的效果。
六、總結
通過本篇文章的介紹,我們可以看到Python SMTP Server提供了非常強大的功能,只需要幾行Python代碼即可輕鬆發送各種類型的郵件。使用Python SMTP Server不僅方便,而且也更加安全和穩定,可以滿足開發者對郵件發送的各種要求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237965.html