如何用Python发送email及附件?
时间: 2024-04-29 10:05:18 浏览: 8
1.导入所需模块和库:
```
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
```
2.设置发送邮件的基本信息:
```
smtp_server = 'smtp.qq.com' # SMTP服务器地址
smtp_port = 465 # SMTP服务器端口
smtp_user = 'your_email@qq.com' # 发送邮件的邮箱
smtp_password = 'your_email_password' # 发送邮件的邮箱密码
from_addr = 'your_email@qq.com' # 发件人邮件地址
to_addr = 'receiver_email@qq.com' # 收件人邮件地址
```
3.创建邮件:
```
msg = MIMEMultipart() # 创建邮件实例
msg['From'] = from_addr # 设置发件人
msg['To'] = to_addr # 设置收件人
msg['Subject'] = '邮件主题' # 设置邮件主题
```
4.添加邮件正文:
```
content = '邮件正文'
text = MIMEText(content)
msg.attach(text) # 添加正文到邮件实例中
```
5.添加附件:
```
with open('file_path', 'rb') as f:
attachment = MIMEApplication(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename='file_name')
msg.attach(attachment) # 添加附件到邮件实例中
```
6.发送邮件:
```
with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
server.login(smtp_user, smtp_password) # 登录SMTP服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送邮件
```
完整代码示例:
```
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
smtp_server = 'smtp.qq.com' # SMTP服务器地址
smtp_port = 465 # SMTP服务器端口
smtp_user = 'your_email@qq.com' # 发送邮件的邮箱
smtp_password = 'your_email_password' # 发送邮件的邮箱密码
from_addr = 'your_email@qq.com' # 发件人邮件地址
to_addr = 'receiver_email@qq.com' # 收件人邮件地址
msg = MIMEMultipart() # 创建邮件实例
msg['From'] = from_addr # 设置发件人
msg['To'] = to_addr # 设置收件人
msg['Subject'] = '邮件主题' # 设置邮件主题
content = '邮件正文'
text = MIMEText(content)
msg.attach(text) # 添加正文到邮件实例中
with open('file_path', 'rb') as f:
attachment = MIMEApplication(f.read())
attachment.add_header('Content-Disposition', 'attachment', filename='file_name')
msg.attach(attachment) # 添加附件到邮件实例中
with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
server.login(smtp_user, smtp_password) # 登录SMTP服务器
server.sendmail(from_addr, to_addr, msg.as_string()) # 发送邮件
```