Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wysłać dużą ilość emaili z poziomu php
Forum PHP.pl > Forum > PHP
yalus
Witam,

Chciałbym wysłać większą ilość email (około 2000) za jednym razem do wszystkich użytkowników zarejestrowanych w moim serwisie,
jak mógłbym tego dokonać aby "nie przedobrzyć"

bo chyba wrzucenie poniższego kodu w pętle nie wchodzi w rachubę?

  1. $mail = $smtp->send($to, $headers, $body);



pozdrawiam i proszę o wskazówki
thoriam
jest opcja korzystanie ze specjalnych serwisów oferujących coś takiego albo odpalać co jakiś czas "mniejszą porcję" maili
yalus
dzieki, a jakie konsekwencje mi grożą jak będę tak wysyłać

zawieszenie serwera? jakiś ban?

na co mogę byc narażony?
sf
Najlepiej zrobić sobie wysyłanie e-maili przez ajax. Czyli w tle odpala się co jakiś czas skrypt php odpowiedzialny za wysyłąnie e-maili. Każdy większy hosting w Polsce ma dokładnie określoną liczbę e-maili, która może wyjść w ciągu pewnej jednostki czasu. Wystarczy do nich napisać i spytać.

Co do konsekwencji to po prostu e-maile będą blokowane, nigdzie nie wyjdą. Jak to będzie przeogromna ilość to pewnie admin zwróci uwagę byś tak nie robił. Wypowiedzenie umowy może się odbyć jeśli będziesz wysyłał spam + ewentualne konsekwencje prawne od osób, które dostaną taką pocztę od Ciebie.
thek
Na chwilę obecną większość hostingów typu shared (ale i niektóre dedyki) ma z reguły niskie limity. Zazwyczaj kilka, góra kilkanaście tysięcy na dobę, ale limity są różnie ustawiane... Czasem na dobę, czasem na godzinę. Po ich przekroczeniu najczęściej dostajesz "cofki", że mail nie może być wysłany. Poza tym serwery pocztowe mają często swoje własne reguły wychwytywania spamu. Jedną z nich jest ilość maili w określonej jednostce czasu z tego samego hosta. Jej przekroczenie automatycznie doda Cię do spamerów. Tak więc nigdy nie powinno się wysyłać dużej ilości hurtem. Murowane, że trafisz na blacklistę. Obecnie wysyłkę maili się "dławi", by wychodziła określona liczba co jednostkę czasu. Możesz przykładowo to rozwiązać na zasadzie kolejki FIFO, nad którą kontrolę sprawuje odpalany regularnie (przykładowo cronem) skrypt wysyłający. Sam takie rozwiązanie stosuję i jest to dość wygodne. Ja sobie, w zależności od hostingu, reguluję liczbę maili w paczce i czasem częstotliwość crona.
uupah5
Cytat(sf @ 29.03.2012, 09:50:38 ) *
Najlepiej zrobić sobie wysyłanie e-maili przez ajax. Czyli w tle odpala się co jakiś czas skrypt php odpowiedzialny za wysyłąnie e-maili. Każdy większy hosting w Polsce ma dokładnie określoną liczbę e-maili, która może wyjść w ciągu pewnej jednostki czasu. Wystarczy do nich napisać i spytać.

przez ajax?? może miałeś na myśli cron

co do chwalenia się przez portale polityką antyspamową, to nie jest tak różowo (piszę przez pryzmat własnych doświadczeń)
konsekwencje to tymczasowy ban. w ostateczności - stały ban na serwer, ew zgłoszenie do block list (np http://barracudacentral.org/rbl)
jak ktoś bardzo podpadnie a ISP jest w Polsce to admin może "podkablować" co może grozić rozwiązaniem umowy.

na marginesie, jak masz 2tys maili to nie ma się co tak spinać. podziel to na 4-5 części, daj między nimi 1 minutę przerwy i wysyłaj.
zadbaj o niski spam score.
yalus
Cytat(uupah5 @ 29.03.2012, 09:22:48 ) *
na marginesie, jak masz 2tys maili to nie ma się co tak spinać. podziel to na 4-5 części, daj między nimi 1 minutę przerwy i wysyłaj.
zadbaj o niski spam score.



super, dzięki za podpowiedzi

ale jeszcze jedno mnie nurtuje, w jaki sposób wysyłać te mejle, nawet jak sobie podziele na małe paczki to w pętli to zrobićquestionmark.gif, np:

  1. for ($i=1; $i<=$total_email; $i++)
  2. {
  3. $mail = $smtp->send($odbiorca[$i], $headers, $body);
  4. }
thek
Tak... Paczki lecą w pętli.
@uupah5: ja robię paczki 45maili co 6 minut, a i tak na niektórych serwerach pocztowych traktuje maile jako spam, bo klienci czasem piszą, że do tego katalogu im wpadła wiadomośc od nas. Przy 500/minutę to pewnie kilkunastokrotnie większa ilość by zawyła... Ja już nawet nie piszę, że znam sharedy, gdzie 400-500 to limit wysyłki maili na godzine wink.gif Dorzuć do tego, że skrypty na shared często mają limit 30 sekund, a średnio shared wysyła około 3 maili na sekundę. Jak on te 500 pchnie w 30 sekund to ja nie wiem.
yalus
dzieki, a ile paczek wysylasz w jednej sesji wysyłkowej?
sf
Cytat(uupah5 @ 29.03.2012, 10:22:48 ) *
przez ajax?? może miałeś na myśli cron

co do chwalenia się przez portale polityką antyspamową, to nie jest tak różowo (piszę przez pryzmat własnych doświadczeń)
konsekwencje to tymczasowy ban. w ostateczności - stały ban na serwer, ew zgłoszenie do block list (np http://barracudacentral.org/rbl)
jak ktoś bardzo podpadnie a ISP jest w Polsce to admin może "podkablować" co może grozić rozwiązaniem umowy.

na marginesie, jak masz 2tys maili to nie ma się co tak spinać. podziel to na 4-5 części, daj między nimi 1 minutę przerwy i wysyłaj.
zadbaj o niski spam score.


nie, nie mam na myśli crona tylko ajax, taki newsletter proponuje kilentom i nikt nie zgłasza uwag

co do kablowania i rozwiązania umowy też sprawa nie jest taka oczywista, zależy od sytuacji, jeden z klientów rozsyłał spam, dostałem informację od administratora o zaistniałej sytuacji, sprawę wyjaśniłem i na tym się skończyło

2tys podzielone na 5 częsci i wysyłane co minutę np. na home.pl albo kei.pl (na kei w ogóle są takie limity, że głowa boli, trzeba pisać do admina i prosić by je zwiększył) nie przejdzie więc wprowadzasz kolegę w błąd, napisałem w pierwszym moim poście, że powinno się spytać firmy hostingowej o taką informację i te informacje są udzielane
uupah5
sharedy to hosting współdzielony? podejrzewam, że w takim wypadku trzeba by wziąć pod uwagę limity serwera pocztowego ISP, który może po prostu nie wypuścić maili w ilości większej niż jakaś tam graniczna.
natomiast to, że przy wysyłce paczki 45maili na 6 minut część wpada do spamu to nie kwestia szybkości wysyłki a spam score, imho.

co do szybkości wysyłek to może się zagalopowałem, patrzę przez pryzmat masowych wysyłek z dedyka. masowych czyli takich większych niż 100tys/dobę.
w każdym razie ustawienie paczek po 100 maili i zrobienie przerwy 1-2 minutowej nie powinno powodować żadnych problemów na serwerach odbiorczych.

thek
@sf: Ale ja tu nie mówię jedynie o tym jakie są limity na serwerze wysyłającym. Na dedykach najczęściej nie istnieją i możesz walnąc nawet i 100 tysięcy na godzine jesli serwer wytrzyma wink.gif Home nawet nie liczę, ale dla Twojej wiadomości, to i oni mają limity, ale coś na granicy 500-600/minutę. Problemem są serwery odbierające pocztę. Może nie wiesz, ale bardzo częśtą praktyką jest dodanie serwera wysyłającego do spamlist jeśli serwer odbierze w krótkim czasie okreslona liczbę maili z tego samego hosta. A ja jestem ciekaw ile byś trafił w tych 2000 mail, serwerów wp, o2, interii czy tym podobnych wink.gif Po takiej wysyłce niemal murowane byś miał miejsce kolejnego maila od Ciebie w katalogu Spam wink.gif No ale tak najczęściej jest, gdy ktoś zna problemy z limitami wysyłki maila od strony serwera ale znacznie mniej się przejmuje czy i gdzie jego mail dojdzie. Później się nie dziwię, że ktoś widzi w statystykach płrzełożenie odczytu maili z danego mailingu na poziomie 2% lub mniej. Większość mailingów jakie ja wysyłam kończy sie ogladalnością na poziomie ponad 20%, a na liście jest jednak znacznie, znacznie więcej niż kilkadziesiąt userów. Dobrze stworzony mailing potrafi osiągnąć nawet grubo ponad 50%. Ilości jakie Ty proponujesz stawiają takie mailingi wprost na drodze filtrów antyspamówych.

EDIT:
@uupah5: Mam świadomość spam score, ale właśnie dzięki odpowiedziom jakich udziela sf zwyczajnie się go tylko "radośnie podwyższa". Ja limit 45/6minut dałem dla typowego shared z 500/godzinę, by zostawić rezerwę na inne maile (rejestracja, odzyskiwanie haseł i podobne). Oczywiście rozumiem co napisałeś i zgadzam się z Toba w wymienionych kwestiach, których zapewne sf nie zna i być może nigdy na nie nie zwrócił uwagi. Wiem, że można więcej ale trzeba miec własny rozum i wiedzy na ten temat liznąć ciutkę innej niż tylko patrzenie na limit hostingu.
uupah5
Cytat(sf)
nie, nie mam na myśli crona tylko ajax, taki newsletter proponuje kilentom i nikt nie zgłasza uwag

nie chwytam idei, możesz rzucić jakimś linkiem albo rozwinięciem o co chodzi?

Cytat(sf)
2tys podzielone na 5 częsci i wysyłane co minutę np. na home.pl albo kei.pl (na kei w ogóle są takie limity, że głowa boli, trzeba pisać do admina i prosić by je zwiększył) nie przejdzie więc wprowadzasz kolegę w błąd, napisałem w pierwszym moim poście, że powinno się spytać firmy hostingowej o taką informację i te informacje są udzielane

a może obaj mamy racjęwink.gif limity są w wysyłce po stronie ISP, o których Ty piszesz i limity po stronie serwerów odbiorców, które ja miałem na myśli.
hind
ajaxem zastępujesz crona, cyklicznie odpytujesz stronę która wysyła maile.
ja się spotkałem z refreshem... odpalała się strona w nowym oknie, i leciała refreshami wysyłając po 10 maili, a na koniec window.close();
Sky_walker
Cytat(uupah5 @ 29.03.2012, 14:50:57 ) *
nie chwytam idei, możesz rzucić jakimś linkiem albo rozwinięciem o co chodzi?

Zgaduję, że chodzi o skrypt JS który wysyła komendy do PHP co kilka sekund z proźbą o wysłanie kolejnej paczki maili.
Świetna sprawa kiedy nie masz dostępu do crona na serwerze, albo nie chcesz bez potrzeby zaśmiecać crona.
Trochę kiepska w przypadku różnych zwisów po stronie klienta, ale dobrze napisany skrypt poradzi sobie i z tym smile.gif

Ja osobiście jestem zwolennikiem takiego rozwiązania nad ładowaniem rzeczy do Crona. Głównie dlatego, że klient na bierząco widzi i jest świadom tego co się dzieje oraz ewentualnych problemów z wysyłką.
uupah5
Cytat(Sky_walker)
Zgaduję, że chodzi o skrypt JS który wysyła komendy do PHP co kilka sekund z proźbą o wysłanie kolejnej paczki maili (...)

załapałem, dzięki:)
Cytat(Sky_walker)
Ja osobiście jestem zwolennikiem takiego rozwiązania nad ładowaniem rzeczy do Crona. Głównie dlatego, że klient na bierząco widzi i jest świadom tego co się dzieje oraz ewentualnych problemów z wysyłką.

ja stosuję mix: wysyłka jest poprzez crona, odpytywanie o status jest poprzez ajax (semafory po stronie serwera)

i przepraszam za OT
dantekir
To ja się dołączam do tematu.
Mój problem polega na tym, że mam skrypt w którym przy pomocy ajaxa rozsyłam partie maili.
I teraz chciałbym ten skrypt odpalać za pomocą crona o określonym czasie.
Niestety nie działa. Czy to możliwe że cron nie wykona skryptu z ajaxa?
Próbowałem to rozwiązać jeszcze poprzez curl -a też bezskutecznie.

Gdzie w ogóle szukać rozwiązania?
fr33d0m
Na Home wysyłam >7.000 maili w ciągu 10minut z chwilowym odstępem co kilkaset wysłanych maili. Żadne nie trafiają do SPAMu i nie ma z nimi żadnego problemu. Wysyłka poprzez phpBB2 przy Business Server.
AuronDiel
  1. <?php
  2.  
  3. $NagłówekEmail = 'From: mojadresamail@domena.pl';
  4. $NagłówekEmail .= 'Cc: mojadresemail2@domena.pl';
  5.  
  6. if(mail('mojadresmail@domena.pl','Temat','Treść',$NaglowekEmail))
  7. {
  8. echo'List został wysłany';
  9. }
  10. else
  11. {
  12. echo'List NIE zostal wyslany';
  13. }
  14. ?>


: > TA DA! Enjoy!
Funkcja ta daje mozliwosc wysylania listu email do odbiorcy, takze jako kopii CC i BCC
Mephistofeles
Nie o to chodzi biggrin.gif.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.