Einzelnen Beitrag anzeigen

renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Email direkt aus Program mraus

  Alt 27. Dez 2005, 11:11
Hi marabu,

Das hab i schon gewußt, aber i weiß nicht wie.
Account und Passwort ist alles vorhanden,das übergebe ich dann als anmelde info mit
Ich will halt von manchen PCs ohne Outlook Emailen können,direkt über SMTP Server geht von usnerer IT Sicherheit nicht.

Habe hier einen Link allerdings für VB:

MAPI Control VB


Wen nes möglich wäre kannst du mir a bisserl helfen bei dem Thema?
Habe bis jetzt nur Email übers Outlook Profile geschickt, das heißt nur eine neue Email geöffnet.

Der absolute Luxus für mein Tool wäre, wenn ich ohne Outlook und in einer Extra Form eine Email mit mehreren Empfängern,ev. Liste vom Exchange Profile ( Adressbuch),
und schreiben ,speicher und senden kann m it anhang.

Vielen Dank.

Anbei mal der Code SendMail , den habe ich wo her und mit deinem ( mehrere Empfänger ) aktualisiert )
Delphi-Quellcode:
function SendMail(const Subject, Body, FileName,
         SenderName, SenderEMail,
         RecipientName, RecipientEMail: string): Integer;
var
  Message: TMapiMessage;
  lpSender, lpRecipient: TMapiRecipDesc;
  FileAttach: TMapiFileDesc;
  //neu
   recips: array of MapiRecipDesc;
   rl: TStrings;
  i: integer;
 //
  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;
   ///

rl := TStringList.Create;
  rl.LoadFromFile('c:\test.txt');
  SetLength(recips, rl.Count);
  ZeroMemory(@recips[0], SizeOf(MapiRecipDesc) * rl.Count);
  for i := Low(recips) to High(recips) do
    with recips[i] do
    begin
      ulRecipClass := MAPI_TO;
      lpszName := PChar(rl[i]);
    end;
  rl.Free;

  ///
    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 := rl.Count;
     // lpRecips := recips;

     // 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;
  Mit Zitat antworten Zitat