E-Mail versenden mit Anhang
E-Mail versenden mit Anhang
Hallo,
ich möchte eine E-Mail mit Anhang verschicken. Gibt es da eine einfache Möglichkeit dazu (ohne einen halben client erstellen zu müssen)?
Ich habe schon versucht das ganze mit Synapse zu bewerkstelligen, mit smtp von web.de. Aber alle meine versuche sind gescheitert.
Selbst einfache Demo Beispiele von Synapse werden nicht versendet. Worauf muss man den achten?1
LG
Epcop
ich möchte eine E-Mail mit Anhang verschicken. Gibt es da eine einfache Möglichkeit dazu (ohne einen halben client erstellen zu müssen)?
Ich habe schon versucht das ganze mit Synapse zu bewerkstelligen, mit smtp von web.de. Aber alle meine versuche sind gescheitert.
Selbst einfache Demo Beispiele von Synapse werden nicht versendet. Worauf muss man den achten?1
LG
Epcop
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: E-Mail versenden mit Anhang
Die Aussage, alle Versuche sind gescheitert, ist zu sehr allgemein.
Am besten mal genau umschreiben welches Demo genau es war und was die Antworten vom SMTP-Server waren. SMTP kann man zur not auch mal mit einem Terminal händisch emulieren. Ich gehe davon aus, das es schon mal an der Authentifizierung gescheitert ist. Genauer Diagnostizieren kann es nur wenn man weis, was du gesendet hast und was von der Gegenstelle zurückgesendet wurde.
War es SynapseMail von http://synapse.ararat.cz/files/contrib/ ?! oder ein anderes Beispiel ?! Wenn SynapseMail, welches Beispiel aus dem Demoordner genau ?
Am besten mal genau umschreiben welches Demo genau es war und was die Antworten vom SMTP-Server waren. SMTP kann man zur not auch mal mit einem Terminal händisch emulieren. Ich gehe davon aus, das es schon mal an der Authentifizierung gescheitert ist. Genauer Diagnostizieren kann es nur wenn man weis, was du gesendet hast und was von der Gegenstelle zurückgesendet wurde.
War es SynapseMail von http://synapse.ararat.cz/files/contrib/ ?! oder ein anderes Beispiel ?! Wenn SynapseMail, welches Beispiel aus dem Demoordner genau ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: E-Mail versenden mit Anhang
Windows 7
Lazarus 2.0.6
synapse 40
Smtp Web.de
E-Mails Versenden mit Thunderbird funktioniert - SMTP ist bei web.de also eingeschaltet.
Zum Beispiel dieser code funktioniert nicht:
A) https://stackoverflow.com/questions/676 ... t-agnostic oder auch dieser nicht
B) http://www.lazaruspascal.it/index.php?page=8;print
(Daten für Smtp https://hilfe.web.de/pop-imap/pop3/serverdaten.html )
Zum Testen soll einfach eine E-mail an mich selbst geschickt werden mit einer test-PDF Datei.
In A und B
B) sieht bei mir so aus:
Meldung: SMTP ERROR Login:???-Other undefined Status
SMTP ERROR: Logout:???-Other undefined Status
A) Sieht bei mir so aus:
Meldung: E-mail sending failed.
In beiden Beispielen könnte das vielleicht auch mit Support TLS zusammenhängen (von web.de gewünscht). Und wenn ich es richtig gelesen habe, benötige ich zusätzliche DLL.
Hier http://gnuwin32.sourceforge.net/packages/openssl.htm habe ich dann das setup gedownloadet und installiert. Brachte auch keine Änderung. Bzw. ich bin mir nicht sicher wie ich damit arbeiten muss oder ob ich noch etwas am Code verändern muss, oder einbinden usw.
Ich habe nicht wirklich Ahnung, was ich tun muss.
(Benutzer: max.mustermann und kennwort natürlich angepasst...)
Lazarus 2.0.6
synapse 40
Smtp Web.de
E-Mails Versenden mit Thunderbird funktioniert - SMTP ist bei web.de also eingeschaltet.
Zum Beispiel dieser code funktioniert nicht:
A) https://stackoverflow.com/questions/676 ... t-agnostic oder auch dieser nicht
B) http://www.lazaruspascal.it/index.php?page=8;print
(Daten für Smtp https://hilfe.web.de/pop-imap/pop3/serverdaten.html )
Zum Testen soll einfach eine E-mail an mich selbst geschickt werden mit einer test-PDF Datei.
In A und B
Code: Alles auswählen
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, SMTPSend,
MIMEPart, MIMEMess,ssl_openssl,MyLibMail ;
Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
var
app: MyMailObject;
elenco: TStringList;
Errore: string;
begin
app:=MyMailObject.Create;
{setto i parametri}
app.SetMyUser('max.mustermann@web.de');
app.SetMyNome('max.mustermann');
app.SetMyFrom('xxx@lazaruspascal.it');
app.SetMyPassword('***');
app.SetMyPorta('587'); //set to gmail
app.SetMySMTPHost('smtp.web.de'); //set to gmail
app.SetMyOggetto('MyObject');
app.SetSSLTLS(TRUE);
app.AddDestinatario('max.mustermann@web.de');
app.AddMyAllegatoList('d:\lschen.pdf');
//app.AddMyAllegatoList('c:\2.txt');
app.AddRowCorpoMail('PIPPO');
app.AddRowCorpoMail('PLUTO2');
{ invio la mail }
app.MySendMail(Errore);
if Length(TRim(Errore))>0 then
ShowMessage(Errore);
{ libero la memoria }
app.Destroy();
ShowMessage('FINISH');
end;
SMTP ERROR: Logout:???-Other undefined Status
A) Sieht bei mir so aus:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
MIMEText: TStrings;
MIMEPart: TMimePart;
MIMEMessage: TMimeMess;
begin
MIMEText := TStringList.Create;
MIMEText.Add('Hello,');
MIMEText.Add('here is the text of your e-mail message,');
MIMEText.Add('if you want the HTML format, use AddPartHTML');
MIMEText.Add('or e.g. AddPartHTMLFromFile if you have your');
MIMEText.Add('HTML message content in a file.');
MIMEMessage := TMimeMess.Create;
with MIMEMessage do
try
Header.Date := Now;
Header.From := 'sender@from.com';
Header.ToList.Clear;
Header.ToList.Add('max.mustermann@web.de');
Header.CcList.Clear;
Header.Subject := 'E-mail subject';
Header.XMailer := 'MailCient';
MIMEPart := AddPartMultipart('mixed', nil);
AddPartText(MIMEText, MIMEPart);
AddPartBinaryFromFile('d:\lschen.pdf', MIMEPart);
EncodeMessage;
if SendToRaw(Header.From, // e-mail sender
Header.ToList.CommaText, // comma delimited recipient list
'smtp.web.de', // SMTP server
Lines, // MIME message data
'max.mustermann', // server authentication
'kennwort') // server authentication
then
ShowMessage('E-mail has been successfuly sent :)')
else
ShowMessage('E-mail sending failed :(');
finally
Free;
MIMEText.Free;
end;
end;
Meldung: E-mail sending failed.
In beiden Beispielen könnte das vielleicht auch mit Support TLS zusammenhängen (von web.de gewünscht). Und wenn ich es richtig gelesen habe, benötige ich zusätzliche DLL.
Hier http://gnuwin32.sourceforge.net/packages/openssl.htm habe ich dann das setup gedownloadet und installiert. Brachte auch keine Änderung. Bzw. ich bin mir nicht sicher wie ich damit arbeiten muss oder ob ich noch etwas am Code verändern muss, oder einbinden usw.
Ich habe nicht wirklich Ahnung, was ich tun muss.
(Benutzer: max.mustermann und kennwort natürlich angepasst...)
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: E-Mail versenden mit Anhang
Es wird schon richtig sein, das es beim SSL/TLS krankt.
Lass den Teil mit dem Anhang einmal komplett weg und schau nur ob du die Mail grundlegend versenden kannst.
Ev. eine Info zu dem Thema TLS Problem hier https://github.com/matrix-org/synapse/issues/6211 oder viewtopic.php?f=55&t=12041. Habe es aber nicht mehr weiterverfolgt.
Lass den Teil mit dem Anhang einmal komplett weg und schau nur ob du die Mail grundlegend versenden kannst.
Ev. eine Info zu dem Thema TLS Problem hier https://github.com/matrix-org/synapse/issues/6211 oder viewtopic.php?f=55&t=12041. Habe es aber nicht mehr weiterverfolgt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: E-Mail versenden mit Anhang
Habs mal mit meiner App verglichen, mit der ich regelmäßig Mails mit Anhang versende. Weiß nicht, ob du das nur als Platzhalter so geschrieben hast, aber hier muss deine Mailadresse rein:
Epcop hat geschrieben:A) Sieht bei mir so aus:Code: Alles auswählen
... if SendToRaw(Header.From, // e-mail sender Header.ToList.CommaText, // comma delimited recipient list 'smtp.web.de', // SMTP server Lines, // MIME message data 'max.mustermann', // server authentication <---------------- Deine Mailadresse 'kennwort') // server authentication ...
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: E-Mail versenden mit Anhang
Anhang habe ich weggelassen bei den Beispielen.
Auch das von Michl habe ich ausprobiert, geht noch nicht.
Ich versuche jetzt mal einen Mailanbieter zu finden, der dieses SSL, TLS nicht zwingend will. Damit ich mal überhaupt einen Einstieg finde. Web.de hat mich wahrscheinlich durch die vielen Versuche schon auf eine Sperrliste gesetzt
Vor ein paar Jahren, hatte ich ähnliches mal in PHP umgesetzt. Da kam mir das nicht so schwierig vor.
Auch das von Michl habe ich ausprobiert, geht noch nicht.
Ich versuche jetzt mal einen Mailanbieter zu finden, der dieses SSL, TLS nicht zwingend will. Damit ich mal überhaupt einen Einstieg finde. Web.de hat mich wahrscheinlich durch die vielen Versuche schon auf eine Sperrliste gesetzt

Vor ein paar Jahren, hatte ich ähnliches mal in PHP umgesetzt. Da kam mir das nicht so schwierig vor.
Re: E-Mail versenden mit Anhang
Ich habe eben mal eine Wegwerfmailadresse unter web.de erstellt. Dann dort unter Einstellungen "POP3 und IMAP Zugriff erlauben" aktiviert. Da der Ausgang TLS/SSL benötigt, habe ich in der Unit smtpsend folgende Zeile unkommentiert:Und schon geht es:
Code: Alles auswählen
function SendToRaw(const MailFrom, MailTo, SMTPHost: string;
const MailData: TStrings; const Username, Password: string): Boolean;
var
SMTP: TSMTPSend;
s, t: string;
begin
Result := False;
SMTP := TSMTPSend.Create;
try
// if you need SOCKS5 support, uncomment next lines:
// SMTP.Sock.SocksIP := '127.0.0.1';
// SMTP.Sock.SocksPort := '1080';
// if you need support for upgrade session to TSL/SSL, uncomment next lines:
SMTP.AutoTLS := True; //<----------------------------- diese Zeile unkommentiert
Code: Alles auswählen
uses ..., mimepart, mimemess, smtpsend, ssl_openssl;
...
procedure TForm1.Button1Click(Sender: TObject);
var
MIMEText : TStrings;
MIMEPart : TMimePart;
MIMEMessage : TMimeMess;
begin
MIMEText := TStringList.Create;
MIMEText.Add('Hi,');
MIMEText.Add('here a cheetah.');
MIMEMessage := TMimeMess.Create;
with MIMEMessage do
try
Header.Date := Now;
Header.From := 'TestLaz@web.de';
Header.ToList.Clear;
Header.ToList.Add('TestLaz@web.de');
Header.CcList.Clear;
Header.Subject := 'Cheetah Picture';
Header.XMailer := 'Max Mustermann';
MIMEPart := AddPartMultipart('mixed', nil);
AddPartText(MIMEText, MIMEPart);
AddPartBinaryFromFile(GetCurrentDir + PathDelim + 'cheetah.jpg', MIMEPart);
EncodeMessage;
if SendToRaw(Header.From,
Header.ToList.CommaText,
'smtp.web.de:587',
Lines,
'TestLaz@web.de',
'***Password***')
then
ShowMessage('E-mail gesendet.')
else
ShowMessage('E-mail nicht gesendet');
finally
Free;
MIMEText.Free;
end;
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: E-Mail versenden mit Anhang
Hallo Michl,
vielen Dank für deine Hilfe. Ich habe deinen Code mit meinen Code verglichen. Alles Identisch. Ging trotzdem nicht.
Das hat mich nun ziemlich gewurmt, weil irgendwo muss ja ein Unterschied sein. Dachte zuerst, dass vielleicht ein Firewall oder eine fehlerhafte Datei der Grund sein könnte. Habe meinen Code nochmal genau angesehen und den Fehler gefunden:
Header.From := 'max.mustermann@web.com';
führte dazu, dass die E-Mail nicht versendet wurde.... Das .com am schluss. So oft draufgeschaut und trotzdem überlesen. Header.From muss also unbedingt richtig sein.
Ich begann schon mich mit SendEmail (http://caspian.dotconf.net/menu/Software/SendEmail/) vertraut zu machen,...
Danke für eure Hilfe.
vielen Dank für deine Hilfe. Ich habe deinen Code mit meinen Code verglichen. Alles Identisch. Ging trotzdem nicht.
Das hat mich nun ziemlich gewurmt, weil irgendwo muss ja ein Unterschied sein. Dachte zuerst, dass vielleicht ein Firewall oder eine fehlerhafte Datei der Grund sein könnte. Habe meinen Code nochmal genau angesehen und den Fehler gefunden:
Header.From := 'max.mustermann@web.com';
führte dazu, dass die E-Mail nicht versendet wurde.... Das .com am schluss. So oft draufgeschaut und trotzdem überlesen. Header.From muss also unbedingt richtig sein.
Ich begann schon mich mit SendEmail (http://caspian.dotconf.net/menu/Software/SendEmail/) vertraut zu machen,...
Danke für eure Hilfe.