Получайте почту из программного обеспечения ERP, меняйте тему и пересылайтеPython

Программы на Python
Anonymous
Получайте почту из программного обеспечения ERP, меняйте тему и пересылайте

Сообщение Anonymous »

Я совершенно новичок в этом, поэтому извините, если это глупый вопрос.
Наша проблема: мы создаем заказ для нашего поставщика, используя наше программное обеспечение ERP. Поставщик хочет, чтобы в этом электронном письме была указана конкретная тема, чтобы его система получения заказов забрала почту. Мы не можем установить тему в нашем программном обеспечении ERP.
Обходной путь: ERP отправляет почту на внутренний адрес, а затем нам нужно изменить тему и переслать ее поставщику.< /p>
Мы хотим сделать это автоматически. Возможно ли это?
Я видел кое-что о 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\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()
Хорошо, если этот код можно обновить, чтобы он проверял, есть ли письма от отправителя или с некоторыми словами в теме. Если их нет, остановите сценарий. Если есть 1 или несколько писем, нам нужно изменить тему и переслать письмо нашему поставщику. Кто может помочь мне улучшить этот код?

Подробнее здесь: https://stackoverflow.com/questions/437 ... nd-forward

Вернуться в «Python»