Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 7 von 7
  1. #1
    Neuer Benutzer
    Registriert seit
    30.06.2015
    Ort
    Niedersachsen - Oldenburg
    Beiträge
    2

    Beitrag Shellexecute [Mail mit Anhang]

    Liebe entwicklerforum Community,

    derzeitig geht es darum ein Programm zum versenden von Mails zu entwickeln. Dieses soll die Mails allerdings nicht von alleine (egal ob manuell oder automatisch) versendet sondern das Standart-Mail Programm des Arbeitsplatzes nutzen. Im besten Falle sollte die Mail vorerst auch angezeigt werden(im Mail Client) und nicht automatisch versendet.

    Folgendes habe ich Bereits versucht:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s: String;
    begin
    s := 'mailto:irgendwer@bla.de?Subject=Danke&Body=Hallo&Attach=""C:\Test.txt""';
    ShellExecute(handle, 'open', PChar(s), nil, nil, SW_SHOWNORMAL);
    end;
    Allerdings funktionierte dies nicht. (Meldung von Outlook: 'Das Befehlszeilenargument in ungültig. Überprüfen sie den verwendeten Befehl') Wenn ich den Teil für den Anhang entnehme (&Attach=""C:\Test.txt"") funktioniert alles.

    Kann mir jemand weiter helfen? Das ganze selbstständig heraus zu finden bzw. mit Hilfe von Google habe ich schon eine lange Zeit versucht.

    Danke im Voraus


    Grüße
    Patrick

  2. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.119

    Standard

    Wie solle es dafür eine einzige Lösung geben?
    Wenn es schon sauber programmiert werden soll, dann wird die eMail über einen Mailserverversandt.
    Es gibt verschiedene Mailclients (Winmail, Outlook, Thunderbird, Bats u.v.m). Dann wäre erstmal herauszufinden, welcher genutzt wird. Dann ist zu prüfen, ob die Kommandozeilenargumente überhaupt einen Versandt eines Anhanges zulassen (Implementierung von mailto). Dann den Aufruf je nach Mailclient gestalten. Keine sauberre und zukunftsfähige Lösung. Fürs erste würde ich die doppelten " entfernen oder entwerten
    Christian

  3. #3
    Neuer Benutzer
    Registriert seit
    30.06.2015
    Ort
    Niedersachsen - Oldenburg
    Beiträge
    2

    Standard

    Hallo,
    1. Es handeld sich dabei um den David-Client [Mail-Client]
    2. Dieses Programm wird nur an einem bestimmten Platz verwendet auf dem genau dieses E-Mail Programm läuft, aus dem Grunde wird eine berücksichtigung der anderen nicht von Nöten sein.
    3. Ja, das habe ich bereits entfernt ist mir wenige Sekunden nach dem Post aufgefallen.

  4. #4
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.787

    Standard

    1. Es handeld sich dabei um den David-Client [Mail-Client]
    Das ist jetzt nicht gerade was gängiges und ich würde dich da am ehesten direkt an Tobit verweisen (Tobit Kenner werden sich da jetzt vermutlich gerade schlapp lachen) und der Dokumentation zur eventuell vorhanden API des Client bzw. der Doku wie man das mailto Protokol mit dem David Client nutzt. Übrigens wenn du es für David brauchst solltest du es nicht mit Outlook probieren das hilft nicht.

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    7.034

    Standard

    Stichwort ist hier (Simple) MAPI. Darüber kannst du auch Anhänge mitgeben.

    In der JCL (https://github.com/project-jedi/jcl) gibts entsprechende Klassen die das Kapseln und bei korrekter Implementierung des Mail-Clients auch funktionieren.

  6. #6
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.787

    Standard

    Kann man per MAPI den Mailclient öffnen? Er möchte ja nicht versenden sondern die Mail in einem Mail Client öffnen damit der Benutzer dann die Mail selbst sendet.

  7. #7
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    7.034

    Standard

    Direktes Verwenden per MAPI ist nicht möglich (jedenfalls seit dem ILOVEYOU-Wurm nicht mehr). Der Nutzer sieht immer die Mail und muss sie immer selbst absenden.

 

 

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •