我使用imaplib通过python脚本读取我的localhost上的电子邮件。要做到这一点,我使用的是Xampp和MercuryMail。
import imaplib
import email
#takes args for subject to check for
def get_subject(subject):
#most recent 15 emails
for i in range( latest_email_id, latest_email_id-15, -1 ):
typ, data = mail.fetch( str(i), '(RFC822)' )
msg = email.message_from_string(data[0][1])
varSubject = msg['subject']
if subject == varSubject:
return 1
mail = imaplib.IMAP4_SSL('localhost')
mail.login("user","pass")
mail.list()
mail.select("inbox")
typ, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
latest_email_id = int( id_list[-1] )
typ, data = mail.fetch( str(latest_email_id), '(RFC822)' )
print(get_subject(subject = 'Test'))
mail.logout()
当我运行它时,它返回一个错误,说连接被主动拒绝。如果我尝试连接到gmail而不是localhost它连接正常。我通过在设置中添加用户和密码来设置MercuryMail。我还有另一个脚本,可以从localhost发送电子邮件到localhost,这些电子邮件也可以通过。该脚本应该获取最新的15封电子邮件并检查它们是否有特定主题,但我无法连接而无法测试它。我之前从未使用python与电子邮件或MercuryMail,所以我可能会遗漏一些简单的东西。
答案 0 :(得分:0)
假设您的主机上运行了一个允许IMAP4连接的电子邮件服务器,我最好的选择是它不会监听localhost上的连接。换句话说,您的主机至少有一个标准IP地址(可能)加上默认的localhost,但如果服务器在标准地址上运行,而不是在127.0.0.1或0.0.0.0上运行,那么您的连接将被拒绝。