AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SMTP-Mail zum 100sten mal

Ein Thema von MarkSE · begonnen am 12. Mär 2016 · letzter Beitrag vom 15. Mär 2016
Antwort Antwort
Seite 1 von 2  1 2      
MarkSE

Registriert seit: 13. Jan 2010
Ort: Erding
22 Beiträge
 
Delphi 7 Professional
 
#1

SMTP-Mail zum 100sten mal

  Alt 12. Mär 2016, 21:33
Guten Abend Freunde,
ich stehe seit Stunden wie Ochs am Berg und bekomme nicht ein einfaches Mail-Versand zum laufen. mal bekomme ich Socket-Error 11001 , mal 11004.
Bitte wenn jemand eine Idee hätte, wo ich daneben liege, wäre ewig dankbar.

unit Unit2; // mit XE7. Auch mit Delphi 7 angepasst und probiert >> das gleiche Problem
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdSMTPBase, IdSMTP, Vcl.StdCtrls, IdMessage;
type
TForm2 = class(TForm)
senden: TButton;
IndySMTP: TIdSMTP;
IndyMessage: TIdMessage;
Memo1: TMemo;

procedure sendenClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.sendenClick(Sender: TObject);
var
m: TIdMessage;
begin
m := TIdMessage.Create(self);
m.Clear;
m.From.Address := 'info@xxx.de';
m.Recipients.EMailAddresses := 'info@yyyy.de;
m.Subject := 'sowasvonegal';
m.Body := Memo1.Lines;

// if IndySMTP.Connected then
// IndySMTP.Disconnect;
IndySMTP.Port := StrToInt('465');
IndySMTP.Host := 'smtp.strato.de';
IndySMTP.Username := 'info@xxx.de'; // wie Absender
IndySMTP.Password := 'pwpwpwpw';
IndySMTP.AuthType := TIdSMTPAuthenticationType.satDefault;

IndySMTP.Connect('1000');
IndySMTP.Authenticate;

if IndySMTP.Connected then // ab hier geht nicht mehr weiter
try
IndySMTP.Send(m);

except
on E: Exception do
Writeln(E.Classname+ ' - ' + E.Message);
end;

IndySMTP.Disconnect;
showmessage('Das Mail wurde erfolgreich versendet!');
if IndySMTP.Connected then
IndySMTP.Disconnect;
end;
end.
Mark
Erneuerbare Energie ist, wenn man den Wind stoppt, seine Bewegungs-Energie zu Strom macht, dann betet dass er erneut los läuft.

Geändert von MarkSE (12. Mär 2016 um 21:44 Uhr) Grund: Delphi Version nachgetragen
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: SMTP-Mail zum 100sten mal

  Alt 12. Mär 2016, 22:32
Hallo,

bevor jemand diesen Blob angucken muss ... benutze doch Delphi-Tags:
Code:
[DELPHI]
unit Unit2;
// ...
[/DELPHI]
Du kannst deinen Beitrag 24h Stunden lang ändern, der passende Beitrag dafür ist unter deinem Beitrag


EDIT: First!!!

Geändert von BUG (12. Mär 2016 um 22:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: SMTP-Mail zum 100sten mal

  Alt 12. Mär 2016, 22:33
Fass den Quelltext mal in Delphi-Tags ein. Damit ist schon mal viel gewonnen auf dem Weg zur Hilfe. So ist dein Quelltext kaum lesbar.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: SMTP-Mail zum 100sten mal

  Alt 12. Mär 2016, 22:35
Lies dir den Thread http://www.delphipraxis.net/186912-i...tellungen.html durch, da gibt es auch eine komplette Implementation von mir.

Die ist so einfach zu verwenden wie ein normaler email-Client.

Probleme hier:
  • Keine Delphi-Tags verwendet
  • Kein IOHandler der die Kommunikation verschlüsselt. Bei Port 465 muss die aber verschlüsselt erfolgen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
MarkSE

Registriert seit: 13. Jan 2010
Ort: Erding
22 Beiträge
 
Delphi 7 Professional
 
#5

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 07:10
Sorry Leute,
Anfänger behalten leider, wie in diesem Fall, ihr Attribut viel zu lang.
Ich habe hier gelöste Probleme eins-zu-eins übernommen: leider erfolgslos
(sorry wegen Blob ohne Tags)
Delphi-Quellcode:
unit Unit2; // mit XE7. Auch mit Delphi 7 angepasst und probiert >> das gleiche Problem
 interface
 uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
 IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
 IdSMTPBase, IdSMTP, Vcl.StdCtrls, IdMessage;
 type
 TForm2 = class(TForm)
 senden: TButton;
 IndySMTP: TIdSMTP;
 IndyMessage: TIdMessage;
 Memo1: TMemo;

 procedure sendenClick(Sender: TObject);
 private
 { Private-Deklarationen }
 public
 { Public-Deklarationen }
 end;

 var
 Form2: TForm2;

 implementation

 {$R *.dfm}

 procedure TForm2.sendenClick(Sender: TObject);
 var
 m: TIdMessage;
 begin
  m := TIdMessage.Create(self);
  m.Clear;
  m.From.Address := 'info@xxx.de';
  m.Recipients.EMailAddresses := 'info@yyyy.de;
m.Subject :=
'sowasvonegal';
m.Body := Memo1.Lines;

// if IndySMTP.Connected then
// IndySMTP.Disconnect;
IndySMTP.Port := StrToInt(
'465');
IndySMTP.Host :=
'smtp.strato.de';
IndySMTP.Username :=
'info@xxx.de'; // wie Absender? Aber warum doppelt?
IndySMTP.Password :=
'pwpwpwpw';
IndySMTP.AuthType := TIdSMTPAuthenticationType.satDefault;
IndySMTP.Connect(
'1000');
IndySMTP.Authenticate;

if IndySMTP.Connected then // ab hier geht nicht mehr weiter
try
IndySMTP.Send(m);
except
on E: Exception do
Writeln(E.Classname+
' - ' + E.Message);
end;

IndySMTP.Disconnect;
showmessage(
'Mail erfolgreich!');
if IndySMTP.Connected then
IndySMTP.Disconnect;
end;
end.
Jetzt vermute ich wenigstens, dass irgendwo/irgendwie die Verschlüsselung hingehört.
das Wo und Wie, in Paar Wochen weiss ich eventunel
Wahrscheinlich gleich beim connect:
Connect(smtpHostname, SslMode.Explicit); Das mit Delphi-Tags tut weh, sorry viel mals
Mark
Erneuerbare Energie ist, wenn man den Wind stoppt, seine Bewegungs-Energie zu Strom macht, dann betet dass er erneut los läuft.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 07:35
Nochmal:

Wenn du dich über den Port 465 mit dem Mail-Server verbindest dann MUSS diese Verbindung verschlüsselt erfolgen. (Ich kann es leider nicht noch lauter schreiben).

Auszug aus meinem Code (aus dem Link)
Delphi-Quellcode:
  if Configuration.UseSSL
  then
    begin
      FSMTP.IOHandler := FSSLIOHandlerSocketOpenSSL; // <- SSL-IOHandler zuweisen
      if Configuration.UseStartTLS
      then
        begin
          FSMTP.UseTLS := utUseExplicitTLS; // <- UseTLS setzen
        end
      else
        begin
          FSMTP.UseTLS := utUseImplicitTLS; // <- UseTLS setzen
        end;
    end
  else
    begin
      FSMTP.IOHandler := nil; // <- wir brauchen keinen IOHandler
      FSMTP.UseTLS := utNoTLSSupport; // <- UseTLS setzen
    end;
Und hier die automatische Port-Einstellung aus meinem Code
Delphi-Quellcode:
TSendMailConfiguration = class
  private const
    DefaultPort = 25;
    DefaultImplicitTLSPort = 465;
    DefaultExplicitTLSPort = 587;
  ...
end;

procedure TSendMailConfiguration.SetDefaultPort;
begin
  if FUseSSL
  then
    begin
      if FUseStartTLS
      then
        FPort := DefaultExplicitTLSPort // 587
      else
        FPort := DefaultImplicitTLSPort // 465
    end
  else
    FPort := DefaultPort; // 25
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Mär 2016 um 07:37 Uhr)
  Mit Zitat antworten Zitat
MarkSE

Registriert seit: 13. Jan 2010
Ort: Erding
22 Beiträge
 
Delphi 7 Professional
 
#7

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 10:45
Sir Rufo
Du hast meinen Sonntag gerettet.
Ich danke Dir massiv
Mark
Erneuerbare Energie ist, wenn man den Wind stoppt, seine Bewegungs-Energie zu Strom macht, dann betet dass er erneut los läuft.
  Mit Zitat antworten Zitat
MarkSE

Registriert seit: 13. Jan 2010
Ort: Erding
22 Beiträge
 
Delphi 7 Professional
 
#8

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 11:11
Lies dir den Thread http://www.delphipraxis.net/186912-i...tellungen.html durch, da gibt es auch eine komplette Implementation von mir.

Die ist so einfach zu verwenden wie ein normaler email-Client.

Probleme hier:
  • Keine Delphi-Tags verwendet
  • Kein IOHandler der die Kommunikation verschlüsselt. Bei Port 465 muss die aber verschlüsselt erfolgen
Ich bin mit Deinem Rat merklich kluger, hätte auch gern Deine Komplette Implenetation sehen dürfen
Ich finde aber unter dem angegebenen Link, keine Implementation von Dir, muss wahrscheinlich weiter üben
Mark
Erneuerbare Energie ist, wenn man den Wind stoppt, seine Bewegungs-Energie zu Strom macht, dann betet dass er erneut los läuft.
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
654 Beiträge
 
Delphi 12 Athens
 
#9

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 11:47
Ich bin mit Deinem Rat merklich kluger, hätte auch gern Deine Komplette Implenetation sehen dürfen
Ich finde aber unter dem angegebenen Link, keine Implementation von Dir, muss wahrscheinlich weiter üben
Schau Dir insbesondere die Beiträge #12 und #20 an.
Roland
  Mit Zitat antworten Zitat
MarkSE

Registriert seit: 13. Jan 2010
Ort: Erding
22 Beiträge
 
Delphi 7 Professional
 
#10

AW: SMTP-Mail zum 100sten mal

  Alt 13. Mär 2016, 15:49
Sir Rufo, was Du sagtest, leuchtete ein und ich dachte die Lösung verstanden zu haben.

Habe auch den IOHandler und utUseImplizitTLS eingebaut (Port 465) ged aber trotzdem nix.
Delphi-Quellcode:
procedure TForm2.sendenClick(Sender: TObject);
var
   m: TIdMessage;
begin
       m := TIdMessage.Create(self);
       m.Clear;
       m.From.Address := 'info@xxxx.de';
       m.Recipients.EMailAddresses := 'infoqyyyy.de';
       m.Subject := 'würscht';
       m.Body := Memo1.Lines;

       IndySMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1; // <<<<<<
       IndySMTP.UseTLS:=utUseImplicitTLS; // <<<<<<

       // if IndySMTP.Connected then
       // IndySMTP.Disconnect;
     IndySMTP.Port := StrToInt('465');
     IndySMTP.Host :='smtp.strato.de';
     IndySMTP.Username := 'DasGleicheWieBeimFrom';
     IndySMTP.Password := edPW.Text;
     IndySMTP.AuthType := TIdSMTPAuthenticationType.satDefault;

     IndySMTP.Connect('1000'); //hier erhalte ich Socket-fehler 11001
                                //host nicht gefunden

     IndySMTP.Authenticate;

if IndySMTP.Connected then
   try
       IndySMTP.Send(m);

   except
      on E: Exception do
         Writeln(E.Classname+ ' - ' + E.Message);
   end;

end;
end.
bekomme immer Socket fehler 11001 Host nicht gefunden
Das ganze nun mit XE7
Bitte schau Dir das nochmal an
Mark
Erneuerbare Energie ist, wenn man den Wind stoppt, seine Bewegungs-Energie zu Strom macht, dann betet dass er erneut los läuft.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz