Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Отослать письмо с аттачем через MAPI

Советы » E-mail » Отослать письмо с аттачем через MAPI

uses


  Mapi;

function

SendEMail(Handle: THandle; Mail: TStrings): Cardinal; type


  TAttachAccessArray = array

[0..0] of

TMapiFileDesc;   PAttachAccessArray = ^TAttachAccessArray; var


  MapiMessage: TMapiMessage;   Receip: TMapiRecipDesc;   Attachments: PAttachAccessArray;   AttachCount: Integer;   i1: integer;
  FileName: string

;   dwRet: Cardinal;   MAPI_Session: Cardinal;   WndList: Pointer; begin


  dwRet := MapiLogon(Handle,     PChar(''),     PChar(''),     MAPI_LOGON_UI or

MAPI_NEW_SESSION,     0, @MAPI_Session);
  if

(dwRet <> SUCCESS_SUCCESS) then

  begin


    MessageBox(Handle,       PChar('Error while trying to send email'),       PChar('Error'),       MB_ICONERROR or

MB_OK);   end


  else


  begin


    FillChar(MapiMessage, SizeOf(MapiMessage), #0);     Attachments := nil

;     FillChar(Receip, SizeOf(Receip), #0);
    if

Mail.Values['to'] <> '' then

    begin

      Receip.ulReserved := 0;       Receip.ulRecipClass := MAPI_TO;       Receip.lpszName := StrNew(PChar(Mail.Values['to']));
      Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
      Receip.ulEIDSize := 0;       MapiMessage.nRecipCount := 1;       MapiMessage.lpRecips := @Receip;     end

;
    AttachCount := 0;
    for

i1 := 0 to

MaxInt do

    begin

      if

Mail.Values['attachment' + IntToStr(i1)] = '' then


        break;       Inc(AttachCount);     end

;
    if

AttachCount > 0 then

    begin

      GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);

      for

i1 := 0 to

AttachCount - 1 do


      begin

        FileName := Mail.Values['attachment' + IntToStr(i1)];
        Attachments[i1].ulReserved := 0;         Attachments[i1].flFlags := 0;         Attachments[i1].nPosition := ULONG($FFFFFFFF);
        Attachments[i1].lpszPathName := StrNew(PChar(FileName));         Attachments[i1].lpszFileName :=           StrNew(PChar(ExtractFileName(FileName)));
        Attachments[i1].lpFileType := nil

;
      end

;       MapiMessage.nFileCount := AttachCount;       MapiMessage.lpFiles := @Attachments^;     end

;
    if

Mail.Values['subject'] <> '' then

      MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
    if

Mail.Values['body'] <> '' then

      MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));

    WndList := DisableTaskWindows(0);     try

    Result := MapiSendMail(MAPI_Session, Handle,       MapiMessage, MAPI_DIALOG, 0);     finally

      EnableTaskWindows( WndList );     end

;
    for

i1 := 0 to

AttachCount - 1 do

    begin

      StrDispose(Attachments[i1].lpszPathName);       StrDispose(Attachments[i1].lpszFileName);     end

;
    if

Assigned(MapiMessage.lpszSubject) then

      StrDispose(MapiMessage.lpszSubject);     if

Assigned(MapiMessage.lpszNoteText) then

      StrDispose(MapiMessage.lpszNoteText);     if

Assigned(Receip.lpszAddress) then

      StrDispose(Receip.lpszAddress);     if

Assigned(Receip.lpszName) then

      StrDispose(Receip.lpszName);     MapiLogOff(MAPI_Session, Handle, 0, 0);   end

;
end

;

procedure

TForm1.Button1Click(Sender: TObject); var


  mail: TStringList; begin


  mail := TStringList.Create;   try


    mail.values['to'] := 'Receiver-Email@test.xyz';     mail.values['subject'] := 'Hello';     mail.values['body'] := 'blah';     mail.values['body'] := 'blah';     mail.values['attachment0'] := 'C:Test.txt';     // mail.values['attachment1']:='C:Test2.txt';
    sendEMail(Application.Handle, mail);   finally


    mail.Free;   end

;
end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com