Получить электронную почту из Outlook с Delphi - PullRequest
5 голосов
/ 09 мая 2011

Мне было интересно, знает ли кто-нибудь, как получать электронные письма из outlook, например, с помощью кода Delphi. То, что я хотел бы получить, это каждая часть письма, такая как тема, отправитель, вложения и т. Д.

С наилучшими пожеланиями!

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

В этом примере показано, как использовать компонент TOutlookApplication, поставляемый с Delphi, для отправки электронных писем с помощью Outlook.Он должен дать вам представление о том, какая информация доступна для почтовых отправлений.

Обнаружение почтовых ящиков в outlook скажет вам, где можно найти электронные письма, которые в настоящее время находятся в любых почтовых ящиках Outlook.

function Send: boolean;
var
  Outlook: TOutlookApplication;
  olNameSpace: NameSpace;
  MailIt: TMailItem;
  AttachedFile: OleVariant;
  i: integer;
  emailaddress: string;
begin
  Result := true;
  Outlook := TOutlookApplication.Create( nil );
  try
    Outlook.ConnectKind := ckNewInstance;
    try
      Outlook.Connect;
      try
        olNameSpace := Outlook.GetNamespace('MAPI');
        olNameSpace.Logon('', '', False, False);
        try

          for i := 0 to FNewUsers.Count - 1 do begin
            MailIt := TMailItem.Create( nil );
            MailIt.ConnectTo( Outlook.CreateItem( olMailItem ) as MailItem );
            try
              emailaddress := TStapper( FNewUsers.Items[i] ).Email;
              if emailaddress = '' then begin
                emailaddress := C_MailUnknownAddress;
              end;
              MailIt.Recipients.Add( emailaddress );
              MailIt.Subject := C_MailSubject;
              MailIt.Body := Format( C_MailBody,
                  [TStapper( FNewUsers.Items[i] ).UserId,
                  TStapper( FNewUsers.Items[i] ).Password] );
              MailIt.Save;
            finally
              MailIt.Free;
            end;
          end;

        finally
          olNameSpace.Logoff;
        end;
      finally
        Outlook.Disconnect;
      end;
    finally
      Outlook.free;
    end;
  except
    on E: Exception do begin
      Result := false;
    end;
  end;
end;
2 голосов
/ 09 мая 2011

Вы можете использовать стандартную OLE-автоматизацию для доступа к Outlook:

var 
  Outlook: OLEVariant;
begin
  try
   Outlook:=GetActiveOleObject('Outlook.Application') ;
  except
   Outlook:=CreateOleObject('Outlook.Application') ;
  end;
  //...
end;

Вы также можете взглянуть на TurboPower OfficePartner , который является простым способом интеграции с Office. Я не смотрел этот проект целую вечность, поэтому он может быть устаревшим, но на первой полосе последнее действие было всего несколько месяцев назад ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...