Delphi-PRAXiS

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.

Albi 25. Jul 2003 13:06

Re: Attachment an E-Mail anhängen
 
Was heißt OE?

Mauli 25. Jul 2003 13:08

Re: Attachment an E-Mail anhängen
 
Outlook Express denke ich.

Albi 25. Jul 2003 13:09

Re: Attachment an E-Mail anhängen
 
Das klingt logisch, hät ich ja auch drauf kommen können.

Mauli 25. Jul 2003 13:11

Re: Attachment an E-Mail anhängen
 
Klappt es denn jetzt??? :?:

Albi 25. Jul 2003 13:50

Re: Attachment an E-Mail anhängen
 
Ich habe es mal versucht wie Daniel B es geschrieben hat, es läuft auch aber mich entschieden die Datei die ich versenden will nur als Doc abzuspeichern und anschließend per Mail zu versenden, so das ich die Datei anschließend manuel in die Mail einfüge.

fly_singapore 30. Apr 2007 09:41

Re: Attachment an E-Mail anhängen
 
Ich habe oben beschriebene Variante ausprobiert und getestet. Zunächst hat alles Wunderbar funktioniert.
Heute morgen hatte ich jedoch das Problem, dass der eigentliche Text, den ich im E-Mail verschicken wollte, nicht mehr drin
steht..

OK, ich habe heute morgen überzählige E-Mails gelöscht, aber daran kanns nicht liegen. Was sonst... Vielleicht irgendwelche Outlook-Einstellungen?

hier kurz mein Test-Script:

Delphi-Quellcode:

procedure TForm1.Button5Click(Sender: TObject);

var
Outlook, Mailitem, Namespace, Contacts : olevariant;
excel: variant;
IZaehler : string;



begin
// Neue Outlook-Instanz
  Outlook := CreateOleObject('Outlook.Application');

   // Eine neu E-Mail generieren

  MailItem := Outlook.CreateItem(0);

  // E-Mail-Empfänger einfügen
  MailItem.Recipients.Add('peter_steffens@t-online.de');
  // Betreffzeile einfügen
  MailItem.Subject := 'E-Mail aus Delphi 3.0';
  // E-Mail-Text einfügen
  MailItem.Body := 'Mittels Object Linking and Embeddding ist es mir gelungen, aus Delphi heraus eine E-Mail an Dich zu versenden';
   // E-Mail versenden
  MailItem.Send;

  // Outlook-Verbindung trennen
  Outlook := Unassigned;




end;

Gruss aus Bonn

Peter

TylerDurden 14. Jun 2007 08:11

Re: Attachment an E-Mail anhängen
 
Hallo Peter und auch die anderen,

besteht bei Deiner Variante auch die Möglichkeit eine Datei an die EMail anzuhängen?
Wenn ja wie?

Vielen Dank schon mal!

fly_singapore 3. Jul 2007 14:53

Re: Attachment an E-Mail anhängen
 
[b]Hallo TylerDuden,


ja funktioniert auch.. Der Vorredner "Daniel B" in diesen Thread hats auch schon gezeigt:

Zitat:


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;


Probiere es mal aus!!!

Gruss Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.

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