Poczta - wysyłka do kilku na raz

0

Siema

Mam sobie kodzik do wysyłania poczty. Jednak działa on na 1 adres tzn musze wysyłac pojedynczo emaile do ludzi, a chcę, aby wysyłał do kilku osób na raz.

Czy da się jakoś przerobić ten fragment kodu tak, aby może było wysyłać do kilku osób na raz?
i

dMessage1.Recipients.EMailAddresses :='xxx';

Próbowałem wpisywac po przecinku adresy ale to nic nie dało.

A oto cały kod do wysyłania poczty.

procedure TForm1.Button1Click(Sender: TObject);
begin

 try
 idMessage1.CharSet:='charset="iso-8859-2"';  //ustawiamy kodowanie
  idMessage1.ContentTransferEncoding:='8bit';  // przesyłanie 8bitowe
  idMessage1.ContentType:='text/html';  // przesyłamy tekst
  idMessage1.Body:=Richedit1.Lines;  // treść maila



  // ustawienia wiadomości

  //idMessage1.From.Address := '[email protected]; // od kogo
  idMessage1.From.name := 'xxx';

  idMessage1.Subject := Edit1.Text;
  idMessage1.Recipients.EMailAddresses :='xxx';

 

  // weryfikacja

  idSMTP1.UserName := 'xxx';
  idSMTP1.Password := 'xxx';
  idSMTP1.Host := 'xxx.interia.pl';



  //wpisz gdy serwer nie wymaga uwierzytelnienia

  idSMTP1.AuthenticationType:=atNone;



  //wpisz gdy serwer wymaga uwierzytelnienia (zalecane)

  idSMTP1.AuthenticationType:=atLogin;



  idSMTP1.Connect;
  idSMTP1.Send(idMessage1);

  idSMTP1.Disconnect;

 except
  ShowMessage('Błąd. Mail nie został wysłany');
 end;

end;

Ewentualnie jakoś z Listboxa z adresami wysyłać w pętli?
Piszę program do pracy, który będzie wysyłał pocztę do pracowników na koniec dnia.

0

Zastosuj pętlę For

Nie przyglądałem się kodzie który podałeś, ale tak z pamięci powinno zadziałać tak że będziesz np. odliczał do dziecięciu i dana liczba będzie odpowiadała danemu email. Wszystko można również zrobić za pomocą memo, każdy email osobno, program sprawdzi ile memo ma linii i do tylu będzie odliczał pobierając po kolei każdą linie czyli adres, ogólnie to pętle wszystko załatwią.

0

Spróbuj tak:

dMessage1.Recipients.EMailAddresses :='[email protected] ; [email protected] ; [email protected]';

(onet.eu z przyzwyczajenia ;-) )

0

Tak się nie da, to zrobiłem na początku samym. Dowala się do semicolona (średnika). :)
Po prostu kompiler traktuje to jako nową nieprawidłową prockę po pierwszym średniku.

0

teraz to coś ściemniasz - daj swój kod ze średnikiem

0

spróbuj z przecinkami zamiast średnikami

0

Misiekd kod masz na górze, spróbuj sam jak możesz.
Azarien, chyba nie czytałeś mojego pierwszego postu. :)
Próbuję dalej...

0

OK wszystko już działa. Jednak zauważyłem coś nieciekawego w programie.
Przepraszam, ale nie jestem programistą, a dostałem zadanie od szefa zrobić taki programik.
No więc o co mi jeszcze chodzi? Zauważyłem ze jak wysyła emaile to program się blokuje i nie można nic zrobić.
Jak zmodyfikowac powyższy cały kod tak aby działał sobie niezależnie, co robię w programie?
Druga sprawa: mam załadowane adresy w Listbox, teraz chcę je załadować do Edit ze średnikami.

Listbox:

[email protected]
[email protected]
[email protected]

na postać: Edit1.Text:= [email protected] ; [email protected] ; [email protected]; czy tam od razu podpisywać pod:

idMessage1.Recipients.EMailAddresses :=....

Moim zadaniem głównie w pracy to rozwożenie paczek i robienie raportów na koniec dnia, nie programowanie, więc proszę o wyrozumiałość. Mam Delphi 7.

Mam skonfigurowaną Operę i tam odbieram pocztę i fajnie to działa, bo przeglądam strony itd. a poczta się wykonuje niezależnie.

0

Dobra dałem komponent Antyzamrażalniczy i troche pomogło, ale to nie jest to jeszcze.

Próbuję teraz jakoś zamontowac do tej procedury wysyłania Progressbar.
Dziwnie mi on działa bo dopiero pokazuje się jak wyśle maile do wszystkich, zamiast pracować w toku.
Jak to zrobić?
A kod mam taki:

...
     idSMTP1.Connect;
         idSMTP1.Send(idMessage1);
   
          jvProgressbar1.Position:=0;
          jvProgressbar1.Max:=Listbox1.Items.Count;
         for j:=0 to Listbox1.Items.Count -1 do
      jvProgressbar1.Position:=j+1;

  idSMTP1.Disconnect;
ShowMessage('Mail został wysłany');

except
     ShowMessage('Błąd. Mail nie został wysłany');
end;

W listbox mam adresy email.

0

Z Indy Tobie nie pomoge, bo tam okiełznanie obslugi e-maili to wyższa szkoła jazdy, chociaż jest w demach,
o ile dobrze pamiętam jakiś przykład prostego klienta poczty. Ja jednak polcam Synapse. Zapoznaj się z tym
co jest w źródłach poniższego programu. Dopasuj kod do swoich potrzeb, ale mam prośbę, może jej jednak
nie olejesz - daj znać w programie o autorze oryginalnego rozwiązania jeżeli wykorzystasz mój kod. Dodam,
że program kompiluje się bez problemu w Delphi 7 Personal. A i wszystkie potrzebne niestandardowe moduły,
czyli w sumie Synapse - zostaly zawarte w archiwum. Program testowany z kontami na: poczta.o2.pl oraz
gmail.com i wysyła prawidłowo. Kod według mnie jest w miarę przejrzysty, powinieneś się w nim "połapać".
http://www.speedyshare.com/files/23955311/wysylanie_emaili.rar

0

ProgressBar daj kod (aktualny) tego co masz, bo nie wiem czy wysyłasz w pętli czy jak proponował Patryk27 (metoda dobra ale gdy dużo odbiorców to i tak pętla potrzebna i wysyłać np. do 10 na raz). No i właśnie czy pasek postępu ma pokazywać postęp wysyłania jednego meila (jak bez załącznika to nie ma sensu) czy postęp wysłania wszystkich.
olesio bez przesady w Indy wysłać e-mail (nawet z załącznikiem) to góra 5 minut pisania kodu czasem mam wrażenie, że na siłę twierdzisz Indy jest be Synapse jest cacy. To nie tak właśnie Indy jest dobre do konkretnych standardowych rozwiązań np. napisanie serwera, czy np. wysyłanie maili natomiast jest niepotrzebną "kobyłą" w drobnostkach np. pobranie pliku z sieci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1