Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit Indy SMTP und Mailinglist (https://www.delphipraxis.net/98873-problem-mit-indy-smtp-und-mailinglist.html)

Andyi 3. Sep 2007 13:39


Problem mit Indy SMTP und Mailinglist
 
So, erstma Lob an euch, klasse Forum^^. Ich soll für einen bekannten ein Programm schreiben, das Newsletter versendet. Ich habe mir überlegt, die Empfängeradressen in ne TStringlist zu packen und aus einer Text Datei zu laden. Aber wenn in der Text Datei mehr als eine Adresse steht, bekomme ich einen Fehler. Weiß jemand Rat?^^

nitschchedu 3. Sep 2007 17:31

Re: Problem mit Indy SMTP und Mailinglist
 
So so ein Spammer :twisted: ... war nur spass ... zeig mal im Code die Stelle ! ... ich muss selber gerade einen SMTP Server schreiben ^^.

Andyi 3. Sep 2007 17:41

Re: Problem mit Indy SMTP und Mailinglist
 
Wofür brauchste denn die Stelle? ich hab einfach nur ne Stringlist erstellt, dann die addys von der textdatei hineingeladen und als recipient meine stringlist angegeben.

nitschchedu 3. Sep 2007 17:46

Re: Problem mit Indy SMTP und Mailinglist
 
Warte .. noch mal langsam ... also du hast ne Text Datei bsp: Test.txt dort stehen jetzt die Email Adressen drin, wo die News hin sollen.

Test.txt

test@test.de
test2@test.de
....

und wenn du dort jetzt die Liste durch gehst bekommst du den Fehler ?
Oder habe das jetzt falsch verstanden ?

Andyi 3. Sep 2007 18:30

Re: Problem mit Indy SMTP und Mailinglist
 
Genau, ich zeig dir maln paar Codeschnippsel:

Delphi-Quellcode:
var
  fmMain: TfmMain;
  addys : tstringlist;
...
Delphi-Quellcode:
addys := tstringlist.create;
addys.LoadFromFile('addys.txt');
...
Delphi-Quellcode:
Recipients.EMailAddresses := addys.text;

nitschchedu 3. Sep 2007 18:44

Re: Problem mit Indy SMTP und Mailinglist
 
Versuch es mal so ;-)

Delphi-Quellcode:

var
 i: Integer;
 tmp, tname, taddress: String;

begin
 ...

for i := 0 to tstringlist.count -1 do
begin  

tmp := tstringlist.Strings[i];
// Hier musste deinen Eintrag Teilen oder so
// als Bsp habe ich mal ne Feste Variable hingeschrieben
tname := 'John Doe';
taddress := 'jdoe@some.net';

with AMessage.Recipients.Add do
begin
  Name := tname;
  Address := taddress;
end;

end;
...
end;

Andyi 3. Sep 2007 19:22

Re: Problem mit Indy SMTP und Mailinglist
 
Die sind ja aber nicht fest, wie mache ich das dann? :gruebel: :wiejetzt:
Naja, was solls, ich poste ma meinen quelltext, wäre nett, wenn du ihn verbessern würdest:

Delphi-Quellcode:
procedure TfmMain.btnSendClick(Sender: TObject);
begin
addys := tstringlist.create;
addys.LoadFromFile('addys.txt');
if (eduser.text = '')
or (edpass.text = '')
or (edsubject.text = '')
or (edaddy.text = '')
or (edserver.text = '')
then showmessage('Please fill in all fields!');
with message1 do begin
message1.Subject := edsubject.Text;
Recipients.EMailAddresses := addys.text;
message1.Body := memo1.lines;
from.Text := edaddy.Text;
with smtp do begin
AuthenticationType := atlogin;
SMTP.UseEhlo := True;
smtp.username := eduser.text;
smtp.password := edpass.Text;
smtp.HeloName:= edserver.Text;
smtp.host := edserver.Text;
smtp.port := strtoint(edport.text);
AuthenticationType := atlogin;
disconnect;
connect;
SMTP.Send(Message1);
end;
end;
end;
Wäre nett, wenn du mich in ICQ addest:

358-645-276

nitschchedu 3. Sep 2007 20:03

Re: Problem mit Indy SMTP und Mailinglist
 
So hier mal die überarbeitet Version. Musst es warscheinlich noch anpassen.

Delphi-Quellcode:
function SendNews(AddressFiles: String; Host: String; Port: Integer;
   EmailMsg: String; Subject: String): Boolean;
var
   mailList: TStringList;
  mess: TIdMessage;
  addressitem: TIdEMailAddressItem;
  i: Integer;
  idsmtpclient: TIdSMTP;
begin
   Result := False;
  // Liste Init
   mailList := TStringList.Create;

  // Prüfen ob Datei gefunden wurde
  if not FileExists(AddressFiles) then
  begin
    raise Exception.Create('Datei nicht gefunden');
    Exit;
  end;

  // Datei in die Liste LAden
  mailList.LoadFromFile(AddressFiles);

  // IdMess erstellen (Email Schablone)
  mess := TIdMessage.Create(nil);

  // Liste dürchgehen und in die Email Schablone eintragen
  for i := 0 to mailList.Count - 1 do
  begin

     // PRüfen ob die Mail Adresse ok ist
     if Pos('@', mailList.Strings[i]) > 0 then
    begin
       // Neues Item in die Mailschablone hinzufügen
       addressitem := mess.Recipients.Add;
      // Adresse ins Item eintragen
      addressitem.Address := mailList.Strings[i];
    end;
  end;

  // Thema setzten
  mess.Subject := Subject;
  // Inhalt setzten
  mess.Body.Add(EmailMsg);
  // Update die Quell Adresse
  mess.From.Address := 'Deine Email';

  // SMTP Client erstellen
  idsmtpclient := TIdSMTP.Create(nil);

  try
     try
       // Ziel Setzten
       idsmtpclient.Host := Host;
        idsmtpclient.Port := Port;
      // Verbinden
      idsmtpclient.Connect;
      // Senden
        idsmtpclient.Send(mess);
      // Trennen
        idsmtpclient.Disconnect;
    except
      raise Exception.Create('Fehler beim Senden.');
    end;

    Result := True;
  finally
     idsmtpclient.Free;
  end;

  mess.Free;
  mailList.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 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