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

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

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

一、安装yagmail模块

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

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

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

python windows 发送邮件 python如何发送邮件_python发邮件11002

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()

参考链接: