前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(四十七) python email电子邮件发送普通文本、附件、html格式邮件

(四十七) python email电子邮件发送普通文本、附件、html格式邮件

作者头像
XXXX-user
修改2019-07-30 10:34:48
1.9K0
修改2019-07-30 10:34:48
举报
文章被收录于专栏:不仅仅是python

各位读者大大们大家好,今天学习使用smtplib发送电子邮件,并记录学习过程欢迎大家一起交流分享。

新建一个python文件命名为py3_email.py,在这个文件中进行操作代码编写:

代码语言:javascript
复制
import os
import smtplib
from email.message import EmailMessage
import imghdr
#这里使用qq邮箱进行测试
#发送普通文本
#从环境变量中获取
#电子邮箱地址和密码
EMAIL_ADDRESS = os.environ.get('EMAIL_ADDRESS')
EMAIL_PASSWORD = os.environ.get('EMAIL_PASSWORD')
#获取收件人的邮箱地址
EMAIL_RECEVIER = os.environ.get('EMAIL_RECEVIER')

with smtplib.SMTP('smtp.qq.com',25) as smtp:
  #使用ehlo识别smtp服务器
  smtp.ehlo()
  #启用TLS
  smtp.starttls()
  #再次识别smtp
  smtp.ehlo()
  #登录smtp
  smtp.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
  #smtp.set_debuglevel(1)调试使用
  subject = 'hello where are you ?'
  body ='Hi In China!!!!!!'
  msg = f'{subject}\n\n{body}'
  smtp.sendmail(EMAIL_ADDRESS,EMAIL_RECEVIER,msg)
##注意这里测试的时候,发件人使用的是qq邮箱
##使用163邮箱作为发件人会出很多问题。
##这里的密码是邮箱的授权码 需要自己登录到邮箱进行设置

####使用EmailMessage对象设置邮件主题内容发送
e_msg = EmailMessage()
e_msg['Subject'] = 'Life is short !!!'
e_msg['From']  = EMAIL_ADDRESS
e_msg['To'] = EMAIL_RECEVIER
e_msg.set_content('How about python?')
with smtplib.SMTP('smtp.qq.com',25) as smtp:
  smtp.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
  smtp.send_message(e_msg)

##发送带附件的邮件
e_msg = EmailMessage()
e_msg['Subject'] = 'Image from my PC!!!'
e_msg['From']  = EMAIL_ADDRESS
e_msg['To'] = EMAIL_RECEVIER
e_msg.set_content('Image moto attached。。。')
#打开图片,添加图片信息到e_msg中
with open('0.jpg','rb') as f:
  file_data = f.read()
  file_type = imghdr.what(f.name)
  file_name = f.name
e_msg.add_attachment(file_data,maintype='image',subtype=file_type,filename=file_name)
#也可以添加多张图片,使用for实现即可
#如果是pdf文件做如下调整
#e_msg.add_attachment(file_data,maintype='application',subtype='octet-stream',filename=file_name)
#其他格式文件可参考api
with smtplib.SMTP('smtp.qq.com',25) as smtp:
  smtp.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
  smtp.send_message(e_msg)

####发送一个HTML格式的邮件
e_msg = EmailMessage()
e_msg['Subject'] = 'html email send!!!'
e_msg['From']  = EMAIL_ADDRESS
e_msg['To'] = EMAIL_RECEVIER
e_msg.set_content('This is a plain text email')
e_msg.add_alternative("""\
<!DOCTYPE html>
<html>
    <body>
        <h1 style="color:SlateGray;">This is an HTML Email!</h1>
    </body>
</html>
""", subtype='html')
with smtplib.SMTP('smtp.qq.com',25) as smtp:
  smtp.login(EMAIL_ADDRESS,EMAIL_PASSWORD)
  smtp.send_message(e_msg)

今天初学python使用smtplib发送电子邮件学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

yale记公众号

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yale记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关注公号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档