1、python发送普通文本的邮件
import smtplib
from email.mime.text import MIMEText # 往邮件里写东西的对象
from email.header import Header # 邮件头写东西
# 发件方邮箱:谁发送的
msg_from = "2534661797@qq.com"
# 邮箱授权码
password = "nqspgnomznerebgh"
# 发给谁
msg_to = 'lihao_python@163.com'
# 邮件主题
subject = "测试邮箱"
# 邮件内容
content = "我是邮件内容"
# 创建一个MIMEText对象
msg = MIMEText(content)
# 放入邮件主题
msg['Subject'] = subject
# 也可以这样传参
msg['Subject'] = Header(subject,'utf-8')
# 放入发件人
msg['From'] = msg_from
# 放入收件人
msg['To'] = msg_to
try:
# 通过ssl方式发送,服务器地址,端口
s = smtplib.SMTP_SSL('smtp.qq.com',465)
# 登录到邮箱
s.login(msg_from,password)
# 发送邮件
s.sendmail(msg_from,msg_to,msg.as_string())
print("发送成功")
except s.SMTPExcetion as e:
print(e)
finally:
s.quit()
2、发送html内容邮件,只需要将content改成html代码就行
# 邮件内容
content = '''
<p>Python 邮件发送测试...</P>
<p><a href='https://www.baidu.com'>这是一个链接</a></P>
'''
3、发送带附件的邮件
# 发件方邮箱:谁发送的
msg_from = "2534661797@qq.com"
# 邮箱授权码
password = "nqspgnomznerebgh"
# 发给谁
msg_to = 'lihao_python@163.com'
# 邮件主题
subject = "这是今日日报,请查收!"
# 创建一个带附件的实例
msg = MIMEMultipart()
# 放入邮件主题
msg['Subject'] = subject
# 也可以这样传参
# msg['Subject'] = Header(subject,'utf-8')
# 放入发件人
msg['From'] = msg_from
# 放入收件人
msg['To'] = msg_to
# 邮件正文内容
msg.attach(MIMEText('今日日报:1xxx','plain','utf-8'))
# 添加附件-txt
# 构建附件1,传送当前目录下的test.txt文件
att1 = MIMEText(open("test.txt",'rb').read(),'base64','utf-8')
att1['Content-Type'] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件显示什么名字
att1['Content-Disposition'] = 'attachment;filename="test.xt"'
msg.attach(att1)
# 添加附件-图片
# 构建附件2,传送当前目录下的图片
with open('test.jpg','rb') as f:
# 设置附件的MIME和文件名,这里是jpg类型
mime = MIMEBase('image','jpg',filename='test.jpg')
# 加上必要的头信息:
mime.add_header('Content-Disposition','attachment',filename='test.jpg')
mime.add_header('Content-ID','<0>')
mime.add_header('X-Attachment-ID','0')
# 把附件的内容读进来
mime.set_payload(f.read())
# 用base64编码
encoders.encode_base64(mime)
# 添加到MIMEMultipart中
msg.attach(mime)
try:
# 通过ssl方式发送,服务器地址,端口
s = smtplib.SMTP_SSL('smtp.qq.com',465)
# 登录到邮箱
s.login(msg_from,password)
# 发送邮件
s.sendmail(msg_from,msg_to,msg.as_string())
print("发送成功")
except s.SMTPExcetion as e:
print(e)
finally:
s.quit()