一、SMTP協議簡介
SMTP(Simple Mail Transfer Protocol)是一種用於發送電子郵件的標準協議。SMTP服務器提供了一種用於發送郵件的簡單而強大的方式。使用Python可以輕鬆地通過SMTP協議發送電子郵件。在Python中,smtplib是負責與SMTP服務器通信的模塊。
二、SMTP連接
在Python中,使用smtplib.SMTP類來連接SMTP服務器,SMTP類的構造函數需要兩個參數:SMTP服務器的主機名和端口號。SMTP服務器的主機名可以是IP地址或域名。下面是連接SMTP服務器的代碼示例:
import smtplib smtp_server = "smtp.qq.com" smtp_port = 465 smtp_username = "example@qq.com" smtp_password = "password" smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password)
三、發送郵件
通過SMTP連接對象,可以使用sendmail方法發送郵件。該方法需要三個參數:發件人地址、收件人地址和郵件內容。
import smtplib smtp_server = "smtp.qq.com" smtp_port = 465 smtp_username = "example@qq.com" # 發件人地址 smtp_password = "password" # 郵箱密碼 to_addr = "example2@qq.com" # 收件人地址 subject = "Python SMTP郵件測試" # 郵件主題 body = "這是一封PythonSMTP郵件測試。\n" # 郵件內容 msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" % (smtp_username, to_addr, subject, body) smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password) smtp_conn.sendmail(smtp_username, to_addr, msg) smtp_conn.quit()
四、郵件內容設置
發送郵件時,需要設置郵件主題和內容。郵件主題和內容都可以包含HTML標籤。可以使用email.mime模塊中的MIMEText類來創建郵件主題和內容。
import smtplib from email.mime.text import MIMEText smtp_server = "smtp.qq.com" smtp_port = 465 smtp_username = "example@qq.com" # 發件人地址 smtp_password = "password" # 郵箱密碼 to_addr = "example2@qq.com" # 收件人地址 # 郵件主題 subject = "Python SMTP郵件測試" # 郵件內容 content = "這是一封PythonSMTP郵件測試。
郵件內容可以包含HTML標籤。
" msg = MIMEText(content, "html", "utf-8") msg["Subject"] = subject msg["From"] = smtp_username msg["To"] = to_addr smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password) smtp_conn.sendmail(smtp_username, to_addr, msg.as_string()) smtp_conn.quit()
五、郵件附件
有時需要在郵件中添加附件。可以使用email.mime模塊中的MIMEMultipart類來創建帶有附件的郵件。
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication smtp_server = "smtp.qq.com" smtp_port = 465 smtp_username = "example@qq.com" # 發件人地址 smtp_password = "password" # 郵箱密碼 to_addr = "example2@qq.com" # 收件人地址 # 郵件主題 subject = "Python SMTP郵件測試" # 郵件內容 content = "這是一封PythonSMTP郵件測試。
郵件內容可以包含HTML標籤。
" # 創建一個帶有附件的郵件 msg = MIMEMultipart() msg["Subject"] = subject msg["From"] = smtp_username msg["To"] = to_addr # 添加郵件內容 text = MIMEText(content, "html", "utf-8") msg.attach(text) # 添加附件 file_path = "test.zip" with open(file_path, "rb") as f: att = MIMEApplication(f.read()) att.add_header("Content-Disposition", "attachment", filename=file_path) msg.attach(att) smtp_conn = smtplib.SMTP_SSL(smtp_server, smtp_port) smtp_conn.login(smtp_username, smtp_password) smtp_conn.sendmail(smtp_username, to_addr, msg.as_string()) smtp_conn.quit()
六、小結
使用Python SMTP發送郵件非常簡單,只需要連接SMTP服務器,設置郵件主題和內容,然後發送即可。使用email.mime模塊可以創建帶有附件的郵件。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/288742.html