Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Сохранение прикреплений Outlook

Delphi , Интернет и Сети , Почтовый клиент

Сохранение прикреплений Outlook

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Won’t some backups of your outlook attachments are filtered 
  some incoming log files? Here's the function. 
}

 uses
   ComObj;

 {...}

 function ManageAttachments(SendersName, AttachmentPath: string;
   MailDelete: Boolean): Boolean;
 var
   oApp: Variant;
   oNs: Variant;
   oFolder: Variant;
   oMsg: Variant;
   AtC: Variant;
   AttFilename: Variant;
   FileName: string;
   CheckSender: string;
   Counter: integer;
   MailCounter: integer;
 begin
   try
     oApp := CreateOLEObject('outlook.application');
     try
       oNs         := oApp.GetNamespace('MAPI');
       ofolder     := oNS.GetDefaultFolder(6); // FolderTypeEnum  (olFolderInbox) 
      MailCounter := 1;
       // If there is any email in the Inbox 
      if ofolder.Items.Count > 0 then
       begin
         repeat
           // Get the first Email 
          oMsg := ofolder.Items(MailCounter);
           // Check the name or Email 
          //   Use CheckSender := oMsg.subject to search on Subject; 
          CheckSender := oMsg.sendername;
           if CheckSender = SendersName then
           //  Remove this line to backup all your attachments. 
          begin
             // Check how many attachments 
            atc := oMsg.Attachments.Count;
             if atc > 0 then
             begin
               // Get all the attachments and save them 
              for Counter := 1 to atc do
               begin
                 AttFilename := oMsg.Attachments.item(Counter).FileName;
                 //filename := IncludeTrailingBackslash(AttachmentPath)+AttFilename; {Use this line for D5)} 
                FileName := AttachmentPath + '\' + AttFilename;
                 oMsg.Attachments.Item(Counter).SaveAsFile(FileName);
               end;
             end;
             if MailDelete then
             begin
               oMsg.Delete;
               // There's 1 Email less, so MailCounter - 1 
              Dec(MailCounter);
             end;
           end;
           // Get the next Email 
          Inc(MailCounter);
           // Do until there is no more Email to check 
        until MailCounter > ofolder.Items.Count;
       end;
     finally
       oApp.quit;
     end;
   except
     Result := False;
     Exit;
   end;
   Result := True;
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   // ManageAttachments(Email or name, Backup directory, MailDelete yes or no) 
  ManageAttachments('info@cleys.com', 'F:\test', False);
 end;


 { 
  Warning! 
  All your selected Email will be deleted if MailDelete = true 

  Achtung! 
  Alle E-Mails werden geloscht, wenn MailDelete = true ist. 
}

Перевод контента на русский язык:

Это программное обеспечение Delphi, использующее COM-объекты для взаимодействия с Microsoft Outlook. Программа имеет два основные функции:

  1. ManageAttachments: Функция принимает три параметра:
    • SendersName: имя или электронная почта отправителя, чьи вложения должны быть управлены.
    • AttachmentPath: папка, где вложения должны быть сохранены.
    • MailDelete: булевое значение, определяющее, следует ли удалять письма после сохранения их вложений. Функция подключается к Outlook, перебирает папку "Входящее", и проверяет каждое письмо на наличие вложений. Если письмо соответствует указанному имени отправителя, оно сохраняет все его вложения в указанной папке. Если MailDelete установлено в true, функция удаляет письмо после сохранения его вложений.
  2. Button1Click: Процедура вызывается при клике на кнопку на форме. Она вызывает функцию ManageAttachments с конкретными параметрами:
    • SendersName: 'info@cleys.com'.
    • AttachmentPath: 'F:\test'.
    • MailDelete: False, что означает, что письма не будут удаляться.

Предложения по улучшению кода:

  1. Обработка ошибок: Код использует блок try-except для ловли и обработки исключений. Однако рекомендуется использовать более конкретные типы исключений вместо ловли всех исключений (except) и установки Result в False.
  2. Название переменных: Некоторые имена переменных не описательны (например, oApp, oNs, ofolder). Лучше было бы переименовать их в something like outlookApplication, namespace, и inboxFolder.
  3. Организация кода: Код довольно плотный, что делает его трудным для чтения. Рекомендуется разбить его на более маленькие функции или процедуры для лучшей читаемости.
  4. Комментарии: Хотя в коде есть комментарии, они могли бы быть более подробными и полезными.

Альтернативное решение: Вместо использования COM-объектов можно использовать библиотеку iOutlook (доступна на GitHub), которая предоставляет более простой интерфейс для взаимодействия с Outlook. Это может уменьшить сложность вашего кода и сделать его более легко поддерживаемым.

Обсуждается функция для сохранения прикреплений электронных писем Microsoft Outlook в указанный путь на компьютере и возможность удаления отправленных писем после сохранения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Почтовый клиент ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-10 23:51:07/0.0037729740142822/0