在Python的Flask框架下收发电子邮件需要使用到Python标准库中的smtplib
和email
模块。
- 安装
Flask-Mail
在开始之前,需要先安装Flask-Mail
。
可以在终端中使用以下命令进行安装:
pip install Flask-Mail
或者在服务器/虚拟环境中使用以下命令进行安装:
sudo pip install Flask-Mail
- 发送电子邮件
使用smtplib
模块发送电子邮件的基本过程如下:
- 连接邮件服务器
- 登录邮件服务器
- 构造邮件
- 发送邮件
- 退出邮件服务器
下面是一个示例代码:
from flask_mail import Mail, Message
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your-email@qq.com'
app.config['MAIL_PASSWORD'] = 'your-password'
mail = Mail(app)
def send_email(to, subject, body):
msg = Message(subject=subject, sender=app.config['MAIL_USERNAME'], recipients=[to])
msg.body = body
mail.send(msg)
to = 'recipient-email@example.com'
subject = 'Test Email'
body = 'This is a test email'
send_email(to, subject, body)
- 接收电子邮件
使用poplib
模块接收电子邮件的基本过程如下:
- 连接邮件服务器
- 登录邮件服务器
- 选择要读取的邮件
- 读取邮件内容
- 修改邮件状态为已读
- 关闭连接
下面是一个示例代码:
import poplib
import email
mail_server = 'pop.qq.com'
username = 'your-email@qq.com'
password = 'your-password'
mail = poplib.POP3_SSL(mail_server)
mail.set_debuglevel(1)
mail.user(username)
mail.pass_(password)
number = len(mail.list()[1])
for i in range(number):
resp, lines, octets = mail.retr(i+1)
msg_content = b'\r\n'.join(lines).decode('utf-8')
msg = email.message_from_string(msg_content)
print('From:', email.utils.parseaddr(msg['From']))
print('To:', email.utils.parseaddr(msg['To']))
print('Subject:', msg['Subject'])
print('Content:', msg.get_payload(decode=True))
mail.dele(i+1)
mail.quit()
这段代码将打印出每封邮件的发件人、收件人、主题和内容。
需要注意的是,在读取邮件内容时,需要根据邮件的编码方式来进行解码。在这个示例中,使用了decode=True
来解码邮件内容的base64编码。
希望这个教程对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python的Flask框架下收发电子邮件的教程 - Python技术站