Fork me on GitHub

Python:发送邮件或发带附件的邮件

在进行发邮件之前,首先了解两个模块:smtplib和email。

smtplib模块主要是负责发送邮件的,是一个发邮件的动作,比如连接邮箱服务,登录邮箱,发送邮件等。

email模块主要是负责构造邮件,是显示邮件页面的一些内容,比如发件人,收件人,主题,附件,正文等。

 

本文使用的是163邮箱作为测试邮箱。

注:163邮箱开启smtp需要进行授权 客户端授权码 ,不再支持邮箱密码进行测试。

1、使用Python发Text 邮件

 

import smtplib
# 发送字符串的邮件
from email.mime.text import MIMEText

# 设置服务器所需信息
fromEmailAddr = '发件人邮箱地址'  # 邮件发送方邮箱地址
password = 'email password'  # 密码(部分邮箱为授权码)
toEmailAddrs = ['接收方地址']  # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发

# 设置email信息
# ---------------------------发送字符串的邮件-----------------------------
# 邮件内容设置
message = MIMEText('hello,test Python send Email.', 'plain', 'utf-8')
# 邮件主题
message['Subject'] = 'python test email'
# 发送方信息
message['From'] = fromEmailAddr
# 接受方信息
message['To'] = toEmailAddrs[0]
# ---------------------------------------------------------------------


# 登录并发送邮件
try:
    server = smtplib.SMTP('smtp.163.com')  # 163邮箱服务器地址,端口默认为25
    server.login(fromEmailAddr, password)
    server.sendmail(fromEmailAddr, toEmailAddrs, message.as_string())
    print('success')
    server.quit()
except smtplib.SMTPException as e:
    print("error:", e)

 

2、使用Python发送带附件的邮件

 

import smtplib
# 发送字符串的邮件
from email.mime.text import MIMEText
# 需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart

# 设置服务器所需信息
fromEmailAddr = '发件人邮箱地址'  # 邮件发送方邮箱地址
password = 'email password'  # 密码(部分邮箱为授权码)
toEmailAddrs = ['收件人地址']  # 邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发

# 设置email信息
# ---------------------------发送带附件邮件-----------------------------
# 邮件内容设置
message =  MIMEMultipart()
# 邮件主题
message['Subject'] = 'python test email'
# 发送方信息
message['From'] = fromEmailAddr
# 接受方信息
message['To'] = toEmailAddrs[0]
# 邮件正文内容
message.attach(MIMEText('hello,test Python send Email', 'plain', 'utf-8'))

# 构造附件
att1 = MIMEText(open('text.txt', 'rb').read(), 'base64', 'utf-8')
att1['Content-type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment; filename="test.zip"'
message.attach(att1)
# ---------------------------------------------------------------------

# 登录并发送邮件
try:
    server = smtplib.SMTP('smtp.163.com')  # 163邮箱服务器地址,端口默认为25
    server.login(fromEmailAddr, password)
    server.sendmail(fromEmailAddr, toEmailAddrs, message.as_string())
    print('success')
    server.quit()
except smtplib.SMTPException as e:
    print("error:", e)

 

posted @ 2020-11-11 22:24  元芳啊  阅读(1081)  评论(0编辑  收藏  举报