如何解决使用Python从电子邮件正文中删除某些文本
import imapclient
import os
import pprint
import pyzmail
import email
#my email info
EMAIL_ADRESS = os.environ.get('DB_USER')
EMAIL_PASSWORD = os.environ.get('PYTHON_PASS')
#login to my email
imap0bj = imapclient.IMAPClient('imap.gmail.com',ssl = True)
imap0bj.login(EMAIL_ADRESS,EMAIL_PASSWORD )
print("ok")
pprint.pprint(imap0bj.list_folders())
#Selecting my InBox
imap0bj.select_folder('INBox',readonly = True)
#Getting UIDs from InBox
UIDs = imap0bj.search(['SUBJECT','Contact FB Applicant','ON','16-Oct-2020'])
print(UIDs)
rawMessages = imap0bj.fetch(UIDs,['BODY[]'])
message = pyzmail.PyzMessage.factory(rawMessages[9999][b'BODY[]'])
message.text_part != None
#Body of the email returned as a string
msg = message.text_part.get_payload().decode(message.text_part.charset)
print(msg)
imap0bj.logout()
---------- Forwarded message ---------
From: Someone <Mail@mail.biz>
Date: Wed,Oct 14,2020 at 1:23 PM
Subject: Fwd: ? Contact FB Applicant?
To: <mail@mail.com>
---------- Forwarded message ---------
From: Someone <Mail@mail.biz>
Date: Wed,2020 at 1:23 PM
Subject: Fwd: ? Contact FB Applicant?
To: <mail@mail.com>
The following applicant filled out the form via Facebook. Contact
immediately.
Some Guy
999999999999
mail@mail.com
但是我不希望“转发邮件”部分。我只想从“以下申请人...”开始,然后才是我关心的信息。我如何摆脱其他东西?我非常感谢您的帮助。谢谢!
解决方法
您可以使用io.StringIO
这是您的用法。
from io import StringIO
# your code goes here
...
...
msg = message.text_part.get_payload().decode(message.text_part.charset)
sio = StringIO(msg)
sio.seek(msg.index('The following applicant'))
for line in sio:
print(line)
工作原理:
StringIO
允许您将字符串视为流(文件)。 StringIO.seek
将流的位置移动到特定位置。 (0是流的开头)
str.index
返回字符串在字符串中的第一位置。放在一起:将流的开头移至所需字符串的第一个出现位置,然后从流中读取。
从这种格式来看,您需要逐行阅读。 如果遇到以'---'开头的行,例如line [:3] ='---' 您忽略它及其后的行,直到您读到空行, 如果再次以“-”开头,请重复此过程 然后,第一个非空行应为“以下申请人...”
您可以将此代码埋入无限循环并中断,这是伪代码
while True:
line = read next line
if length(line) ==0: continue
if line[:3] = '---'
while true:
line = read next line
if line:
break
else:
continue
else:
break
read lines and print everthing from here
假设读取行函数记录了已读取的行数以及将要读取的行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。