python中发送邮件主要使用的库是
> smtplib
安装命令也比较简单;
> pip install smtplib
编码实现发送邮件:
1、引入库:
```
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
```
2、定义发送函数;接收主题和内容参数
```
def mail(subject,text):
#self.my_sender='**@163.com' # 发件人邮箱账号
#self.my_pass = '****' # 发件人邮箱密码(当时申请smtp给的口令)
my_sender='***@qq.com' # 发件人邮箱账号
my_pass = '*****' # 发件人邮箱密码(当时申请smtp给的口令)
my_user='****@qq.com' # 收件人邮箱账号
try:
msg=MIMEText(text,'HTML','utf-8')
msg['From']=formataddr([my_sender,my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr([my_user,my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']= subject # 邮件的主题,也可以说是标题
#server=smtplib.SMTP("smtp.163.com", 25) # 发件人邮箱中的SMTP服务器,端口是80
server=smtplib.SMTP_SSL("smtp.exmail.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是80
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接
print('发送成功')
except Exception:# 如果 try 中的语句没有执行
print('发送失败\t\n')
```
属性说明参考注释既可;
3、调用函数;
> mail(‘测试邮件’,'测试信息。。。。')
------------------
python中发送接收邮件还有一个库
> zmail
这个库相对于上面的更简单,不过只支持python3
zmail的优点有:
```python
自动查找服务器地址及其端口
自动使用合适的协议登录
自动将python字典转换为MIME对象(带附件)
自动添加邮件标题和本地名称,以避免服务器拒绝您的邮件
轻松自定义邮件标题
支持HTML作为邮件内容
```
安装方式也比较简单:
> pip install zmail
使用方式如下:
> 以下是源码,配置自己的参数后,可直接使用;使用比较简单,不做过多说明;
```python
#! /env/bin/python3
# -*- coding: UTF-8 -*-
import zmail
mail_server = zmail.server(username='your mailbox@qq.com',password='your password')
mail = mail_server.get_latest()
print("邮件主题:", mail['Subject'])
print("邮件发送时间:", mail['Date'])
print("发送者:", mail['From'])
print("接收者:", mail['To'])
print("内容:\n", mail['content_text'])
#获取指定id的邮件
mail = mail_server.get_mail(30)
zmail.show(mails=mail)
#获取所有邮件
mails = mail_server.get_mails(start_time='2022-04-24',end_time='2022-04-25')
for mail in mails:
print('-'*20)
zmail.show(mail)
#发送邮件(带附件)
file_path = 'D://temp/1.jpg'
mail_info = {
'subject': '邮件主题',
'content_text': '测试发送邮件',
'attachments': file_path,
}
mail_server.send_mail('revice@qq.com',mail_info)
```