Наш офис использует 2 сервера IMAP для электронной почты, один из них является сервером входящих сообщений и содержит последние сообщения электронной почты, а другой - сервером архивации.В основном мы используем Outlook 2010, и наш текущий процесс заключается в том, чтобы периодически перетаскивать отправленные сообщения с входящего сервера в архив.
Сегодня меня попросили заняться написанием скрипта, который периодически (вероятно, использует crontab) захватывал всеотправлять сообщения и перемещать их в архив.
Я рассмотрел пример SSL или telnet для доступа к серверу и поискам.Однако я не знаю, как лучше написать этот сценарий или как переместить файлы между серверами в среде IMAP.
Какой лучший способ сделать это?Я бы предпочел использовать Python просто с уровня комфорта, но если уже существует решение на другом языке, я мог бы с ним справиться.
Обновление:
Хорошо, вот код.В настоящее время он просто копирует сообщения, однако дублирует существующие сообщения на сервере архивации.
import imaplib
import sys
#copy from
f_server = 'some.secret.ip.address'
f_username = 'j@example.com'
f_password = 'password'
f_box_name = 'Sent Messages'
#copy to
t_server = 'archive.server.i.p'
t_username = 'username'
t_password = 'password'
t_box_name = 'test'
To = imaplib.IMAP4(t_server)
To.login(t_username, t_password)
print 'Logged into mail server'
From = imaplib.IMAP4(f_server)
From.login(f_username, f_password)
print 'Logged into archive'
From.select(f_box_name) #open box which will have its contents copied
print 'Fetching messages...'
typ, data = From.search(None, 'ALL') #get all messages in the box
msgs = data[0].split()
sys.stdout.write(" ".join(['Copying', str(len(msgs)), 'messages']))
for num in msgs: #iterate over each messages id number
typ, data = From.fetch(num, '(RFC822)')
sys.stdout.write('.')
To.append(t_box_name, None, None, data[0][1]) #add a copy of the message to the archive box specified above
sys.stdout.write('\n')
try:
From.close()
From.logout()
try:
To.close()
To.logout()
Некоторые источники:
Блог Дуга Хеллмана: imaplib - Клиентская библиотека IMAP4
Блог Тайлера Лесманна: Копирование почтовых ящиков IMAP с помощью Python и imaplib
Мне все еще нужно:
- удалять / удалять сообщения на живом сервере
- не копировать дубликаты (на самом деле это будет исправлено путем удаления оригиналов после копирования, но ...)
- перехват ошибок
Обновление 2:
У кого-нибудь есть идеи, как не создавать дубликаты при копировании?(пока исключая возможность удаления оригиналов) Я подумал о поиске текста, но понял, что вложенные ответы могут скинуть это.