从ERP软件接收邮件,更改主题并转发

时间:2017-05-03 13:53:45

标签: python email novell

如果这是一个愚蠢的问题,我很抱歉。

我已经整天都在寻找解决问题的方法。

我们的问题:我们使用ERP软件为供应商创建订单。供应商希望此电子邮件中的特定主题能够获取订单接收系统提取的邮件。我们无法在ERP软件中设置主题。

解决方法:ERP正在将邮件发送到内部地址,然后我们需要更改主题并将其转发给供应商。

我们想自动执行此操作。这有可能吗?

我看到有关Python的一些事情要做,但不是完整的解决方案。所以我知道它可能非常苛刻,但谁能够并且想要帮助我。

我们正在使用Novell邮件服务器。 (这对我来说也是全新的:-()

更新:我已经创建了一些代码,但它并不是最好的。 :)

import smtplib, imaplib, email, re
#mail read, change and forward
imap_host = "SERVERNAME"
client = imaplib.IMAP4('SERVERNAME')
client.login('USERNAME', 'PWD')
client.select('INBOX') #, readonly=True
msgid = 1
status, data = client.fetch(msgid, "(RFC822)")
email_data = data[0][1]
client.close()
client.logout()
message = email.message_from_string(email_data)
message.replace_header("Subject", "test")
message.replace_header("From", 'test@test.com')
message.replace_header("To", 'EXTERN EMAILADRES')
smtp = smtplib.SMTP('SMTP SERVER')
smtp.starttls()
smtp.login('USERNAME', 'PWD')
from_addr = "AFZENDADRES"
to_addr = "EXTERN EMAILADRES"
smtp.sendmail(from_addr, to_addr, message.as_string())
#move mail to folder
client = imaplib.IMAP4('SERVERNAME')
client.login('USERNAME', 'PWD')
client.select('INBOX', readonly=False)
pattern_uid = re.compile('\d+ \(UID (?P<uid>\d+)\)')
def parse_uid(data):
match = pattern_uid.match(data)
return match.group('uid')
resp, items = client.search(None, 'All')
email_ids = items[0].split()
latest_email_id = email_ids[0]
resp, data = client.fetch(latest_email_id, "(UID)")
msg_uid = parse_uid(data[0])
result = client.uid('COPY', msg_uid, 'INBOX/Afgehandeld')
if result[0] == 'OK':
mov, data = client.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
client.expunge()
client.close()
client.logout()

如果此代码可以更新,则应该没问题,以便检查是否有来自发件人的邮件或主题中的某些单词。如果没有,则停止脚本。如果有一封或多封邮件,我们需要更改主题并将电子邮件转发给我们的供应商。谁能帮助我更好地掌握这些代码。

0 个答案:

没有答案