一、半天方案都不理想
二、决定
1、存储发出报告的整个MIMEMultipart
2、后端提取出来,拼接成回复内容发出去
3、仅供参考,烦死我了,不用message id,死活找不到
在使用smtplib回复邮件时,可以在邮件正文中包含原邮件的内容,以实现引用某一封邮件的效果。具体步骤如下:
1. 获取原邮件的内容,可以使用Python内置的`imaplib`或第三方库`pyzmail`等来实现。
2. 在回复邮件的正文中,使用`>`符号来引用原邮件的内容。可以根据需要选择只引用部分内容或全部内容。
3. 将引用的原邮件内容和回复邮件的内容合并为一个字符串,作为回复邮件的正文。
4. 将合并后的字符串作为参数传递给`smtplib`的`sendmail`方法,发送回复邮件。
下面是一个示例代码,演示如何使用`smtplib`回复邮件并包含原邮件的内容:
```python
import smtplib
from email.mime.text import MIMEText
# 假设以下是原邮件的内容
original_content = """
Hi John,
This is the original email content.
Best regards,
Alice
"""
# 假设以下是回复邮件的内容
reply_content = """
Hi Alice,
This is my reply.
> {}
> On 2021-10-01, Alice wrote:
> > Hi John,
> >
> > This is the original email content.
> >
> > Best regards,
> > Alice
Best regards,
John
""".format(original_content.strip().replace('\n', '\n> '))
# 构造回复邮件的MIMEText对象
msg = MIMEText(reply_content)
# 设置邮件头部信息
msg['Subject'] = 'Re: Original email subject'
msg['From'] = 'john@example.com'
msg['To'] = 'alice@example.com'
msg['In-Reply-To'] = '<original-message-id@example.com>'
msg['References'] = '<original-message-id@example.com>'
# 发送邮件
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'john@example.com'
smtp_password = 'password'
smtp_conn = smtplib.SMTP(smtp_server, smtp_port)
smtp_conn.starttls()
smtp_conn.login(smtp_username, smtp_password)
smtp_conn.sendmail('john@example.com', 'alice@example.com', msg.as_string())
smtp_conn.quit()
```
在上面的示例代码中,`original_content`变量存储了原邮件的内容,`reply_content`变量存储了回复邮件的内容,其中使用`>`符号来引用原邮件的内容。在构造回复邮件的`MIMEText`对象时,设置了`In-Reply-To`和`References`头部信息,以指定回复邮件是针对哪一封原邮件的。最后调用`smtplib`的`sendmail`方法发送回复邮件。
三、做个邮件功能,做的都快得抑郁症了卧槽
1、由于不熟悉、再加上代码烂,迟迟确定不了方案
2、决定将MIMEMultipart对象整个存储,转为字符串存储
3、决定mysql采用中等的text进行存储
4、幸亏知道MIMEMultipart可以反序列化出来,不然我真疯了
5、需要取出来MIMEMultipart对象,进行修改内容,再次发送出去..因为我发现无法添加多个MIMETEXT
6、经过思考还是觉得不靠谱,几十万封邮件,全部存储的话,占用磁盘又大,如果增加开关,业务逻辑又太多了
四、改变方案,改由从邮箱中搜索邮件
1、缺点,无法继续使用flask_email去搜索邮件(无法读取)
Flask-Email是一个Flask扩展,用于发送电子邮件。如果您想要读取邮件,您需要使用Python的内置`imaplib`模块。以下是一个简单的示例,演示如何使用`imaplib`模块从Gmail收件箱中读取邮件
2、读取邮件逻辑需要自己封装一下,我还是跟GPT要一个吧
imaplib 读取发件箱
imaplib 读取发件箱,返回某个邮件的内容,同时再转发出去
五、我应该系统学一下邮件协议呀,不然写的多累