AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Standardmailprogramm ansprechen

Standardmailprogramm ansprechen

Ein Thema von FBrust · begonnen am 21. Mai 2005 · letzter Beitrag vom 10. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#1

Standardmailprogramm ansprechen

  Alt 21. Mai 2005, 21:11
Hallo,

derzeit generiert mein Programm E-Mails via OLE und Outlook. Nun will ich nicht abhängig von Outlook sein und einfach nur das Standardmailprogramm ansprechen, egal welches es ist.

Was muss ich dazu tun? Die Anforderung dabei lautet (sinngemäß) Betreff, Text und mehrere Dateien als Anhänge als Mail zu generieren und in den Postausgang zu stellen.


Hat vielleicht jemand einen Tip?

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Standardmailprogramm ansprechen

  Alt 21. Mai 2005, 21:17
Ah, hab was gefunden, mit den Indy-Komponenten sollte es wohl gehen...
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Standardmailprogramm ansprechen

  Alt 22. Mai 2005, 11:03
Mit Indy arbeitest Du völlig unabhängig von irgendeinem e-Mail-Programm. Du kannst aber auch versuchen, das aktuelle e-Mail-Programm via MAPI anzusprechen. Das hat den Vorteil, daß die Mail dann auch im "Gesendet"-Ordner erscheint.
  Mit Zitat antworten Zitat
22. Mai 2005, 11:04
Dieses Thema wurde von "r_kerber" von "Sonstige Fragen zu Delphi" nach "Internet / LAN / ASP.NET" verschoben.
Fragen zu e-Mail-Programmierung gehören wohl eher in die Internet-Sparte.
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Standardmailprogramm ansprechen

  Alt 22. Mai 2005, 13:12
Hallo,

danke für die Antwort.

Wenn ich über MAPI gehe, ist dann die Programmierung für alle gleich oder muss ich da Besonderheiten bei den diversen Mailprogrammen berücksichtigen?


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#6

Re: Standardmailprogramm ansprechen

  Alt 22. Mai 2005, 13:58
Sollte für alle gleich sein, da du ja eine API-Funktion aufrufst und nicht das Programm direkt ansprichst. Versuchs mal hiermit:

Delphi-Quellcode:
Procedure SendMail(Subject,Mailtext,
                   FromName,FromAdress,
                   ToName,ToAdress,
                   AttachedFileName,
                   DisplayFileName:string;
                   ShowDialog:boolean);
var
  MapiMessage : TMapiMessage;
  MError : Cardinal;
  Empfaenger : Array[0..1] of TMapiRecipDesc;
  Absender : TMapiRecipDesc;
  Datei : Array[0..1] of TMapiFileDesc;
begin
  with MapiMessage do begin
    ulReserved := 0;

    // Betreff
    lpszSubject := PChar(Subject);

    // Body
    lpszNoteText := PChar(Mailtext);

    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;

    // Absender festlegen
    Absender.ulReserved:=0;
    Absender.ulRecipClass:=MAPI_ORIG;
    Absender.lpszName:= PChar(FromName);
    Absender.lpszAddress:= PChar(FromAdress);
    Absender.ulEIDSize:=0;
    Absender.lpEntryID:=nil;
    lpOriginator := @Absender;

    // Empfänger festlegen (Hier: nur 1 Empfänger)
    nRecipCount := 1;

    Empfaenger[0].ulReserved:=0;
    Empfaenger[0].ulRecipClass:=MAPI_TO;
    Empfaenger[0].lpszName:= PChar(ToName);
    Empfaenger[0].lpszAddress:= PChar(ToAdress);
    Empfaenger[0].ulEIDSize:=0;
    Empfaenger[0].lpEntryID:=nil;
    lpRecips := @Empfaenger;

    // Dateien anhängen (Hier: nur 1 Datei)
    nFileCount := 1;

    // Name der Datei auf der Festplatte
    Datei[0].lpszPathName:= PChar(AttachedFilename);

    // Name, der in der Email angezeigt wird
    Datei[0].lpszFileName:= PChar(DisplayFilename);
    Datei[0].ulReserved:=0;
    Datei[0].flFlags:=0;
    Datei[0].nPosition:=Cardinal(-1);
    Datei[0].lpFileType:=nil;
    lpFiles := @Datei;

  end;

  // Senden
  if ShowDialog then
    MError := MapiSendMail(0, Application.Handle,
      MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI, 0)
  else
    // Wenn kein Dialogfeld angezeigt werden soll:
    MError := MapiSendMail(0, Application.Handle, MapiMessage, 0, 0);

  Case MError of
    MAPI_E_AMBIGUOUS_RECIPIENT:
      MessageDlg('Empfänger nicht eindeutig. (Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);
    
    MAPI_E_ATTACHMENT_NOT_FOUND:
      MessageDlg('Datei zum Anhängen nicht gefunden',mterror,[mbok],0);
    
    MAPI_E_ATTACHMENT_OPEN_FAILURE:
      MessageDlg('Datei zum Anhängen konnte nicht geöffnet werden.',mterror,[mbok],0);

    MAPI_E_BAD_RECIPTYPE:
      MessageDlg('Empfängertyp nicht MAPI_TO, MAPI_CC oder MAPI_BCC.',mterror,[mbok],0);

    MAPI_E_FAILURE:
      MessageDlg('Unbekannter Fehler.',mterror,[mbok],0);

    MAPI_E_INSUFFICIENT_MEMORY:
      MessageDlg('Nicht genug Speicher.',mterror,[mbok],0);

    MAPI_E_LOGIN_FAILURE:
      MessageDlg('Benutzerlogin (z.B. bei Outlook) fehlgeschlagen.',mterror,[mbok],0);

    MAPI_E_TEXT_TOO_LARGE:
      MessageDlg('Text zu groß.',mterror,[mbok],0);

    MAPI_E_TOO_MANY_FILES:
      MessageDlg('Zu viele Dateien zum Anhängen.',mterror,[mbok],0);

    MAPI_E_TOO_MANY_RECIPIENTS:
      MessageDlg('Zu viele Empfänger angegeben.',mterror,[mbok],0);

    MAPI_E_UNKNOWN_RECIPIENT: MessageDlg('Empfänger nicht in Adressbuch gefunden. '+
     '(Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);

    MAPI_E_USER_ABORT:
      MessageDlg('Benutzer hat Senden abgebrochen oder MAPI nicht installiert.',mterror,[mbok],0);

    SUCCESS_SUCCESS:
      MessageDlg('Erfolgreich !!! (Aber Absenden nicht garantiert.)',mtinformation,[mbok],0);

  End;
end;
Den obigen Code musste halt noch an mehrere Dateien anpassen. Nachteil: Die Mail wird sofort verschickt und nicht erst in den Postausgang gestellt. Weiss auch nicht ob in den Postausgang per MAPI überhaupt geht, da ja evtl nicht jeder Mail-Client so etwas bietet.

Schönen Gruß,
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Standardmailprogramm ansprechen

  Alt 22. Mai 2005, 15:46
Hallo,

danke für den Code, werds ausprobieren.


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#8

Re: Standardmailprogramm ansprechen

  Alt 22. Mai 2005, 21:29
Keine Ursache, hab den selber ausm Netz. Funzt soweit ganz gut. Benutze den in nem Programm mit nem seriellen Barcode Handscanner. Damit der Kunde mir automatisch evtl. defekte Rohdaten schicken kann.
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Standardmailprogramm ansprechen

  Alt 23. Mai 2005, 00:58
Wenn ich das richtig gelesen hab, muss ich ja nur Datei[0] bis Datei[n] mit Dateinamen belegen, um mehrere Attachments zu versenden richtig?

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#10

Re: Standardmailprogramm ansprechen

  Alt 23. Mai 2005, 01:03
Den Pfad zum Mailprogramm solltest du aus der Registry auslesen können.
In Regedit nach "mailto" suchen. Sollte kein Eintrag vorhanden sein, so ist auch kein Programm konfiguriert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:13 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