Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Email per MAPI Preview (https://www.delphipraxis.net/54699-email-per-mapi-preview.html)

renekr 10. Okt 2005 10:26


Email per MAPI Preview
 
Hi,
ich habe das Forum schon durchsucht,aber das richtige nicht gefunden:
Will eine Neue Email öffnen im Outlook und der neuen Email Empfänger,Text Anhang usw mitteilen,

aber die Mail nicht senden(MailItem.Send;) sondern nur Als NEUE offen lassen,damit man noch etwas ändern kann usw.

mache das hiermit:

try
OutlookApp := GetActiveOleObject('Outlook.Application');
except
OutlookApp := CreateOleObject('Outlook.Application');
end;
try
MailItem := OutlookApp.CreateItem(olMailItem);
MailItem.Recipients.Add('YourMailAddress@something .com');
MailItem.Subject := 'Your Subject';
MailItem.Body := 'Your Message';
myAttachments := MailItem.Attachments;
myAttachments.Add('C:\test.txt', olByValue, 1, 'Name of Attachment');
MailItem.Send;
finally
myAttachments := VarNull;
OutlookApp := VarNull;
end;


Danke.

freak4fun 10. Okt 2005 11:00

Re: Email per MAPI Preview
 
Hi :hi:,
lass das
Delphi-Quellcode:
MailItem.Send;
raus. ;)

MfG
freak

sakura 10. Okt 2005 11:10

Re: Email per MAPI Preview
 
Hi renekr,

Du bist eigentlich schon lang genug dabei, so dass Dir aufgefallen sein dürfte, dass wir die wunderschönen [delphi]-Tags hier haben :zwinker:

...:cat:...

renekr 15. Dez 2005 19:09

Re: Email per MAPI Preview
 
Hallo,

Habe in der Zeit was gefunden, aber leider einen neuen Fehler drin gehabt.

Bitte um Hilfe bin etwas Ratlos.

1. Function
Delphi-Quellcode:

function SendMail(const Subject, Body, FileName,
         SenderName, SenderEMail,
         RecipientName, RecipientEMail: string): Integer;
var
  Message: TMapiMessage;
  lpSender, lpRecipient: TMapiRecipDesc;
  FileAttach: TMapiFileDesc;
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
begin
  FillChar(Message, SizeOf(Message), 0);
  with Message do
  begin
    if (Subject <> '') then
    lpszSubject := PChar(Subject);

    if (Body <> '') then
      lpszNoteText := PChar(Body);

    if (SenderEmail <> '') then
    begin
      lpSender.ulRecipClass := MAPI_ORIG;
      if (SenderName = '') then
        lpSender.lpszName := PChar(SenderEMail)
      else
        lpSender.lpszName := PChar(SenderName);

      lpSender.lpszAddress := PChar(SenderEmail);
      lpSender.ulReserved := 0;
      lpSender.ulEIDSize := 0;
      lpSender.lpEntryID := nil;
      lpOriginator := @lpSender;
    end;

    if (RecipientEmail <> '') then
    begin
      lpRecipient.ulRecipClass := MAPI_TO;
      if (RecipientName = '') then
        lpRecipient.lpszName := PChar(RecipientEMail)
      else
        lpRecipient.lpszName := PChar(RecipientName);

      lpRecipient.lpszAddress := PChar(RecipientEmail);
      lpRecipient.ulReserved := 0;
      lpRecipient.ulEIDSize := 0;
      lpRecipient.lpEntryID := nil;
      nRecipCount := 1;
      lpRecips := @lpRecipient;
    end
    else
      lpRecips := nil;

    if (FileName = '') then
    begin
      nFileCount := 0;
      lpFiles := nil;
    end
    else
    begin
      FillChar(FileAttach, SizeOf(FileAttach), 0);
      FileAttach.nPosition := Cardinal($FFFFFFFF);
      FileAttach.lpszPathName := PChar(FileName);

      nFileCount := 1;
      lpFiles := @FileAttach;
    end;
  end;

  MAPIModule := LoadLibrary(PChar(MAPIDLL));
  if MAPIModule = 0 then
    Result := -1 
  else
    try
      @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
      if @SM <> nil then
      begin
        Result := SM(0, Application.Handle, Message, MAPI_DIALOG or MAPI_LOGON_UI, 0);
      end
      else
        Result := 1;
    finally
      FreeLibrary(MAPIModule);
    end;

    if Result <> 0 then MessageDlg('Email wurde nicht gesendet.', mtError,[mbOK], 0);
    if Result = 0 then MessageDlg('Email wurde gesendet , und unter C:\MEKM Tool\Logbuchberichte abgelegt.', mtInformation,[mbOK], 0);

end;
Aufrufen tue ich das so;
Delphi-Quellcode:
Visible:=false;
SendMail(strSubject,'Hallo Kollegen','c:\MEKM Tool\Logbuch Berichte\Logbuch Bericht '+DateToStr(date)+' - ID'+edit22.text+'.pdf','','','',strEmail);
Visible:=true;
Jetzt mein Problem: Den Empfänger ,wo ich aus Namen zusammen bastle:
String sieht so aus 'Name1;name2;name3;name4'

Aber er macht die Email auf und schreibt alle als 1namen hinein,

Wie muß ich das abändern?

2. Möglichkeit ist die von mir oben ohne MailItem.Send , da macht er aber nix auf.

Mir wäre die 1. Function am liebsten,nur wenn die Empfänger mehr als 1 angezeigt werden.

Muß ich da ev. den Wert nRecipCount := 1; in der Function ändern.


Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz