Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Email mit Indy verschicken (https://www.delphipraxis.net/59000-email-mit-indy-verschicken.html)

Chrissi91 15. Dez 2005 17:11


Email mit Indy verschicken
 
Hallo,

dieses Thema wurde zwar schon oft erklärt und erwähnt, jedoch bin ich mir nicht ganz sicher.
Ich möchte eine Email versenden. Jetzt fehlen mir die Grundkenntnisse. Ich habe meinen Emailaccount bei http://www.web.de. Brauche ich jetzt einen Pop3 Server und einen SMTP Server, ohne nur einen von beiden?
Falls jemand einen Link zur Demo für die Indy's hat, wäre ich sehr glücklich. Diese sollte mit Delphi 7 kompilierbar und mit Indy 10 geschrieben sein.
Als nächste Frage stellt sich, wie ich gleichzeitig an 10 Leute schreiben kann. Zwar könnte ich das in eine For-Schleife packen, aber es gibt sicherlich eine resourcensparendere Möglichkeit, oder?

Danke schon im Vorraus. :wink:

emsländer 15. Dez 2005 17:33

Re: Email mit Indy verschicken
 
Zitat:

Zitat von Chrissi91
Hallo,

dieses Thema wurde zwar schon oft erklärt und erwähnt, jedoch bin ich mir nicht ganz sicher.
Ich möchte eine Email versenden. Jetzt fehlen mir die Grundkenntnisse. Ich habe meinen Emailaccount bei http://www.web.de. Brauche ich jetzt einen Pop3 Server und einen SMTP Server, ohne nur einen von beiden?
Falls jemand einen Link zur Demo für die Indy's hat, wäre ich sehr glücklich. Diese sollte mit Delphi 7 kompilierbar und mit Indy 10 geschrieben sein.
Als nächste Frage stellt sich, wie ich gleichzeitig an 10 Leute schreiben kann. Zwar könnte ich das in eine For-Schleife packen, aber es gibt sicherlich eine resourcensparendere Möglichkeit, oder?

Danke schon im Vorraus. :wink:

Du brauchst zum Versenden nur die smtp Komponente(und nat. auch ein Msg). Für mehrere Kopien solltest Du die als bcc adden.
Such mal hier im Forum. Ich hab dazu schon mal was gepostet. Aber ich mach hier mal nen Schmalspur Code rein:
Email ist eine TIdMessage Komponente
idsmtp die smtp Komponente
daran denken, das der Zielserver evtl. Username und PW braucht (kannst im Objektinspektor eintragen, ebenso den Host)

Delphi-Quellcode:
procedure TFDMailer.startClick(Sender: TObject);
var Email: TIdMessage;

begin
    s := 0;
    Email := TIdMessage.Create(nil);
    Email.Recipients.Clear;
    Email.Recipients.Add.Address := edit4.text;
    Email.BccList.Add.Address := bccedit1.text; (hier musst die BCCs reinpacken);
    Email.BccList.Add.Address := bccedit2.text;
    . ....
    Email.from.Text := edit3.text;
    Email.From.Name := edit2.Text;
    Email.From.Address := edit1.text;
    Email.Subject := T_betreff.Text;
    email.Date := Now;

    with TIdText.Create(email.MessageParts, nil) do begin
      Body.Text := mailbody.Text;
      CharSet := 'iso-8859-1';
      ContentTransfer := 'quoted-printable';
      ContentType := 'text/plain';
      ParentPart := -1;
    end;
    with TIdText.Create(email.MessageParts, nil) do
    begin
        Body.Text := mailbody.asansistring('html');
        CharSet := 'iso-8859-1';
        ContentTransfer := 'quoted-printable';
        ContentType := 'text/html';
        ParentPart := -1;
    end;
    if trim(gdateiname) <> '' then TIdAttachmentfile.Create(email.MessageParts, gdateiname);
    idsmtp.Connect;
    try
      idsmtp.Send(Email);
      idsmtp.Disconnect;
    except
      idsmtp.Disconnect;
    end;
    showmessage('Mail wurde verschickt');
end;
Gruss

EL

Chrissi91 15. Dez 2005 18:11

Re: Email mit Indy verschicken
 
Was ist s?

Chrissi91 15. Dez 2005 19:04

Re: Email mit Indy verschicken
 
Delphi-Quellcode:
var
 Email: TIdMessage;
 s: integer;
begin
 s := 0;
 Email := TIdMessage.Create(nil);
 Email.Recipients.Clear;
 Email.Recipients.Add.Address := edit4.text;
 Email.BccList.Add.Address := bccedit1.text;
 Email.from.Text := edit3.text;
 Email.From.Name := edit2.Text;
 Email.From.Address := edit1.text;
 Email.Subject := T_betreff.Text;
 Email.Date := Now;
  with TIdText.Create(email.MessageParts, nil) do
   begin
    [b]Body.Text[/b] := mailbody.Text;
    [b]CharSet[/b] := 'iso-8859-1';
    [b]ContentTransfer[/b] := 'quoted-printable';
    [b]ContentType[/b] := 'text/plain';
    [b]ParentPart[/b] := -1;
   end;
  with TIdText.Create(email.MessageParts, nil) do
   begin
    Body.Text := mailbody.asansistring('html');
    CharSet := 'iso-8859-1';
    ContentTransfer := 'quoted-printable';
    ContentType := 'text/html';
    ParentPart := -1;
   end;
  if trim(gdateiname) <> '' then TIdAttachmentfile.Create(email.MessageParts, gdateiname);
Hier kommen wie verrückt Fehlermeldungen. Das Fettgedruckte kennt er nicht. Und bitte mal daneben schrieben, was für was zuständig ist :)

emsländer 15. Dez 2005 19:17

Re: Email mit Indy verschicken
 
1. Den Antifreeze nicht vergessen
2. in Uses: IdAntiFreeze, IdMessage,IdAttachmentFile.
3. die TIdMessage Komponente hab ich EMail genannt.


Der Mailbody ist ein Richtext. Also auch noch ne Richtext Komponente dazu machen.


Und nun ist mal ein wenig Kreativität gefragt.

Übrigens: auch bei indy selbst gibt hervorragende Beispiele

Gruss

EL

Chrissi91 15. Dez 2005 19:25

Re: Email mit Indy verschicken
 
Aha ... und was ist das alles? :mrgreen:.

Ich werde mal damit anfangen, die Indydemo dazu runterzuladen und das Programm umzuschreiben.

Trotzdem Danke!

Chrissi91 16. Dez 2005 05:43

Re: Email mit Indy verschicken
 
So ... die Indykomonente funktioniert ja überhaut nicht ... Die kann ich erstmal vergessen ;)

Delphi-Quellcode:
var
 Email: TIdMessage;
 s: integer;
begin
 s := 0;
 Email := TIdMessage.Create(nil);
 Email.Recipients.Clear;                      //?
 Email.Recipients.Add.Address := edit4.text; //email des empfängers
 Email.BccList.Add.Address := bccedit1.text; //email des empfängers
 Email.from.Text := edit3.text;        //Text der Email
 Email.From.Name := edit2.Text;       //Name dem die Email gehört, also mein Name
 Email.From.Address:=edit1.text;     //Absender
 Email.Subject:=edit2.text;         //Betreff
 Email.Date := Now;
  with (**TIdText**).Create(email.MessageParts, nil) do
   begin
    (**Body.Text**) := mailbody.Text;
    (**CharSet**) := 'iso-8859-1';
    (**ContentTransfer**) := 'quoted-printable';
    (**ContentType**) := 'text/plain';
    (**ParentPart**) := -1;
   end;
  with TIdText.Create(email.MessageParts, nil) do
   begin
    Body.Text := mailbody.asansistring('html');
    CharSet := 'iso-8859-1';
    ContentTransfer := 'quoted-printable';
    ContentType := 'text/html';
    ParentPart := -1;
   end;
  if trim(gdateiname) <> '' then TIdAttachmentfile.Create(email.MessageParts, gdateiname);
  idsmtp.Connect;
  try
   idsmtp.Send(Email);
   idsmtp.Disconnect;
  except
  idsmtp.Disconnect;
 end;
 showmessage('Mail wurde verschickt');
end;
das am Anfang mit //kommentierte: ich bin mir nicht sicher, was was ist ... habe ich recht mit dem, was ich daneben geschrieben habe?

später habe ich mit (** **) Wörter kommentiert. Das ist ein Teil von denen, die Delphi nicht kennt. Habe ich irgendwas vergessen?

Danke schon im Vorraus.

P.S.: Weitere Fehler folgen noch ;)

emsländer 16. Dez 2005 08:11

Re: Email mit Indy verschicken
 
Zitat:

Zitat von Chrissi91
So ... die Indykomonente funktioniert ja überhaut nicht ... Die kann ich erstmal vergessen ;)

Delphi-Quellcode:
var
 Email: TIdMessage;
 s: integer;
begin
 s := 0;
 Email := TIdMessage.Create(nil);
 Email.Recipients.Clear;                      //?
 Email.Recipients.Add.Address := edit4.text; //email des empfängers
 Email.BccList.Add.Address := bccedit1.text; //email des empfängers
 Email.from.Text := edit3.text;        //Text der Email
 Email.From.Name := edit2.Text;       //Name dem die Email gehört, also mein Name
 Email.From.Address:=edit1.text;     //Absender
 Email.Subject:=edit2.text;         //Betreff
 Email.Date := Now;
  with (**TIdText**).Create(email.MessageParts, nil) do
   begin
    (**Body.Text**) := mailbody.Text;
    (**CharSet**) := 'iso-8859-1';
    (**ContentTransfer**) := 'quoted-printable';
    (**ContentType**) := 'text/plain';
    (**ParentPart**) := -1;
   end;
  with TIdText.Create(email.MessageParts, nil) do
   begin
    Body.Text := mailbody.asansistring('html');
    CharSet := 'iso-8859-1';
    ContentTransfer := 'quoted-printable';
    ContentType := 'text/html';
    ParentPart := -1;
   end;
  if trim(gdateiname) <> '' then TIdAttachmentfile.Create(email.MessageParts, gdateiname);
  idsmtp.Connect;
  try
   idsmtp.Send(Email);
   idsmtp.Disconnect;
  except
  idsmtp.Disconnect;
 end;
 showmessage('Mail wurde verschickt');
end;
das am Anfang mit //kommentierte: ich bin mir nicht sicher, was was ist ... habe ich recht mit dem, was ich daneben geschrieben habe?

später habe ich mit (** **) Wörter kommentiert. Das ist ein Teil von denen, die Delphi nicht kennt. Habe ich irgendwas vergessen?

Danke schon im Vorraus.

P.S.: Weitere Fehler folgen noch ;)

Könnte TIdText evtl. eine Komponente sein?
with (**TIdText**). ....

dann machst Du einfach ein USES IdText ... und fertig.

Gruss

EL

Chrissi91 16. Dez 2005 20:14

Re: Email mit Indy verschicken
 
[/delphi]Super! Funktioniert alles! Letzte Frage:

Delphi-Quellcode:
Recipients.Add.Text := Trim(edit1.text);
Jetzt steht nicht nur ein Empfänger in einem Edit, sondern jetzt stehen 10 Empfänger in einer Listbox. Wie mache ich das?

Delphi-Quellcode:
Recipients.Add.Text := Trim(listbox1.items);
Das geht leider nicht. Aber eine andere Frage, fast dieselbe:

Ich will einem Stringsrray alle Listboxinhalte geben: Funktioniert auch nicht!

Delphi-Quellcode:
var
 adressen: array[1..1000] of string;
begin
 for i:= 1 to listbox1.Items.count do
  begin
   adressen[i]:=listbox1.Items(i);
  end;
Danke schon im Vorraus!

emsländer 17. Dez 2005 10:25

Re: Email mit Indy verschicken
 
Zitat:

Zitat von Chrissi91
[/delphi]Super! Funktioniert alles! Letzte Frage:

Delphi-Quellcode:
Recipients.Add.Text := Trim(edit1.text);
Jetzt steht nicht nur ein Empfänger in einem Edit, sondern jetzt stehen 10 Empfänger in einer Listbox. Wie mache ich das?

Delphi-Quellcode:
Recipients.Add.Text := Trim(listbox1.items);
Das geht leider nicht. Aber eine andere Frage, fast dieselbe:

Ich will einem Stringsrray alle Listboxinhalte geben: Funktioniert auch nicht!

Delphi-Quellcode:
var
 adressen: array[1..1000] of string;
begin
 for i:= 1 to listbox1.Items.count do
  begin
   adressen[i]:=listbox1.Items(i);
  end;
Danke schon im Vorraus!

sollte in der Art:
Delphi-Quellcode:
for i:= 0 to 10
  email.Recipients.Add.Text := listbox1.Item[i];
end;
gehen

Gruss

EL
PS.: Wenn Du einen fertigen NewsletterMailer brauchst... ich hab ihn


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz