一、連接SMTP服務(wù)器
首先需要連接SMTP服務(wù)器,SMTP(Simple Mail Transfer Protocol)是用于郵件發(fā)送的協(xié)議。Python的smtplib模塊可以連接SMTP服務(wù)器,并通過它發(fā)送郵件。下面是代碼示例:
import smtplib
smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'your email'
password = 'your password'
server = smtplib.SMTP(smtp_server, smtp_port)
server.ehlo()
server.starttls()
server.login(username, password)
- smtp_server:SMTP服務(wù)器的地址,如Gmail、Hotmail、Yahoo等都有各自的SMTP服務(wù)器。
- smtp_port:SMTP服務(wù)器運行的端口,一般都是25或587。
- username和password:發(fā)件人的郵箱地址和密碼,需要用它們登錄SMTP服務(wù)器。
這里假設(shè)你使用Gmail作為SMTP服務(wù)器,你需要自己替換smtp_server、username和password。
首先使用SMTP()函數(shù)創(chuàng)建一個SMTP對象,然后使用ehlo()函數(shù)打招呼,使用starttls()函數(shù)啟動TLS加密,最后使用login()函數(shù)登錄SMTP服務(wù)器。
二、構(gòu)造郵件內(nèi)容
郵件通常包含郵件主題、收件人、發(fā)件人、郵件內(nèi)容和附件等信息。下面是一個基本的郵件構(gòu)造示例:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
subject = 'Test email'
from_addr = 'sender email'
to_addr = 'receiver email'
body = 'Hello, This is a test email.'
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
- MIMEText:郵件的消息內(nèi)容,包括郵件正文和格式。
- MIMEMultipart:郵件對象,可包含郵件的所有信息,包括附件等。
這里使用MIMEText()函數(shù)創(chuàng)建一個純文本郵件內(nèi)容,然后使用MIMEMultipart()函數(shù)創(chuàng)建一個郵件對象。設(shè)置發(fā)件人、收件人和主題等信息后,將郵件內(nèi)容添加到郵件對象中。
三、發(fā)送郵件
郵件構(gòu)造完成后,可以使用sendmail()函數(shù)將郵件發(fā)送出去:
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
- from_addr和to_addr:發(fā)件人和收件人的郵件地址。
- msg.as_string():將msg(郵件對象)轉(zhuǎn)換為str類型。
發(fā)送郵件后,用quit()函數(shù)關(guān)閉SMTP連接。
代碼示例:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'your email'
password = 'your password'
from_addr = 'sender email'
to_addr = 'receiver email'
subject = 'Test email'
body = 'Hello, This is a test email.'
server = smtplib.SMTP(smtp_server, smtp_port)
server.ehlo()
server.starttls()
server.login(username, password)
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
以上就是使用Python的smtplib模塊輕松實現(xiàn)郵件發(fā)送功能的方法。