AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Email direkt aus Program mraus
Thema durchsuchen
Ansicht
Themen-Optionen

Email direkt aus Program mraus

Ein Thema von renekr · begonnen am 15. Dez 2005 · letzter Beitrag vom 23. Apr 2008
Antwort Antwort
Seite 1 von 3  1 23      
renekr

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

Email direkt aus Program mraus

  Alt 15. Dez 2005, 20:34
Hallo,

Ich stecke grad an meinem Program man der Stelle mit der Email versenderei sehr tief fest.


Habe ein Szenario wo ich haben will und ev das 2. als ultimativen Bonus( ev auch beides in einem zusammen ):

Einige User haben Outlook installiert mit anbindung an einen Exchange Server

Ich will eine neue Email aufmachen mit mehreren Empfängern und Attachement als PDf.

Zudem noch Text im Betreff und im Body.

Das hatte ich schon über eine funktion,aber NUR möglich mit 1 Empfänger( weitere hat er im String z ueinem zusammengeführt ).


2.: Einige User haben kein Outlook client installiert ,habe aber ein Login und Passwort im Kopf ( gültiges für Exchange Server )


Ist es möglich direkt aus dem Programm eine Form zu machen ( Email nachbauen ) und per Exchange Server ohne Installiertes Outlook zu verschicken?
Dann bin ich auf Outlook garnicht angewiesen.



Bin euch echt dankbar.
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Email direkt aus Program mraus

  Alt 15. Dez 2005, 20:49
Google doch einfach mal: Bei Google suchensmtp engine delphi

wie wärs z.B. damit
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Email direkt aus Program mraus

  Alt 15. Dez 2005, 20:56
Hallo René,

erstmal zu deinem Problem mit mehreren Empfängern - so stelle ich mir das vor - ungetestet:

Delphi-Quellcode:
var
  MapiMessage: TMapiMessage;
  recips: array of MapiRecipDesc;
  rl: TStrings;
  i: integer;
begin
  rl := TStringList.Create;
  rl.LoadFromFile('ListOfRecipientNames');
  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;

  with MapiMessage do
  begin
    // siehe W2K Logo App
    nRecipCount := rl.Count;
    lpRecips := recips;
  end;
Grüße vom marabu
  Mit Zitat antworten Zitat
renekr

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

Re: Email direkt aus Program mraus

  Alt 27. Dez 2005, 11:27
Hi,
kleine Frage noch dazu.

ISt es möglich aus einem Programm raus über die Mapi.dll direkt mit angabe der userdaten eine email zu schicken,
wenn kein Outlook installiert ist??
Direkt über den Server darf i net weil i da eine Feste IP benötige und die im Exchange Server registriert sein muß in unseren LAN.

Danke.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Email direkt aus Program mraus

  Alt 27. Dez 2005, 11:46
Outlook ist nicht notwendig um per MAPI eine mail zu verschicken - aber du brauchst einen account auf einem MAPI-Server.

Grüße vom marabu
  Mit Zitat antworten Zitat
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, 12: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
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Email direkt aus Program mraus

  Alt 27. Dez 2005, 12:32
Hi René,

du willst also einen eigenen MAPI-Client entwickeln, nur damit du unabhängig von Outlook bist? Wahrscheinlich kannst du dir noch nicht vorstellen, was das für ein Aufwand ist. Nimm doch einen fertigen Client, wie Eudora. Wenn du es aber unbedingt willst, dann solltest du dich mal intensiv mit dem MAPI SDK auseinandersetzen. Und irgendwie musst du MAPI ja auf die Zielmaschine bringen. Das geht über die Installation der Exchange Client Software - oder über Outlook.

Dein Angebot zur Mitarbeit an diesem Projekt kann ich leider nicht annehmen, da es zuviel von meiner Zeit binden würde. Ich hoffe du kannst das verstehen.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
renekr

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

Re: Email direkt aus Program mraus

  Alt 27. Dez 2005, 12:40
Hi ,

das hast du mißvrstanden.
Natürlich will i keinen neuen MAPI Client entwickeln,dazu habe ich in dem Bereich zu wenig Ahnung .

Ich will eigentlich nur das ich auf Rechner wo kein Outlook installiert ist, mit so wenig Aufwand wie möglich von meinem Tool raus eine Email verschicken können.

Mit Attachment und ev. noch zugriff auf das Öffentliche Adressbuch auf dem Exchange Server .


Habe gelesen,das MAPI auch Emails lesen kann,also das ich dann die Mails vom Postfach im Tool anzeigen kann.


Wil lhier bei weitem keinen neuen Client entwickeln,sondern es nur für mich so einbinden das es geht und wenn möglich auf den Client PCs nix installieren muß
Client PCs= Win NT und Win 2000 .

Ist das überhaupt möglich?
Werde mich erst mal in die MAPI SDK einlesen.


Klar kann ich das verstehn das du dafür keine Zeit hast, die hab nicht mal ich

Aber wenns geht kannst mir einige kleinere tipps geben.

Will ja nicht das du alles machst.sonst bringt es ja nix.

Vielen Dank schonmal.
  Mit Zitat antworten Zitat
renekr

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

Re: Email direkt aus Program mraus

  Alt 13. Jan 2006, 10:15
Hi marabu,
kannst du mir ev. einen Tip geben was ich in meinem Source oben falsch habe mit dem mehreren Empfängern?
Da kommt immer eine Zugriffsverletzung.

Danke schön.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Email direkt aus Program mraus

  Alt 13. Jan 2006, 12:54
Hallo renekr
ich gebe dir mal ein paar grundsätzliche Info's, wie man EMails verschicken kann:
1.) über MAPI
Vorraussetzung: auf dem Rechner ist ein MAPI-client wie z.B. Outlook, Eudora installiert
und komplett konfigueriert.
Dann kannst du über das Konto des Benutzers EMails verschicken.
Alle gesendeten Mails werden im Ordner "gesendete Objekte" gespeichert.
Dies kann ein grosser Vorteil sein.
Du kannst nur unter der EMail-Adresse des Benutzers versenden; eine andere Absender-EMail-Adr ist nicht möglich.
Dein Programm braucht keinerlei Information über User, Passwort, Server wissen, das wird alles vom EMail-Client verwaltet.
2.) über SMTP
Du musst Server, User und Passwort kennen und "redest" direkt mit dem Server.
Es braucht kein EMail-Client installiert sein.
Du benötigst Indy, Fastnet oder vergleichbare Komponenten.
Die Absender-Mail kann beliebig gewählt werden (falls Server das erlaubt).
3.) über eine Webseite
Man kann den IExplorer so steuern, dass über ein Konto bei GMX, Web.de oder andere EMail-Seite ein Mail verschickt wird.
Diese Variante bietet sich nur an, wenn über die Firewall alles ausser Port 80 geblockt wird.

Es gibt also 3 Wege, die sich programmiertechnisch stark unterscheiden.
Der Programmier-Aufwand ist bei MAPI relativ gering, vorrausgesetzt du verwendest eine
MAPI-Klasse/Komponente, die was taugt.
Die beste MAPI-Klasse, die ich bisher gesehen habe, ist in der JCL.
http://sourceforge.net/projects/jcl
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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