Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mailto mit Anhang senden (https://www.delphipraxis.net/107907-mailto-mit-anhang-senden.html)

uhaetten 4. Feb 2008 14:17


Mailto mit Anhang senden
 
Hallo zusammen

Ich möchte, dass mein Programm auf Knopfdruck das Standard-E-Mail-Programm des Users öffnet und da eine neue E-Mail erstellt. Diese soll jedoch noch nicht versendet werden, sondern erst geöffnet werden, damit der User noch die Chance hat den Text anzupassen.

Dies erreiche ich auch wunderbar mit folgendem Code

Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar('mailto:' + edbEmail.Text), nil, nil, SW_SHOW);
Allerdings möchte ich nun noch eine Datei anhängen. Im Stil von "Rechtsklick auf eine Datei -> Datei senden an -> Emailempfänger" in Windows.

Könnt ihr mir da weiterhelfen?

Vielen Dank
Urs

Bernhard Geyer 4. Feb 2008 14:25

Re: Mailto mit Anhang senden
 
Stichwort (Simple)Mapi (z.b. mit Units aus der Jedi).

uhaetten 4. Feb 2008 14:29

Re: Mailto mit Anhang senden
 
mit MAPI hab ich schon was gefunden hier auf DP: datei per email versenden

nur ist hier das Problem, dass dann Outlook (oder welches Programm auch immer) versucht das Mail im Hintergrund zu versenden und man kann den Text nicht verändern.

Oder meinst du was anderes mit MAPI?

Bernhard Geyer 4. Feb 2008 14:33

Re: Mailto mit Anhang senden
 
Zitat:

Zitat von uhaetten
nur ist hier das Problem, dass dann Outlook (oder welches Programm auch immer) versucht das Mail im Hintergrund zu versenden und man kann den Text nicht verändern.

In MAPI kann man angeben ob versucht werden soll gleich zu senden oder per Vorschau im email-Client angezeigt werden soll.

devidespe 4. Feb 2008 14:37

Re: Mailto mit Anhang senden
 
Also sobald ein Anhang mitgeschickt werden soll, musst Du auf MAPI ausweichen, ansonsten reicht auch ShellExecute.

Sobald Du MAPI verwendest, erstellt bspw. eine bestimmte Funktion eine neue EMail mit den Daten, die Du im Programm eingetragen hast. Versendet wird diese allerdings noch nicht, da der Anwender erst im EMail-Programm auf den Senden-Schalter drücken muss.

Schau Dir am besten die JEDI VCL-Beispiele dazu an, dann wird alles etwas klarer (hier).

Kroko1999 4. Feb 2008 14:58

Re: Mailto mit Anhang senden
 
oder Du nimmst folgende Unit:
Delphi-Quellcode:
unit tdEmail;

interface

uses
  Classes, SysUtils;

function SendEMail(const AHost,AUser,APass, AToAdress,ASubject: String;
                   const ABody,AAttachment: TStrings): Integer;

implementation

uses
  IdMessage, IdSMTP, idAttachmentFile;

function SendEMail(const AHost,AUser,APass, AToAdress,ASubject: String;
                   const ABody,AAttachment: TStrings): Integer;
var
  HMsg: TIdMessage;
  HSMTP: TIdSMTP;
  I: Integer;
begin
  Result := 0; { Ok }
  HSMTP := TIdSMTP.Create(nil);
  HSMTP.Host := AHost;
  HSMTP.Username := AUser;
  HSMTP.Password := APass;
  HSMTP.Port := 25;
  HSMTP.AuthType := atDefault;
  HSMTP.Connect;
  { Message füllen }
  HMsg := TIdMessage.Create(nil);

  HMsg.From.Address := AUser;

  HMsg.Recipients.EMailAddresses := AToAdress;

  HMsg.Subject := ASubject;
  HMsg.Body.Clear;
  HMsg.Body.Assign(ABody);
  HMsg.Date := Now;
  { Anhang }
  if Assigned(AAttachment) then
    begin
      for I := 0 to AAttachment.Count - 1 do
        TIdAttachmentFile.Create(HMsg.MessageParts,AAttachment[I]);
    end;
  try
    try
      HSMTP.Send(HMsg);
    except
      Result := HSMTP.LastCmdResult.NumericCode;
    end;
  finally
    { frei geben }
    HMsg.Free;
    HSMTP.Free;

  end;
end;

end.
leider unkommentiert, :cry:

uhaetten 4. Feb 2008 15:04

Re: Mailto mit Anhang senden
 
vielen Dank für eure Antworten. Ich werd mal sehen, was ich so hinkriege :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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