一、SMTP服務和Python模塊
在Python中發送電子郵件需要使用到SMTP (Simple Mail Transfer Protocol) 服務。SMTP服務提供發送電子郵件的功能,並且Python內置了smtplib模塊來支持SMTP協議。在Python3中,我們可以直接使用smtplib模塊來發送電子郵件。
以下是使用Python發送郵件的步驟:
1、連接到SMTP服務器
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
使用SMTP服務器發送郵件需要首先連接到SMTP服務器。連接SMTP服務器需要指定SMTP服務器、端口和本地主機名(可選)。例如:
2、登錄SMTP服務器
smtpObj.login( 'sender@domain.com', 'password' )
在連接SMTP服務器後,需要使用login()方法登錄SMTP服務器,該方法需要提供電子郵件地址和密碼。如果SMTP服務器需要TLS安全傳輸,則需要先使用ehlo()方法並使用starttls()方法開始TLS安全傳輸。
3、構建電子郵件
from email.mime.text import MIMEText
msg = MIMEText("This is a test email sent by Python")
msg['From'] = 'sender@domain.com'
msg['To'] = 'receiver@domain.com'
msg['Subject'] = 'Test Email'
在連續到SMTP服務器並登錄成功後,即可使用第三步構建電子郵件並發送,我們可以使用email.mime模塊來快速構建電子郵件
4、發送郵件
smtpObj.sendmail('sender@domain.com', ['receiver@domain.com'], msg.as_string())
我們可以使用sendmail()方法將電子郵件發送到SMTP服務器。該方法需要提供發送方電子郵件地址、接收方電子郵件地址以及發送的電子郵件。
二、使用SMTP發送附件
Python還可以使用SMTP服務和email.mime模塊來發送附件
1、構建多部件電子郵件
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = 'sender@domain.com'
msg['To'] = 'receiver@domain.com'
msg['Subject'] = 'Test Email with Attachment'
# 需要使用文件讀取,例如讀取本地圖片並添加到電子郵件中
with open('image.jpg', 'rb') as f:
img_data = f.read()
img = MIMEImage(img_data, name=os.path.basename('image.jpg'))
msg.attach(img)
如果要向電子郵件添加附件,則可以使用email.mime模塊中的MIMEBase類。MIMEBase類是所有MIME類型的基類,因此我們可以在此處使用MIMEImage子類。我們需要讀取文件並將其添加到MIMEImage中,然後將其添加到MIMEMultipart中。MIMEMultipart類可用於處理多部分電子郵件,包括文本、圖像和附件。
2、發送多部分電子郵件
smtpObj.sendmail('sender@domain.com', ['receiver@domain.com'], msg.as_string())
三、在Python中使用Gmail發送電子郵件
要在Python中使用Gmail發送電子郵件,需要對郵件進行身份驗證。我們需要登錄Gmail帳戶並啟用“允許較低安全性應用程序”選項。以下是使用Python發送電子郵件的步驟:
1、連接到Gmail SMTP服務器並啟用TLS安全傳輸
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.starttls()
要使用Gmail SMTP服務器,需要連接到smtp.gmail.com,端口為587,並啟用TLS安全傳輸。
2、登錄Gmail SMTP服務器
smtpObj.login('sender@gmail.com', 'password')
在連接Gmail SMTP服務器後,需要使用login()方法登錄Gmail服務器,該方法需要提供電子郵件地址和密碼。
3、構建電子郵件
msg = MIMEText('This is a test email sent by Python')
msg['Subject'] = 'Test Email'
msg['From'] = 'sender@gmail.com'
msg['To'] = 'receiver@gmail.com'
構建電子郵件的步驟與上述步驟相同。
4、發送電子郵件
smtpObj.sendmail('sender@gmail.com', ['receiver@gmail.com'], msg.as_string())
發送電子郵件的步驟與上述步驟相同。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193680.html