Entwickler-Ecke

Internet / Netzwerk - SMTP Probleme


qwertzuiopü - Mo 06.03.06 10:41
Titel: SMTP Probleme
Hallo zusammen,
ich habe jezt seit einem 1/2 Jahr nicht mehr mit delphi gearbeitet, also ich bitte um Nachsicht :wink:
Ich habe ein SMTP programm erstellt, mit dem ich anonyme E-Mails verschicken kann, in dem ich eine Beliebige E-Mail adresse eingeben kann. DOch ich bekomme immer die nachricht, das das senden der nachricht nicht möglich sein, doch ich finde den fehler nicht.
Könnt ihr mir helfen?


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:
56:
57:
58:
59:
60:
function SendMail(SmtpServer, ToAddress, FromAddress, Subject, Body: string): boolean;
var
  MailSocket: TClientSocket;
  MailBuffer: array [0..2048of char;
begin
  Result := False;
  MailSocket := TClientSocket.Create;
  MailSocket.Connect(SmtpServer, 25);
  while MailSocket.Connected do
  begin
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '220' then Break;
    MailSocket.SendString('HELO ' + smtpserver + #13#10);
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '250' then Break;
    MailSocket.SendString('MAIL FROM: <' + FromAddress + '>' + #13#10);
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '250' then Break;
    MailSocket.SendString('RCPT TO: <' + ToAddress + '>' + #13#10);
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '250' then Break;
    MailSocket.SendString('DATA' + #13#10);
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '354' then Break;
    MailSocket.SendString('From: ' + FromAddress + #13#10 + 'To: ' + ToAddress + #13#10 + 'Subject: ' + Subject + #13#10#13#10 + Body + #13#10 + '.' + #13#10);
    MailSocket.ReceiveBuffer(MailBuffer, 2048);
    if not MailSocket.Connected then Break;
    if Copy(MailBuffer, 13) <> '250' then Break;
    MailSocket.SendString('QUIT' + #13#10);
    Result := True;
  end;
  MailSocket.Disconnect;
  MailSocket.Free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   srv:='smtp.web.de';
   recv:=edit3.text;
   from:=edit2.Text+'@web.de';
   sub:=Memo1.lines.Text;
//   sub:=edit4.Text;
   msg:='';

  if SendMail(srv, recv, from, sub, msg) then
    messagebox(0,'E-Mail wurde gesendet! OK.','',0)
  else
    messagebox(0,'E-Mail konnte nicht gesendet werden','',0);




   //NAchricht senden
end;



Gruß
qwert


Delete - Mo 06.03.06 12:17

Musst du dich eventuell erst über POP3 anmelden bei web.de bevor du Mails verschicken kannst? Und was soll der Unfug Mails annonym zu versenden? Es würde mich doch stark wundern, wenn man über web.de so einfach annonyme Mails verschicken könnte. :?


GTA-Place - Mo 06.03.06 19:14

Lass dir doch mal die Antworten in einem Memo ausgeben.
Die Antworten würde ich auch als Bedingung zum Weitermachen nehmen.

Dann hättest du nämlich gemerkt, dass Web.de auf "MAIL FROM:" antwortet (über Telnet herausgefunden):
Zitat:
501 Keine Authentifizierung, oder POP3-Anmeldung zu weit in der Vergangenheit [...]

Damit hat Luckie recht.


qwertzuiopü - Mo 06.03.06 23:47

Giebt es die möglichkeit E-Mails ohne Pop3 und smtp und ohne eine Server anmeldung zu erstellen?


Delete - Di 07.03.06 01:43

Klar, du musst nur einen offenen Server finden. ;) Aber ich wette die Moderatoren würde es brennend interessieren, was du vor hast, den ich kann mir keinen sauberen Grund vorstellen E-Mails annonym versenden zu wollen.

BTW ich habe den Thread mal den Moderatoren gemeldet.


Christian S. - Di 07.03.06 02:02

Hallo!

Ich mache diesen Thread erst einmal auf Grund berechtigter Bedenken zu. Dies ist keine endgültige Entscheidung! Auf Grund der fortgeschrittenen Uhrzeit ist niemand mehr vom Team da, um das jetzt zu entscheiden (Schließungen wie diese sind Ermessenssache und daher bei uns keine Entscheidungen Einzelner) und die Schließung ist eine Vorsichtsmaßnahme.

Wir werden morgen in alter Frische entscheiden, was mit dem Thread geschehen soll.

Grüße
Christian

P.S.: @user profile iconqwertzuiopü: Du kannst die Entscheidung morgen beeinflussen, indem Du uns mitteilst, wozu Du anonyme E-Mails verschicken möchtest.