Autor Beitrag
Jeppen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 39



BeitragVerfasst: Mi 03.05.06 20:54 
Hallo,

Ich möchte gerne eine E-mail versenden und benutze dafür den TIdSMTP von Delphi.

Hier der code

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
smtp.Host := edtsmtp.Text;
  SMTP.Port := 25;
  MailMessage.From.Address := edtFrom.Text;
  MailMessage.Recipients.EMailAddresses := edtto.Text;
  MailMessage.Subject := edtSub.Text;
  MailMessage.Body.Text := memtext.Text;


Das Problem liegt beim MailMessage. Ich habe ihn deklariert als "MailMessage: TIdMessage;" jdoch funktioniert es nicht.

Kann mir jemand helfen?

MfG

Jeppen
Olli_Sahr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 83


D5 Prof, D7 Architect
BeitragVerfasst: Mi 03.05.06 22:00 
Hallo,

ich habe den folgenden Code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
procedure Button1Click(Sender: TObject);

var
   SMTP: TIdSMTP;
   Nachricht: TIdMessage;

begin

   Nachricht := TIDMessage.Create(nil);
   SMTP := TidSMTP.create(nil);

   try

      try

         Nachricht.Subject := 'testmail 3';

         Nachricht.From.Address := 'FromAddress@firma.de';
         Nachricht.Recipients.Add.Address := 'ToAddress@firma.net';
         Nachricht.Sender.Address := 'SemderAddress@firma.de';

         Nachricht.Body.Clear;
         Nachricht.Body.Add('Body erste Zeile');
         Nachricht.Body.Add('Body 2 Zeile');
         Nachricht.Body.Add('Body 3 Zeile');
         Nachricht.Body.Add('Body 4 Zeile');
         Nachricht.Body.Add('Body 5 Zeile');

         SMTP.Host := 'smtp.mailserver.de';
         SMTP.Port := 25;
         SMTP.Username := 'HierKommtDerUsername';
         SMTP.Password := 'Passwort';

         SMTP.Connect;
         SMTP.Send(Nachricht);

      except
         on E: Exception do
         begin
            ShowMessage(E.Message);
         end;
      end;

   finally

      SMTP.Disconnect;

      smtp.Free;
      Nachricht.Free;

   end;

end;


Habe den Code aus dem Forum zusammengesucht und aus einem Beitrag einer Zeitschrift.

Habe dabei das folgende Problem (wenn ich debugge):

Er kommt bis zu dem SMTP.Connect;
Danach kommt meine Firewall hoch und fragt, ob ich das erlauben will.
Ich sage "Ja".

Nach 2 - 4 Sekunden bin ich wieder im Quelltext bei SMTP.Send(Nachricht);

Ich drücke F8.

Nach genau 2 Minuten (in denen nichts passiert), wird in der Unit "IdIOHandler" die procedure TIdIOHandler.RaiseConnClosedGracefully; ausgeführt.

Es wird eine Exception mit der Meldung "Connection Closed Gracefully" gworfen.

Was läuft da bei mir falsch?

Ich habe bewusst meine Frage an den Thread hier gehängt, da es das gleiche Thema betrifft und wir und so vielleicht gegenseitig helfen können.

Danke und Gruß


OLLI

Nachtrag: natürlich stehen bei mir für den SMTP-Host, für Username und für Passwort richtige Werte drinnen.
Die habe ich hier nur für das Forum rausgenommen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 03.05.06 23:52 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.Button1Click(Sender: TObject);
var
  IdSMTP: TIdSMTP;
  IdMsg: TIdMessage;
begin
  IdSMTP := TIdSMTP.Create(nil);
  IdMsg := TIdMessage.Create(nil);
  try
    IdSMTP.Host := 'mail.michael-puff.de';
    //IdSMTP.Username := 'foo';
    //IdSMTP.Password := 'bar';
    IdSMTP.Port := 25;
    IdSMTP.Connect;

    IdMsg.From.Address := 'mpuff@michael-puff.de';
    IdMsg.Recipients.EMailAddresses := 'mpuff@michael-puff.de';
    IdMsg.Subject := 'Test';

     IdSMTP.Send(IdMsg);
  finally
    FreeAndNil(IdSMTP);
    FreeAndNil(IdMsg);
  end;
end;
Olli_Sahr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 83


D5 Prof, D7 Architect
BeitragVerfasst: Sa 06.05.06 15:30 
Hallo,

langsam denke ich echt, ich bin bekloppt......

Ich habe ein Image zurückgesetzt, auf dem kein Delphi installiert ist.
Ich habe danach Delphi 7 Enterprise installiert und bei der Installation die INDY Komponenten nicht mit installiert (da die auf der CD in einer älteren Form vorhanden sind.

Anschließend habe ich die aktuellste Version der INDY Komponntenten (indy10.1.5_Delphi7.exe) installiert.

Neues Projekt gemacht und den Code von "Luckie" eingefüht (allerdings mit meinen Providerdaten).
Da er die IdMessage und IdSMTP nicht kannte, habe (die werden ja dynamisch erzeugt) habe ich aus der Komponentenpalette (über die Komponentenliste) die beiden Komponenten eingefügt.
Somit sind die benötigten Units im USES Bereich.

Schaut dann so aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP,
  IdBaseComponent, IdMessage;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdMessage1: TIdMessage;
    IdSMTP1: TIdSMTP;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var  
  IdSMTP: TIdSMTP;  
  IdMsg: TIdMessage;  
begin  
  IdSMTP := TIdSMTP.Create(nil);  
  IdMsg := TIdMessage.Create(nil);  
  try  
    IdSMTP.Host := 'smtp.1und1.com';
    // IdSMTP.Username := 'foo';
    // IdSMTP.Password := 'bar';
    IdSMTP.Port := 25;
    IdSMTP.Connect;

    IdMsg.From.Address := 'oliver@domain.de'// hier steht meine richtige Emailadresse in Delphi
    IdMsg.Recipients.EMailAddresses := 'irgendjemand@gmx.net'// hier steht eine GMX Emailadresse, die existiert
    IdMsg.Subject := 'Test';

    IdSMTP.Send(IdMsg);
  finally
    FreeAndNil(IdSMTP);  
    FreeAndNil(IdMsg);  
  end;  
end;

end.


Leider wieder das gleiche Problem.
"Connection Closed Gracefully"
Mail habe ich keine erhalten.....

Was kann ich machen?
Habe ich was vergessen?

Bitte helft mir, es ist DRINGEND !!!!!!

Gruß


OLLI

P.S.
Nachtrag: PureTec verlangt eine Autentifizierung beim Senden einer Mail.
Aber selbst wenn ich Username und Password auskommentiere und durch meine Zugangsdaten ersetze, funktioniert es nicht.
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Sa 06.05.06 20:57 
Also, bei 1und1 verzocken die Indys bei mir gnadenlos.
Das hab ich gesteckt, ich glaub es liegt daran, dass hinter einem Vertrag bei 1und1 verschiedene Domains und Emailadressen sein können, da musst du dir was anderes einfallen lassen.
Warum schreibst du nirgendwie die Authentifizierungs methode rein?

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Olli_Sahr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 83


D5 Prof, D7 Architect
BeitragVerfasst: Sa 06.05.06 21:19 
Hallo,

habe bei den Indy10 Komponenten die Autentifizierung gesetzt (Host, UserName und AuthType).
Hat aber nicht funktioniert.

Habe ein Image zurückgelesen (PC ohne Delphi), Delphi 7 mit den mitgelieferten Indy Komponenten installiert (die sind dann etwas älter) und da funktionietrt es.

Ich habe bei den alten Indy Kompos auch keine Autentifizierung eingegeben, aber dann eine Meldung vom Server erhalten, dass eine Autentifizierung nötig ist.
Darauf hin übergebe ich Username, Password und AuthenticationType := atLogin.

Bei den Indy10 habe ich das gleiche gemacht, nur dass da die Progerty "AuthType" heißt und andere Werte hat.
Aber mit KEINEM dieser Werte hat es geplappt.....

Mit den alte Indys geht es....

Strange...

Danke aber trotzdem.....

Gruß


OLLI
LowSkills
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Mi 09.05.07 19:09 
Und wenn ich mich auf den Kopf stelle, es klappt einfach nicht...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);  
var  
  IdSMTP: TIdSMTP;  
  IdMsg: TIdMessage;  
begin  
  IdSMTP := TIdSMTP.Create(nil);  
  IdMsg := TIdMessage.Create(nil);  
  try  
    IdSMTP.Host := 'mail.michael-puff.de';  
    //IdSMTP.Username := 'foo';  
    //IdSMTP.Password := 'bar';  
    IdSMTP.Port := 25;  
    IdSMTP.Connect;  

 
    IdMsg.From.Address := 'mpuff@michael-puff.de';  
    IdMsg.Recipients.EMailAddresses := 'mpuff@michael-puff.de';  
    IdMsg.Subject := 'Test';  

 
     IdSMTP.Send(IdMsg);  
  finally  
    FreeAndNil(IdSMTP);  
    FreeAndNil(IdMsg);  
  end;  
end;


Ich bekomme immer wieder die fehlermeldung dass USERNAME dem Programm nicht bekannt ist (undeclared identifier).
Woran kann das liegen?
IdSMTP ist eingebunden, IdMessage ist eingebunden, aber funktioniert sich das nix!!! :(

Bidde bidee hilfe sonst fernseher kapput fenster schmeisse... ^^

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 06.10.07 20:39 
Bei mir läufts irgendwie auch nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
function sendMail():boolean;
var
  IdSMTP: TIdSMTP;
  IdMsg: TIdMessage;
begin

  IdSMTP := TIdSMTP.Create(nil);
  IdMsg := TIdMessage.Create(nil);
  try
    IdSMTP.Host := 'smtp.mailserver.de';
    IdSMTP.Username := 'user';
    IdSMTP.Password := 'password';
    IdSMTP.Port := 25;
    IdSMTP.Connect;

    IdMsg.From.Address := 'blub@blub.de';
    IdMsg.Recipients.EMailAddresses := 'mail@mail.de';
    IdMsg.Subject := 'Betreff';

     IdSMTP.Send(IdMsg);
  finally
    FreeAndNil(IdSMTP);
    FreeAndNil(IdMsg);
  end;
end;


Allerdings kommt bei mir immer der Fehler:

Im Projekt blub.exe ist eine Exception der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten.

Danke im vorraus

Moderiert von user profile iconNarses: 2. Frage entfernt.
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Do 20.12.07 17:35 
user profile iconmexx2k hat folgendes geschrieben:
Bei mir läufts irgendwie auch nicht:


Allerdings kommt bei mir immer der Fehler:

Im Projekt blub.exe ist eine Exception der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten.

Danke im vorraus

Moderiert von user profile iconNarses: 2. Frage entfernt.


Hallo
Ich weiß ja nicht, ob hier nochmal jemand reinschaut. Aber ich habe mein Mail-Problem so gelöst:

ShellExecute(Application.Handle, 'open',PChar('mailto:delphi10@MeineFirma.com '+'?subject=Problemreport TopDoc'+ '&body='+Get_Text), nil, nil,SW_Normal);

Wobei ich den Bodytext über Get_Text reinhole. Dabei ist es aber wichtig, dass das Zeilenende mit %0D%0A und nicht wie üblich mit #13#10 oder #$0D#$0A angegeben wird.
Get_Text liest eine Log-Datei aus und kopiert den Text in den Mail-Body.
Was ich aber so nicht hinbekommen habe ist eine Datei als Anhang dranzuhängen.

Gruß delphi10