SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
除了上面这种发邮件的方法,yagmail也可以更简单的来实现自动发邮件功能
一、安装yagmail模块
二、使用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 importemail.mime.multipart2 importemail.mime.text3 importsmtplib4 msg = email.mime.multipart.MIMEMultipart() #创建消息对象
5 msg['from'] = '5822XXXX@qq.com' #指定发件人,即邮件头展示的内容
6 msg['to'] = '8364XXXXXX@qq.com' #指定收件人,即邮件尾展示的内容
7 msg['subject'] = '这是一个测试邮件!' #写明邮件主题
8
9 context = '''
10
老师好
11 你好,12 这是一封自动发送的邮件。13 www.ustchacker.com hello14 ''' #定义邮件内容
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()
参考链接: