Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Attachment an E-Mail anhängen (https://www.delphipraxis.net/6847-attachment-e-mail-anhaengen.html)

Albi 24. Jul 2003 14:52


Attachment an E-Mail anhängen
 
Hallo alle zusammen,

Wie kann ich eine E-Mail, die ich wie folgt aufrufe ein Datei anhängen?
In einem Beitrag hier steht es sollte mit ...&Attachment=Pfad gehen aber ich bekomme es einfach nicht hin.

Das Mail Programm öffne ich wie folgt.

Code:
shellExecute(Application.Handle, 'open', Pchar('mailto:'+Form3.DBEMail.Text+'?Subject=Betreff&BODY=text,nil,nil,sw_showNormal);

APP 24. Jul 2003 14:58

Re: Attachment an E-Mail anhängen
 
Hallo Albi,

meines Wissens nach geht das nicht mit ShellExecute, versuche mal "TJCLSimpleMail" (so heißt das glaube ich) von den Jedis.

Mauli 24. Jul 2003 15:10

Re: Attachment an E-Mail anhängen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir eine MailFrame1 gemacht:

Delphi-Quellcode:
unit MailUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Psock, NMsmtp, StdCtrls, ExtCtrls, TS_Utils;

type
  TMailFrame = class(TFrame)
    NMSMTP1: TNMSMTP;
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    MailSenden: TButton;
    Label1: TLabel;
    function GetIPAddress: string;
    procedure FrameEnter(Sender: TObject);
    procedure NMSMTP1AuthenticationFailed(var Handled: Boolean);
    procedure NMSMTP1Failure(Sender: TObject);
    procedure NMSMTP1HeaderIncomplete(var handled: Boolean;
      hiType: Integer);
    procedure NMSMTP1InvalidHost(var Handled: Boolean);
    procedure NMSMTP1RecipientNotFound(Recipient: String);
    procedure NMSMTP1SendStart(Sender: TObject);
    procedure NMSMTP1Success(Sender: TObject);
    procedure MailSendenClick(Sender: TObject);
    procedure FrameExit(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation
uses mapi, winsock;

{$R *.DFM}

function TMailFrame.GetIPAddress: string;
var phoste: PHostEnt;
    Buffer: array [0..100] of char;
    WSAData: TWSADATA;
begin
  result:='';
  if WSAStartup($0101, WSAData) <> 0 then exit;
  GetHostName(Buffer, SizeOf(Buffer));
  phoste:=GetHostByName(buffer);
  if phoste = nil then
    result:='127.0.0.1'
  else
    result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
    WSACleanup
   
end;


procedure TMailFrame.FrameEnter(Sender: TObject);
begin

end;



// MAILSSENDEN
// SENDEN NCM
procedure TMailFrame.MailSendenClick(Sender: TObject);
begin
  Label1.Caption:='Verbindung zum E-Mail Server wird hergestellt...';
  NMSMTP1.UserID:=Stammnummer;
IF NMSMTP1.Connected=False THEN NMSMTP1.Connect;
NMSMTP1.SendMail;
end;






procedure TMailFrame.FrameExit(Sender: TObject);
begin
IF NMSMTP1.Connected=True THEN NMSMTP1.Disconnect;
end;


// ###################################################
//  Meldungen !!!!
// #################################
procedure TMailFrame.NMSMTP1InvalidHost(var Handled: Boolean);
begin
   Label1.Caption:='Host ist ungültig'
end;

procedure TMailFrame.NMSMTP1RecipientNotFound(Recipient: String);
begin
   Label1.Caption:='Empfänger konnte nicht aufgerufen werden'
end;

procedure TMailFrame.NMSMTP1SendStart(Sender: TObject);
begin
  Label1.Caption:='Es wird versucht, die Nachricht zu versenden'
end;

procedure TMailFrame.NMSMTP1Success(Sender: TObject);
begin
   Label1.Caption:='Nachricht konnte erfolgreich zugestellt werden'
end;
procedure TMailFrame.NMSMTP1AuthenticationFailed(var Handled: Boolean);
begin
    Label1.Caption:='Benutzerkennung ist ungültig'
end;

procedure TMailFrame.NMSMTP1Failure(Sender: TObject);
begin
  Label1.Caption:='Nachricht konnte nicht versandt werden'
end;

procedure TMailFrame.NMSMTP1HeaderIncomplete(var handled: Boolean;
  hiType: Integer);
begin
      Label1.Caption:='Es fehlt der Absender bzw. der Empfänger'
end;



end.
Du brauchst halt die NMSMTP1 Komponente dazu.


Diesen Frame fügst du dann in dein Formular ein.

Und da im Quelltext :

Delphi-Quellcode:
with MailFrame1 do
   with NMSMTP1 do
    with PostMessage do
   begin
      // EMPFÄNGER
      ToAddress.Clear;
      ToAddress.ADD('deine@mail.de');

      //FromAddress
      ToBlindCarbonCopy.Clear;
      ToBlindCarbonCopy.Add('@');

      // Anhang Excel- Datei
      Attachments.Clear;
      //Attachments.Add('Datei');
      Subject:='Test';

   end;
   MailFrame1.MailSendenClick(Self);
Vielleicht hilft dir das ja :nerd:

Albi 24. Jul 2003 16:04

Re: Attachment an E-Mail anhängen
 
Naja, das sieht ja ganz gut aus aber geht das nicht ein wenig einfacher?
ich wollte das eigentlich nicht so kompliziert haben.

Ich werde es aber trotzdem gleich mal ausprobieren.

Mauli 24. Jul 2003 16:06

Re: Attachment an E-Mail anhängen
 
Stimmt. Sieht kompliziert aus. :angle2:

Du kannst die ja das Beispiel mal runterladen. Und es dir anschauen.

Daniel B 24. Jul 2003 16:11

Re: Attachment an E-Mail anhängen
 
Hallo,

versuchs mal hiermit:
Delphi-Quellcode:
ShellExecute(Handle, 'open', 'mailto:hallo@blupp.de?subject=Blupp123&Body=Töröö&Attachment="C:\pfad\zur\file.exe"', nil, nil, SW_SHOW);
Grüsse, Daniel :hi:

Mauli 24. Jul 2003 16:12

Re: Attachment an E-Mail anhängen
 
Das sieht auch einfacher aus... :oops:

Albi 24. Jul 2003 16:29

Re: Attachment an E-Mail anhängen
 
Da bekomme ich auch ne Feldermeldung, die Besagt: "Outlook kann nicht gestartet werden. Das Befehlszeilenargument ist ungültig . Überprüfen Sie den verwendeten Befehl."

Daniel B 24. Jul 2003 17:56

Re: Attachment an E-Mail anhängen
 
Hi,

Du benutzt also Outlook und nicht den OE.
Ich hab mein OL nicht konfiguriert, weil ich den OE benutze und dies werde ich auch nicht ändern, aber versuche mal folgendes:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Outlook, MailItem: OLEVariant;
begin
  try
    Outlook := GetActiveOleObject('Outlook.Application');
  except
    Outlook := CreateOleObject('Outlook.Application');
  end;
  MailItem := Outlook.CreateItem(0);
  MailItem.Recipients.Add('hallo@blupp.de');
  MailItem.Subject := 'dsgfd';
  MailItem.Body := 'slkdfhskdjhfkds';
  MailItem.Attachments.Add('C:\meine.exe');
  MailItem.Send;
  Outlook := Unassigned;
end;
Grüsse, Daniel :hi:

Hansa 24. Jul 2003 19:23

Re: Attachment an E-Mail anhängen
 
Wie es aussieht liegt das an der Mapi. Wenn es immer noch nicht geht würde ich da mal nach gucken. Bei OE scheint das anders zu sein wie beim normalen Outlook.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz