【问题标题】:Converting string from email从电子邮件转换字符串
【发布时间】:2021-05-31 21:20:30
【问题描述】:

我正在尝试编写一个程序,如果电子邮件中的第一个单词是“密码”,它将扫描我的电子邮件收件箱并采取进一步措施。但是,我的特定条件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

【问题讨论】:

    标签: python imap imaplib


    【解决方案1】:

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

    【讨论】:

    • 您打印的字符串末尾可能有一个您看不到的空格
    • 啊,我看不出有什么奇怪的,因为我之前尝试过测试打印字符串,看起来还不错。非常感谢先生!
    猜你喜欢
    • 2017-12-11
    • 2013-02-04
    • 1970-01-01
    • 2015-10-01
    • 2016-12-06
    • 2023-03-31
    • 2013-03-09
    • 1970-01-01
    • 2016-03-30
    相关资源
    最近更新 更多