Python学习笔记(十八)——发邮件的两种方法

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

除了上面这种发邮件的方法,yagmail也可以更简单的来实现自动发邮件功能

一、安装yagmail模块

之前的文章中已经写明安装模块的方法有三种这里就不在进行阐述。如果需要请参考链接:https://www.cnblogs.com/beginner-boy/p/7247688.html

二、使用yagmail发送邮件的简单步骤

1、邮箱的配置:这里使用QQ邮箱进行说明

首先登录QQ邮箱,然后找到设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启POP3/SMTP服务,然后生成一个登录的授权码

 

 

 

2、Python编写发送邮件的代码

  1、登录邮箱

  2、发送邮箱内容

3、发邮件的简单示例

1 import yagmail  #导入第三方模块
2 user = '582238XXX@qq.com'  #邮箱的用户名
3 password = '配置邮箱服务时获取的密码'  #邮箱的密码
4 #登录邮箱
5 login_mail = yagmail.SMTP(host='smtp.qq.com',user=user,password=password,smtp_ssl=True) #如果是QQ邮箱需要加入参数smtp_ssl=True,如果是其它邮箱则不用加
6 #发送邮件内容
7 login_mail.send(to='83648XXXX@qq.com',cc='11598XXXX@qq.com',subject='发邮件',contents='这是一个测试邮件信息!',attachments='发邮件.py')

发邮件内容中的参数说明:

  to:目标人 ,如果想发送多个,那么直接写一个list列表即可实现
  cc:抄送人
  subject:主题
  contents:内容
  attachments:附件

给多个用户发送邮件,则只需要在to参数后边加入一个list即可。如果是抄送多个人的时候也是添加一个list即可

login_mail.send(to=['83648XXXX@qq.com',BB@.com,CC@.com],cc='11598XXXX@qq.com',subject='发邮件',contents='这是一个测试邮件信息!',attachments='发邮件.py')

注意:使用Python源安装的yagmail文件,附件如果是中文的话则会显示乱码;可以使用如下链接的安装包即可解决该问题:https://pan.baidu.com/s/1bKHD2xNh-JZC3tOOVGipEQ 提取码:vr3a

三、使用Python自带的smtplib模块 发送包含附件的邮件

1、python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

2、smtplib模块 发送邮件的步骤:

    1、创建一个SMTP对象

    2、连接SMTP服务器,端口一般是465

    3、登录自己的邮箱账号

    4、调用发送消息函数,参数:发件人、收件人、消息内容

    5、关闭连接

3、实例

 1 import email.mime.multipart
 2 import email.mime.text
 3 import smtplib
 4 msg = email.mime.multipart.MIMEMultipart()  #创建消息对象
 5 msg['from'] = '5822XXXX@qq.com'  #指定发件人,即邮件头展示的内容
 6 msg['to'] =  '8364XXXXXX@qq.com'    #指定收件人,即邮件尾展示的内容
 7 msg['subject'] = '这是一个测试邮件!'  #写明邮件主题
 8 
 9 context = '''        
10     <h1>老师好</h1>
11     你好,
12      这是一封自动发送的邮件。
13       www.ustchacker.com hello
14     '''          #定义邮件内容
15 
16 text = email.mime.text.MIMEText(_text=context, _subtype="html") #_text代表邮件内容,_subtype代表邮件内容的发送形式
17 msg.attach(text)
18 
19 em = smtplib.SMTP_SSL()
20 em.connect("smtp.qq.com", 465)
21 em.login("5822XXXXX@qq.com", 'aabdlkdlddldld')
22 em.sendmail(from_addr='5822XXXXX@qq.com', to_addrs='8364XXXXX@qq.com', msg=msg.as_string())
23 em.quit()

参考链接:

https://blog.csdn.net/chinesepython/article/details/82465947

https://blog.csdn.net/freesigefei/article/details/51313155?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

https://www.cnblogs.com/fnng/p/7967213.html

posted on 2020-03-25 16:07  随风迎  阅读(501)  评论(0编辑  收藏  举报

导航