首页 > 解决方案 > 从电子邮件转换字符串

问题描述

我正在尝试编写一个程序,如果电子邮件中的第一个单词是“密码”,它将扫描我的电子邮件收件箱并采取进一步的行动。但是,我的特定条件if message_str[:9].lower() == 'password': 始终默认为 false,即使正在比较的字符串显然是“密码”,因为我已经通过打印语句进行了测试。为什么会这样?

代码:

import imapclient, pyzmail, time, sys

while True:
    imapObj = imapclient.IMAPClient('imap.gmail.com', ssl=True)
    imapObj.login('xxxxxxxx@gmail.com', sys.argv[1])
    imapObj.select_folder('INBOX', readonly=False)
    UIDs = imapObj.search(['SINCE', '01-Mar-2021', 'FROM', 'xxxxxxxx@gmail.com'])
    rawMessages = imapObj.fetch(UIDs, ['BODY[]'])

    for i in UIDs:
        message = pyzmail.PyzMessage.factory(rawMessages[i][b'BODY[]'])
        if message.text_part:
            message_str = message.text_part.get_payload().decode(message.text_part.charset)
            a = (repr(message_str))
            if message_str[:9].lower() == 'password':
                continue

标签: pythonimapimaplib

解决方案


'password' 有 8 个而不是 9 个字母,所以你需要使用message_str[:8].lower()


推荐阅读