smtplib和email介绍
python
发送邮件需要用到python
自带的两个模块,smtplib
和email
。直接import
导入,无需下载。
python
的smtplib
提供了一种很方便的途径发送电子邮件,它对smtp
协议进行了简单的封装。
smtplib的用法
- 创建
SMTP
的操作对象并连接smtp
目标服务器,可以是163、QQ
等 - 根据自己的账号登录目标服务器
调用对象中的方法,发送邮件到目标地址
python
与smtp
服务器之间的具体交互的通用代码
import smtplib
server = smtplib.SMTP(mailserver, port) # 发件人邮箱中的SMTP服务器,端口是25
server.login(sender, passwd) # 发件人邮箱账号、邮箱授权码
# msg.as_string()中as_string()是将msg(MIMEText或MIMEMultipart对象)变为str。
server.sendmail(sender, receive, msg.as_string())
server.quit()
- 常用邮箱的
smtp
服务器地址
新浪邮箱:smtp.sina.com
搜狐邮箱:smtp.sohu.com
qq
邮箱:smtp.qq.com
email模块的详细理解和使用
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
MIMEText
对象,表示一个文本邮件对象,MIMEImage
对象,表示一个作为附件的图片对象,MIMEMultipart
对象,把多个对象组合起来,代表的是整个邮件。
python邮件发送
import smtplib
from email.mime.text import MIMEText
mailserver = "smtp.163.com" #邮箱服务器地址
username_send = 'qian_info@163.com' #邮箱用户名
password = 'DPFVZK' #邮箱密码:需要使用授权码--填写自己独有的
username_recv = ['184710@qq.com','20318@qq.com'] #收件人,多个收件人用逗号隔开
mail = MIMEText('小王,这是用python发送的一个测试文件,将会用于监控提醒使用。\n你看能收到吗')
mail['Subject'] = '这是邮件主题'
mail['From'] = username_send #发件人
mail['To'] = ",".join(username_recv) #收件人;[]里的三个是固定写法,别问为什么,我只是代码的搬运工
smtp = smtplib.SMTP(mailserver,port=25) # 连接邮箱服务器,smtp的端口号是25
# smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465) #QQ邮箱的服务器和端口号
smtp.login(username_send,password) #登录邮箱
smtp.sendmail(username_send,username_recv,mail.as_string())# 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
smtp.quit() # 发送完毕后退出smtp
print ('success')