Announcement

Collapse
No announcement yet.

eMails an Outlook von Delphi4

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • eMails an Outlook von Delphi4

    Ich suche ein Bsp zur Übergabe einer eMail an Outlook.
    (Felder: vonName, vonEMail, anName, anEMail, Betreff, Nachricht, CC-Liste,
    Attachement-Liste)
    Gibt es dabei Konflikte/Unterschiede je nach Version von Outlook?

    Danke!

    Helmut
    [email protected]

  • #2
    Hallo,

    das folgende Beispiel verschickt über Outlook 97 eine eMail:
    <pre>
    uses ComObj, Outlook_TLB;

    var
    dwStart, dwEnd : DWord; // Ausführungszeit stoppen

    { Aufgabe 1: eMail verschicken }

    procedure TFormMain.BitBtnMailClick(Sender: TObject);
    var
    aOutlook : Application_;
    aMAPI : NameSpace;
    aOutbox : MAPIFolder;
    aMail : MailItem;
    aReci : Recipient;
    begin
    StatusBar1.SimpleText := 'eMail wird über Outlook verschickt...';
    dwStart := GetTickCount;
    Screen.Cursor := crHourglass;
    aOutLook := CoApplication_.Create;
    try
    aMAPI := aOutlook.GetNameSpace('MAPI');
    aOutbox := aMAPI.GetDefaultFolder(olFolderOutbox);
    aMail := aOutbox.Items.Add(olMailItem) as MailItem;
    aReci := aMail.Recipients.Add(EditMailAddress.Text);
    aReci.Type_ := olTo;
    // Empfänger prüfen (falls nicht bekannt -> Exception)
    aReci.Resolve;
    aMail.Subject := EditMailSubject.Text;
    aMail.Body := MemoMailBody.Text;
    // eMail senden
    aMail.Send;
    finally
    aOutlook := nil;
    Screen.Cursor := crDefault;
    end;
    dwEnd := GetTickCount;
    StatusBar1.SimpleText := Format('Ausführungszeit: %d Windows-Ticks',
    [dwEnd - dwStart]);
    end;
    </pre>

    P.S: Das Beispiel stammt aus meinem Buch <b>COM/DCOM mit Delphi</b>

    Comment


    • #3
      Hallo Andreas,<br>
      vielen Dank für deinen Vorschlag.<br>

      Allerdings suche ich nach einer "einfachen" Methode, bei der ich nicht noch tonnenweise COM-Ballast<br>
      in meine "schlanke" Anwendung integrieren muss. Bislang verwende ich eine Freeware-POP3 Komponente.<br>

      Bei dem Versenden einer Nachricht an Outlook habe ich eher an einen Programm-Aufruf gedacht, bei dem<br>
      mittels Parametern die erforderlichen Daten übergeben werden.<br>
      So ist es z.B. für mich (und den Kunden) völlig unerheblich, ob eine Adresse IN OUTLOOK schon eingetragen<br>
      ist - denn die wird ja aus der Adress-Datenbank gelesen und soll übergeben werden.<br>

      Vielleicht gibt es ja doch noch einen einfachen Weg hierfür?!<br>
      PS: im Übrigen wird mit Delphi4 keine Komponente "Outlook_TLB" aufgeliefert.>br>
      Ich programmiere ja gerade NICHT mit dem Visual Studio ...

      Mit den besten Grüßen<br>
      Helmut Böcker<br>
      [email protected]

      Comment


      • #4
        Hallo,

        die Prüfung der Empfängeradresse in Outlook über <b>Resolve</b> ist optional, auf diesem Weg kann jede beliebige (aber der Syntax entsprechende) Adresse angegeben werden. Das Beispiel stammt aus einer mit <b>Delphi 4</b> entwickelten Anwendung - die in der Uses-Klausel eingebundene Unit <i>Outlook_TLB</i> ist die beim <b>Import</b> der <b>Typbibliothek</b> von Delphi automatisch erzeugte Unit. Die ab Delphi 5 zur Verfügung stehenden Wrapper-Komponenten (TOleServer-Nachfolger) sind <b>nicht</b> notwendig

        Comment


        • #5
          <html>

          <head>
          <meta http-equiv="Content-Type"
          content="text/html; charset=iso-8859-1">
          <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
          <title>Normale Seite ohne Titel</title>
          </head>

          <body bgcolor="#FFFFFF">

          <p>Hallo Helmut, man kann eMails auch via ShellExecute versenden.
          Allerdings ist es mir nicht bekannt, wie man dabei eine oder
          mehrere Dateien als Anlage anhängen kann. Aber vielleicht
          brauchst Du ja keine Anlagen. Der Code, den ich mir in der Firma
          (Outlook98) erarbeitet habe, funktioniert aber nicht bei mir
          zuhause (Outlook Express), dort wird nur die Adresse und der
          Betreff ausgefüllt. Ist also noch nicht das gelbe vom Ei.</p>

          <pre>
          void EmailViaShellExecute(void)
          {
          char Text[120];
          strcpy(Text,&quot;<font color="#FF0000">mailto:[email protected]</font>&quot;
          strcat(Text,&quot;<font color="#FF0000">?subject=EmailTest</font>&quot;
          strcat(Text,&quot;<font color="#FF0000">?body=</font>&quot;
          strcat(Text,&quot;<font color="#FF0000">erste Zeile</font>&quot;
          strcat(Text,&quot;<font color="#FF0000">%0D%0A</font>&quot;
          strcat(Text,&quot;<font color="#FF0000">zweite Zeile</font>&quot;
          ShellExecute(hMainWnd,&quot;open&quot;,Text,0,0,SW _SHOWNORMAL);
          }
          </pre>

          <p>Nachlesen kannst Du unter <a
          href="ftp://ftp.isi.edu/in-notes/rfc2368.txt">ftp://ftp.isi.edu/in-notes/rfc2368.txt</a>
          und <a
          href="http://msdn.microsoft.com/workshop/networking/predefined/mailto.asp">http://msdn.microsoft.com/workshop/networking/predefined/mailto.asp</a></p>

          <p>Gruß: Günther<br>
          </p>
          </body>
          </html&gt
          Günther

          Comment

          Working...
          X