![]() |
SQL-Abfrage per EMail verschicken
Hallo zusammen,
möchte gerne eine DB-Auswertung in einem Report per EMail verschicken können. Sprich ich will eine Anwendung schreiben, welche es mir ermöglicht zu einem bestimmten Zeitpunkt eine EMail zu verschicken, ohne einen bestimmtes Email Programm zu nutzen. Also selber eine Maske erstellen mit Empfänger ... Also nicht über OLE ein bestimmtes Programm(Outlook oder David) starten. Danke für eure Vorschläge Gruß Andreas |
Re: SQL-Abfrage per EMail verschicken
Soll der Report direkt in die EMail rein oder als Anhang mitgeschickt werden ?
|
Re: SQL-Abfrage per EMail verschicken
Such mal nach SMTP (z.B. bei den Indys)
|
Re: SQL-Abfrage per EMail verschicken
Als Anhang oder in Body. Ist auch egal. Mir gehts in erster Linie nur darum, dass es möglich ist ohne OLE das Ganze zu realisieren.
Gruß |
Re: SQL-Abfrage per EMail verschicken
Da wurden die Indys ja schon genannt.
Vielleicht helfen dir die ![]() |
Re: SQL-Abfrage per EMail verschicken
Hm das Problem ist, dass ich von der Materie überhaupt keinen Plan hab. :-D
Gibt es Irgendwo ein Tutorial?? gruß |
Re: SQL-Abfrage per EMail verschicken
Ich schau mal zu die Woche noch eine knappe Demo zu erstellen. Ist eigentlich ganz trivial, allerdings wohl nur aus meiner Sicht. :mrgreen:
|
Re: SQL-Abfrage per EMail verschicken
Habs dann doch noch heute geschafft.
Ein Demo Projekt hängt im ![]() Das Beispiel zeigt, wie eine Mail personalisiert werden kann, wie Grafiken eingebunden werden können, und wie ganze Tabelle basierend auf TDataset eingebunden werden können. Master-Detail Beziehungen sind auch möglich, aber nicht im Demo eingebunden, dafür war die Zeit zu knapp. Die Mailvorlage muss als HTML Datei vorliegen und heisst in der Demo MailVorlage.html. |
Re: SQL-Abfrage per EMail verschicken
Ok danke Dir erstmal. Werde heute Abend mal ne weil testen.
Gruß |
Re: SQL-Abfrage per EMail verschicken
Hallo,
hab jetzt ein bischen Code zusammengeklaut und eine Maske entworfen. Versuche nun über die Maske auf meinen SMPT-Server zuzugreifen. Bekomme zwar keine Fehlermeldung beim senden, aber es kommt auch keine Mail an :( .
Delphi-Quellcode:
procedure TForm1.AusWertSend(an, Nachricht, vonMail, Betreff, Priority, CT, SMTPServer, SMTPUsername, SMTPPass: String; SMTPPort : integer); var IdMsgSend: TidMessage; SMTP: TidSmtp; POP: TidPop3; i: integer; s: string; begin IdMsgSend := TidMessage.Create(nil); SMTP := TidSmtp.Create(nil); IdMsgSend.Clear; // Plain Text with TIdText.Create(IdMsgSend.MessageParts, nil) do begin ContentType := 'text/plain'; Body.Text := Nachricht; end; // HTML Part with TIdText.Create(IdMsgSend.MessageParts, nil) do begin ContentType := 'text/html'; Body.Text := 'Dateien\MailVorlage.html'; end; with IdMsgSend do begin ContentType := CT; From.Text := vonMail; ReplyTo.EMailAddresses := vonMail; Subject := Betreff; Priority := Priority; s := ''; BccList.EMailAddresses := an; ReceiptRecipient.Text := ''; end; SMTP.AuthType := atDefault; SMTP.Username := SMTPUsername; SMTP.Password := SMTPPass; SMTP.Host := SMTPServer; SMTP.Port := SMTPPort; SMTP.Connect; ShowMessage(IntToStr(IdMsgSend.MessageParts.Count)); try SMTP.Send(IdMsgSend); finally SMTP.Disconnect; end; IdMsgSend.free; SMTP.free; end; procedure TForm1.btnSendenClick(Sender: TObject); begin AusWertSend(EditAdressen.Text, MemoText.Text,'Andi_S75@hotmail.de',EditBetreff.Text, 'mpnormal','BlaBlaBla', EditSMTP.Text,EditBenutzer.Text, EditKennwort.Text,25); end; Könnte sich einer bitte kurz die Mühe machen und schauen voran es liegt. Komme von selber leider nicht drauf. Danke |
Re: SQL-Abfrage per EMail verschicken
HuHu :-D
|
Re: SQL-Abfrage per EMail verschicken
Ich könnte zurückrufen :angel2:
Hast Du meine Demo denn getestet? |
Re: SQL-Abfrage per EMail verschicken
Hab dein Demo getestet. Aber ich bekomme da eine Fehlermeldung. Irgendwas mit Host nicht erreichbar(natürlich hab ich die daten meinen providers benutzt). Hab dann bischen rumgestöbert und mir den Code zusammen gesucht.
Aber irgendwie funzt das auch nicht. :? |
Re: SQL-Abfrage per EMail verschicken
Was hast du denn als Host und Port eingetragen. Auch die Art der Authentifizierung am SMTP Server kann eine Rolle spielen.
|
Re: SQL-Abfrage per EMail verschicken
Host --> Mein Host und Auth--> atDefault. Nutze Delphi2007. Wenn ich folgen Code als Auth nutze bringt er mir die Fehlermeldung
--> Undefinierter Bezeichner "AuthenticationType"
Delphi-Quellcode:
also muss ich folgenden Code verwenden
case SmtpAuth of
0: SMTP.AuthenticationType := atNone; 1: SMTP.AuthenticationType := atLogin; {Simple Login} end;
Delphi-Quellcode:
Hier bringt er mir die Fehlermeldung --> ... ist eine Exeption der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten. Also
case SMTPAuth of
0 : SMTP.AuthType := atNone; 1 : SMTP.AuthType := atDefault; end; keine Ahnung :-D
Delphi-Quellcode:
procedure TFrmMailMain.AusWertSend(An, Nachricht, vonMail, Betreff, Priority, CT, SMTPServer, SMTPUsername, SMTPPass: String; SMTPAuth, SMTPPort : integer); var IdMsgSend: TidMessage; SMTP: TidSmtp; POP: TidPop3; i: integer; begin IdMsgSend := TidMessage.Create(nil); SMTP := TidSmtp.Create(nil); POP := TidPop3.create(nil); IdMsgSend.Clear; // Plain Text with TIdText.Create(IdMsgSend.MessageParts, nil) do begin ContentType := 'text/plain'; Body.Text := Nachricht; end; // HTML Part with TIdText.Create(IdMsgSend.MessageParts, nil) do begin ContentType := 'text/html'; Body.Text := 'Dateien\MailVorlage.html'; end; with IdMsgSend do begin ContentType := CT; From.Text := vonMail; ReplyTo.EMailAddresses := vonMail; Subject := Betreff; Priority := Priority; BccList.EMailAddresses := An; ReceiptRecipient.Text := ''; end; IdMsgSend.ContentType := CT; case SMTPAuth of 0 : SMTP.AuthType := atNone; 1 : SMTP.AuthType := atDefault; end; {case SmtpAuthType of 0: SMTP.AuthenticationType := atNone; //Normal 1: SMTP.AuthenticationType := atLogin; //SMTPAuth 2: begin //AfterPop SMTP.AuthenticationType := atNone; POP.Host := POPServer; POP.Username := POPUser; POP.Password := POPPass; POP.Port := POPPort; POP.Connect(5); POP.Disconnect; end; 3: begin //afterPop+SMTPAuth SMTP.AuthenticationType := atLogin; POP.Host := POPServer; POP.Username := POPUser; POP.Password := POPPass; POP.Port := POPPort; POP.Connect(5); POP.Disconnect; end; end; } SMTPUsername := SMTPUsername; SMTP.Password := SMTPPass; SMTP.Host := SMTPServer; SMTP.Port := SMTPPort; SMTP.Connect; MemoLog.Lines.Add(IntToStr(IdMsgSend.MessageParts.Count)); try SMTP.Send(IdMsgSend); finally SMTP.Disconnect; end; IdMsgSend.free; SMTP.free; end; |
Re: SQL-Abfrage per EMail verschicken
AuthType sollte erst mal auf atNone stehen.
Es handelt sich da aber wohl wirklich um eine SMTP Einstellung, und hat nix mit meinen Komponenten zu tun. |
Re: SQL-Abfrage per EMail verschicken
hab jetzt mal debugged. die Fehlermeldung kommt nur wenn SMTP.Send ausgeführt wird.
ist eine Exeption der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten. Was hat denn das blank zu bedeuten?
Delphi-Quellcode:
SMTP.Connect;
if SMTP.Connected then SMTP.Send(IdMsgSend); |
Re: SQL-Abfrage per EMail verschicken
Es liegt also definitiv an deinem SMTP Server.
Musst du dich vorher eventuell per POP3 identifizieren bevor du Mails schicken kannst. Das machen viele Provider so, damit nicht jeder über ihren SMTP Server verschicken kann. Lade doch mal mit deinem Mailprogramm erst die Mails runter, und versuche anschliessend innerhalb kurzer Zeit das Senden über Indy. |
Re: SQL-Abfrage per EMail verschicken
Danke Dir werde es mal so probieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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