![]() |
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);
|
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. |
Re: Attachment an E-Mail anhängen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir eine MailFrame1 gemacht:
Delphi-Quellcode:
Du brauchst halt die NMSMTP1 Komponente dazu.
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. Diesen Frame fügst du dann in dein Formular ein. Und da im Quelltext :
Delphi-Quellcode:
Vielleicht hilft dir das ja :nerd:
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); |
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. |
Re: Attachment an E-Mail anhängen
Stimmt. Sieht kompliziert aus. :angle2:
Du kannst die ja das Beispiel mal runterladen. Und es dir anschauen. |
Re: Attachment an E-Mail anhängen
Hallo,
versuchs mal hiermit:
Delphi-Quellcode:
Grüsse, Daniel :hi:
ShellExecute(Handle, 'open', 'mailto:hallo@blupp.de?subject=Blupp123&Body=Töröö&Attachment="C:\pfad\zur\file.exe"', nil, nil, SW_SHOW);
|
Re: Attachment an E-Mail anhängen
Das sieht auch einfacher aus... :oops:
|
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."
|
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:
Grüsse, Daniel :hi:
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; |
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.
|
Re: Attachment an E-Mail anhängen
Was heißt OE?
|
Re: Attachment an E-Mail anhängen
Outlook Express denke ich.
|
Re: Attachment an E-Mail anhängen
Das klingt logisch, hät ich ja auch drauf kommen können.
|
Re: Attachment an E-Mail anhängen
Klappt es denn jetzt??? :?:
|
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.
|
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 |
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! |
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:
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