![]() |
Txt-Datei automatisch als E-Mail versenden
Hallo,
hab mal ne frage zum Thema E-Mail. Ich weiß das es hier im Forum dazu hunderte gibt, kann allerdings momentan nicht das passende für mich finden. Was ich bis jetzt raus gefunden habe ist, das man meine Sache wahrscheinlich mit einer Indy-Komponente lösen könnte. Ich möchte automatisch zu einer bestimmten Zeit eine E-Mail mit Anhang einer Textdatei oder ähnlich an einen bestimmten E-Mail Empfänger senden. Provider sollten alle möglich sein. Jetzt meine frage, wie mach ich das, welche Komponente am besten und wie gehe ich das Problem am besten an. Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Wenn der User deinem Programm das Passwort/Username anvertraut solltest du bei fast allen Providern mittels SMTP-Komponente die Mail abschicken können.
Falls er dir nicht vertraut wirst du auf MAPI umstellen müssen und hoffen das der Mail-Client MAPI-Tauglich ist. |
Re: Txt-Datei automatisch als E-Mail versenden
Also, es ist so, das ich der User meinem Programm eine eigene E-Mail zur Verfügung stellen soll, von der ich auch nur senden will. Empfangen wird mein Programm nie was.
Das heißt für mich ja eigendlich, das er mir ohne weiteres die Daten zur Vefügung stellen kann. Wie verhält sich sowas in einem internen Intranet, wo der eigendliche User nict über einen Internetzugang, sondern nur über Intranet verfügt. |
Re: Txt-Datei automatisch als E-Mail versenden
Das geht doch genauso als wenn du eine Mail mit Anhang nach dem Kliock auf eine Schaltfläche verschicken willst. Und dazu sollte es genug Beispielcod eim Forum geben.
|
Re: Txt-Datei automatisch als E-Mail versenden
Das ist richtig, da nach suche ich ja auch in diesem Moment, nur vor laute Wald sieht man halt bald keine Bäume. Weißt du, wenn man nicht so 100% weiß, was da der richtige Weg ist, ist es schwer bei diesen vielen Beiträgen zu filtern. Wollte ja nur mal ein paar Hinweiße haben, die mir die Suche ein bißchen einfacher machen.
Gruß Jens PS: Das mit der Indykomponente habe ich ja auch schon rausbekommen. [EDIT] Also ich glaube ich habe was ![]() |
Re: Txt-Datei automatisch als E-Mail versenden
So habe aufjedenfall die Komponenten und meine Projektdatei angepaßt und habe auch mal das Beispiel eingefügt. :thumb:
Das das nicht funktionieren kann ist mir klar. Irgendwie muss man ja auch mal Server, Passwort etc bekannt geben. Auch der Zugriff muss ja irgendwie geregelt werden. Kann mir jemand vieleicht mal ein Tutoral oder so nennen. Oder einen Link. Irgendwas, womit ich die Möglichkeit habe mich darein zu arbeiten? Gruß Jens :gruebel: |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
schau mal hier: ![]()
Delphi-Quellcode:
wäre aber auch möglich.
IdMessage.Body.LoadFromFile('textdateiname');
|
Re: Txt-Datei automatisch als E-Mail versenden
Dank an alle zusammen, habe es aber schon hinbekommen.
Wie verhält sich das den bei einem Intranet, also wenn der USER keinen Internetzugang hat, sondern nur intern EMail versenden soll. Trotzdem übrigens Danke. Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hab das jetzt alles soweit am laufen und es funktioniert, allerdings, bekomme ich keine Anhänge eingefügt. Ich habe die ganzen Varianten mit Attachment und so die ich im Forum gefunden habe versucht, allerdings ohne Erfolg. Wie hänge ich den eine ganz normale Textdatei oder PDF an ?
Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
hilft Dir das?
Delphi-Quellcode:
IdMessage.Clear;
IdMessage.MessageParts.Clear; IdMessage.Date := Now; IdMessage.From.Text := 'Wer.bin.ich@Und.wenn.ja.warum'; IdMessage.Recipients.EMailAddresses := 'bekomme.ich@die.mail'; IdMessage.BccList.EMailAddresses := 'du.darfts@auch.lesen'; IdMessage.Subject := 'Irgendeinbetreff'; IdMessage.Body.Text := slBody.Text; TidAttachment.Create(idMessage.MessageParts,sFileName); idSMTP.Connect(10000); idSMTP.Send(IdMessage); idSMTP.Disconnect; |
Re: Txt-Datei automatisch als E-Mail versenden
Delphi-Quellcode:
von der Sache her muss es das sein, das habe ich auch schon in vielen Varianten probiert. Auch über die Delphi Hilfe komm ich irgendwie nicht weiter.
TidAttachment.Create(mesgMessage.MessageParts,'.\29.03.2009.txt');
egal, ob ich den File direkt angebe, oder über eine Var., Delphi schreibt mir immer zu viele Parameter Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
welche Versionen von Delphi und den Komponenten hast Du? Wie sieht der Hinweis von CodeInsight aus? Meine mich schwach daran erinnern zu können, dass sich da mal was geändert hat. |
Re: Txt-Datei automatisch als E-Mail versenden
Ja, so irgendwas habe ich auch gelesen. Das Funktioniert wohl nur mit Indy 9.
Ich benutze Delphi 2007 (CodeGear RAD Studio) und da war Indy 10.1.1 enthalten. Allerdings, finde ich da keinen richtigen Hinweis für die Anwendung in der Hilfe. Aber irgendwas muss da anders sein, weil die Möglichkeit die du mir aufgezeigt hast, habe ich Hundert-Fach hier im Forum gefunden, allerdings mehrmals mit dem Hinweis auf Indy 9 Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
schau mal bitte hier: ![]() Bitte geduldig warten, es dauert eine Weile, bis die Seite angezeigt wird, auch wenn es vorher den Eindruck erweckt, die Seite wäre schon geladen. |
Re: Txt-Datei automatisch als E-Mail versenden
Meinst du das hier, wenn ja glaube ich versteh ich es noch nicht richtig...
Delphi-Quellcode:
constructor Create(Collection: TIdMessageParts;
const AFileName: String = ''; reintroduce; |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo zusammen,
So ich habe die Lösung geknackt. Also mit der Indy 10.1.1 wird das ein bißchen anders gemacht. Wenn es jemand interessiert, hier die funktionierende Lösung. Wenn noch jemand Verbesserungsvorschläge hat, nehme ich die gerne an.
Delphi-Quellcode:
Besten Dank trotzdem für die Hilfe.
procedure TMailSendenForm.butnSendMailClick(Sender: TObject);
var FileName : String; FileData : TIdAttachmentFile; begin FileName := FileEdit.Text; butnSendMail.Enabled := False; try with mesgMessage do begin Clear; From.Text := FromMailEdit.Text; // von welchem account aus Recipients.Add.Text := AddMailEdit.Text; // an welche addi Subject := 'Datensatz vom '+ DateToStr(Now); // betreff Body.Assign(MemoVortext.Lines); // die nachricht aus dem memo if FileExists(FileName) then begin FileData := TIdAttachmentFile.Create(MessageParts, FileName); end //Body.LoadFromFile('.\29.03.2009.txt'); end; with smtpSendMail do begin smtpSendMail.Username := FromMailEdit.Text; smtpSendMail.Password := PasswortEdit.Text; Host := SMTPEdit.Text; //smtp-server hier web Connect; try Send(mesgMessage); finally Disconnect; end; end; showmessage('Mail wurde erfolgreich an [email]jens.hartmann@hu-gmbh.de[/email] gesendet'); finally butnSendMail.Enabled := True; end; end; Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo zusammen,
ich habe zur Zeit nochmal ein älteres Thema von mir zur Bearbeitung. Ich habe in die oben gezeigte E-Mail Funktion die Anhänge erweitert, da ich eine HTML-Dokument als Anhang versende, und die CSS Datei und das Kopf Bild mit versenden will.
Delphi-Quellcode:
Das funktioniert auch alles super gut. Allerdings muss ich in meinem E-Mail Programm immer erst die beiden Dateien einmal öffnen, damit Sie in den entsprechenden Temp Ordner von Outlook geschrieben werden, um mein Stylesheet in dem HTML Dokument auch zu sehen.
Attachment.Add(FileName);//HTML-Dokument welches folgende Dateien benötigt
Attachment.Add('C:\Users\jens.hartmann\Documents\Kopf1.bmp'); Attachment.Add('C:\Users\jens.hartmann\Documents\mb.css'); Wie kann man diese Dateien so in die E-Mail integrieren, das nur das HTML-Dokument geöffnet werden muss. :gruebel: Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Ich würde sagen, du integrierst das Stylesheet gleich in das HTML-Dokument:
XML-Code:
<style type="text/css">
... </style> |
Re: Txt-Datei automatisch als E-Mail versenden
Zitat:
Delphi-Quellcode:
:gruebel: Oder ist das wie oben falsch ? :gruebel:
slHTML.Add('<head>');
slHTML.Add('<link rel="stylesheet" type="text/css" href="MB.css"'); slHTML.Add('<Style type="text/css"></style>'); slHTML.Add('<title>Protokolldatei</title>'); slHTML.Add('</head>'); Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
Zitat:
Delphi-Quellcode:
slHTML.Add('<head>');
slHTML.Add('<link rel="stylesheet" type="text/css" href="MB.css"'); slHTML.Add('<Style type="text/css">Der Inhalt vom Stylesheet kommt hier hin.</style>'); slHTML.Add('<title>Protokolldatei</title>'); slHTML.Add('</head>'); |
Re: Txt-Datei automatisch als E-Mail versenden
Zitat:
Delphi-Quellcode:
Hat aber halt den Nachteil, das ich Grundsätzlich im Quellcode das Stylesheet anpassen muss.
slHTML.Add('<Style type="text/css">'+
'.Stoerung { background-color : #FF0000; }'+ '.Drucker-Stoerung { background-color : #FFFF00; }' </style>'); Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
mach Dir doch zwei Stringlisten, eine für's HTML eine für die CSS-Datei. In die HTML-Datei setzt Du Dir 'nen Platzhalter, den Du durch den Text der CSS-Datei ersetzt. Ungefähr so:
Delphi-Quellcode:
Du kannst die CSS-Datei getrennt pflegen und nutzen und nur für die Mail wird sie in die HTML-Seite "hineingewuselt".
slCSS.LaodFromFile('MB.CSS');
slHTML.Add('<head>'); slHTML.Add('<link rel="stylesheet" type="text/css" href="MB.css"'); slHTML.Add('<Style type="text/css"><#CSS></style>'); slHTML.Add('<title>Protokolldatei</title>'); slHTML.Add('</head>'); slHTML.Text := AnsiReplaceText(slHTML.Text,'<#CSS>',slCSS.text); |
Re: Txt-Datei automatisch als E-Mail versenden
Das ist richtig,
dann habe ich aber immer noch das Problem mit dem Bild. Wie trage ich das denn als StringList ein. Wenn ich deinen Entwurf nehme, stehen der Inhalt der Stringlist nur am Anfang der HTML-Dokuments. Muss ich das ganz nicht noch irgendwie mit StringReplaced für #13#10 oder so bearbeiten. Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Hallo,
das Bild bekommst Du nicht in 'ne Stringliste, eventuell geht das als Anhang der Mail, wie der Client damit umgeht, weiß ich nicht. Das Stylesheet musst du nicht bearbeiten, der Text muss weder als "Einzelzeiler" noch speziell formatiert sein. Das Stylesheet selbst wird nur im HTML-Header benötigt. Im HTML-Dokument wird darauf referenziert, bzw. der Client sucht sich die passenden Layoutdefinitionen. So sieht es vielleicht etwas schöner aus:
Delphi-Quellcode:
Edit hat Schreibfehler gefunden.
slCSS.LoadFromFile('MB.CSS');
slHTML.Add('<head>'); // kann entfallen slHTML.Add('<link rel="stylesheet" type="text/css" href="MB.css"'); slHTML.Add('<Style type="text/css">'); slHTML.Add('<#CSS>'); slHTML.Add('</style>'); slHTML.Add('<title>Protokolldatei</title>'); slHTML.Add('</head>'); slHTML.Text := AnsiReplaceText(slHTML.Text,'<#CSS>',slCSS.text); |
Re: Txt-Datei automatisch als E-Mail versenden
Danke nahpets,
das funktioniert so. Aber das mit dem Kopfbild ist halt ein Problem. Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Ich habe jetzt das ganze Netz per Google ergoogled und das ohne Erfolg. Naja was heißt ohne Erfolg. Es ist scheinbar so, das es mit den Bildern wirklich nicht so einfach ist.
Ich habe es aber jetzt nach Vorschlägen aus dem Netzt gelößt, ich habe die Bilddatei einfach auf unseren Server(Unsere Hompage) geladen und habe das Bild als Link angelegt. Besteht jetzt einen Internet Verbindung funktioniert es, ansonsten halt nicht. Ich glaube das es auch im allgemeine so gemacht wird. Man kennt das ja von Outlook, allerdings würde mich mal interesieren, wie dort der Hinweis zum download hinkommt. Und wenn ich dort auf speichern Klicke, sind diese ja immer in der Mail vorhanden. Wäre nun die Frage, wie man das einbinden kann. Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
|
Re: Txt-Datei automatisch als E-Mail versenden
Zitat:
Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Möglichkeit 1: (Bild als Attachment)
Das Bild muss noch zusätzlich mit einer Content-ID versehen werden, dann kannst du innerhalb der HTML-Mail auf dieses Bild zugreifen. Wie das aussieht, wie man darauf kommt? Schick dir doch selber mal eine mail (z.B. via Outlook) und schau dir dann die Mail an, wie die aufgebaut ist. Möglichkeit 2: (Bild im HTML-Code) Öffne Word, tippe ein wenig Text, packe ein Bild dazu und speicher das ganze als "Webseite, gefiltert (*.htm;*.html)" Wenn dort genau nur 1 Bild enthalten ist, dann wird dieses Bild in der html-Datei gespeichert. |
Re: Txt-Datei automatisch als E-Mail versenden
Danke für die vielen antworten.
Ich habe die Version mit dem Verweis auf die Homepage zur Zeit gewählt. Funktioniert auch echt gut. Auch das mit dem Stylesheet funktioniert ohne Probleme. Allerdings wenn ich die Datei dann aus dem IE Drucken will, wird der Stylesheet beim drucken nicht berücksichtigt. Kann man das irgendwie realisieren. Ich habe nur eine paar Spaltenfarben im Sheet. Diese werden allerdings auf dem Drucker nicht ausgegeben. :gruebel: Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
Liste der Anhänge anzeigen (Anzahl: 1)
Morgen zusammen,
ich hab mal noch eine Frage zu Style. Ich habe zwei Überschriften im Kopf des HTML Dokument. Diese entstehen aus dem Firmenschriftzug von uns. Allerdings wird normalerweise die beiden Zeilen näher aneinander geschrieben. Wie kann ich so was hinbekommen. Nachdem ich das ganze mit Google gesucht habe, bin ich auf folgende Lösung gekommen, die allerdings wie man im Anhang sieht nicht funktioniert.
Delphi-Quellcode:
Danke schon mal für Eure Hilfe und
slHTML.Add('<head>');
slHTML.Add('<Style type="text/css"> .zahl {line-height: 1.5;}>'); //Zeilenhöhe slHTML.Add('<#CSS>'); slHTML.Add('</style>'); slHTML.Add('<title>Protokolldatei</title>'); slHTML.Add('</head>'); slHTML.Text := AnsiReplaceText(slHTML.Text,'<#CSS>',slCSS.text); slHTML.Add('<body>'); slHTML.Add(' <span style="font-family: century gothic,">'); slHTML.Add('<img src= "http://www.hu-gmbh.de/images/01_home/comp_streifen_home.png" width= "900" height= "150" align= "rigth" alt= "Titel" >'); slHTML.Add('<p class="zahl">'); //Zeilenhöhe für Bereich aktiv schalten slHTML.Add('<h1 style="color:#000080; align='+ '"right">Musterfirma</h1>'); slHTML.Add('<h2 style="color:#000000; align='+ '"right">Systemtechnik GmbH</h2>'); slHTML.Add('</p>'); //Zeilenhöhe wieder normal Bereich ausschalten slHTML.Add('<h1 style="color:#FFFFFF; background-color:#000080;">Objekt: ' +Kunde+'</h1>'); Gruß Jens |
Re: Txt-Datei automatisch als E-Mail versenden
so in etwa?
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html> <head> <title>Test</title> <style type="text/css"> .Firmenname1 { color:#000080; font-size:200%; font-style:bold } .Firmenname2 { color:#000000; font-size:120% } </style> </head> <body> <div> <span class="Firmenname1">Musterfirma</span> <span class="Firmenname2">Systemtechnik GmbH</span></p> </div> </body> </html> |
Re: Txt-Datei automatisch als E-Mail versenden
Sorry, das die antwort so lange auf sich warten lies.
Aber, trotzdem noch Danke, das war die Lösung...
Delphi-Quellcode:
Danke und Gruß
slHTML.Add('<style type="text/css">'+
'.Firmenname1 { color:#000080; font-size:234%; font-style:bolder; font-family: century gothic; }'+ '.Firmenname2 { color:#000000; font-size:173%; font-family: century gothic; }'+ '.Objekt1 { text-shadow:#c0c0c0 3px 3px 5px; color:#FFFFFF;'+ ' font-size:200%; font-style:bolder;'+ ' font-family: century gothic; background-color:#000080; }'+ '.Event { color:#FFFFFF;'+ ' font-size:200%; font-style:bolder;'+ ' font-family: century gothic; background-color:#FFCC00; }'+ slHTML.Add('<img src= "http://www.myhomepage.de/images/01_home/comp_streifen_home.png" width= "900" height= "150" align= "rigth" alt= "Titel" >'); slHTML.Add('<div>'); slHTML.Add(' <span class="Firmenname1">Musterfirma</span> '+ '<span class="Firmenname2">Musterfirma</span></p>'); {$IFDEF DEMO} slHTML.Add(' <span class="Objekt1">Dokument wurde durch eine Demoversion'+ ' von print + save erstellt!</span></p>'); {$ELSE} slHTML.Add(' <span class="Objekt1">Standort/Objekt: '+Kunde+'</span></p>'); {$ENDIF} slHTML.Add(' <span class="Event">Auslösendes Ereignis: '+AbsenceString+'</span></p>'); slHTML.Add('</div>'); slHTML.Add('<table border="0" style="border-collapse:separate;"'+ 'width="100%" style="'+ 'border-left:5px solid #000080;border-right:5px solid #000080;'+ 'border-top:5px solid #000080;border-bottom:5px solid #000080;>'); slHTML.Add('<tr>'); '</style>'); Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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