首先我们需要导入两个库:smtplib
和email
。
smtplib
库是Python内置的邮件传输协议的SMTP协议实现,可以实现电子邮件的发送功能。而email
库则可以方便地操作邮件内容,比如设置邮件主题、发件人、收件人、邮件正文等。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
接着,我们需要设置邮件相关参数,包括SMTP服务器地址、发件人邮箱地址和密码、邮件内容等。
smtp_server = 'smtp.163.com'
sender = 'sender@163.com'
password = 'password'
receiver = 'receiver@163.com'
# 邮件主题
subject = '测试邮件'
# 邮件正文
text = '这是一封测试邮件。'
# 设置邮件头信息
message = MIMEText(text, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
其中,MIMEText
函数用于设置邮件正文,参数包括文本内容、文本格式和编码方式。Header
函数用于设置邮件头信息,包括发件人、收件人和主题等。
然后,我们需要建立SMTP连接,并进行账户验证。在验证通过后,我们可以使用sendmail()
方法,实现邮件的发送功能。
try:
smtpObj = smtplib.SMTP(smtp_server, 25)
smtpObj.login(sender, password)
smtpObj.sendmail(sender, [receiver], message.as_string())
print('邮件发送成功!')
except smtplib.SMTPException as e:
print('邮件发送失败!错误信息:', e)
在这里我们使用try
和except
来处理邮件发送可能出现的异常。
下面给出一个完整的例子,实现邮件的自动发送功能:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = 'smtp.163.com'
sender = 'sender@163.com'
password = 'password'
receiver = 'receiver@163.com'
subject = '测试邮件'
text = '这是一封测试邮件。'
message = MIMEText(text, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP(smtp_server, 25)
smtpObj.login(sender, password)
smtpObj.sendmail(sender, [receiver], message.as_string())
print('邮件发送成功!')
except smtplib.SMTPException as e:
print('邮件发送失败!错误信息:', e)
我们也可以扩展这个例子,实现邮件多人发送功能:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = 'smtp.163.com'
sender = 'sender@163.com'
password = 'password'
receivers = ['receiver1@163.com', 'receiver2@163.com']
subject = '测试邮件'
text = '这是一封测试邮件。'
message = MIMEText(text, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(','.join(receivers), 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP(smtp_server, 25)
smtpObj.login(sender, password)
smtpObj.sendmail(sender, receivers, message.as_string())
print('邮件发送成功!')
except smtplib.SMTPException as e:
print('邮件发送失败!错误信息:', e)
在这个例子中,我们只需要将receivers
设置为一个包含多个邮箱地址的列表即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现邮件自动发送 - Python技术站