Ultima dată ne-am uitat la opțiunea ca direct de pe site. Această opțiune este potrivită pentru a trimite o scrisoare.

Iar pentru administratorul site-ului, de foarte multe ori este necesar să se facă o notificare despre unele știri sau eveniment către toți utilizatorii site-ului, iar pentru aceasta este necesar să se trimită un e-mail în masă. Și este foarte important ca fiecare să primească o scrisoare individuală adresată în mod special. Aceasta înseamnă că fiecare literă trebuie să conțină un nume și o adresă unice.

Pentru a realiza un astfel de newsletter, trebuie să întrebați administratorul găzduirii pe care este instalat site-ul. Postarea fără permisiune poate duce la blocarea contului dvs. Indiferent dacă ai plătit pentru găzduire o lună sau un an. Voi spune imediat că șaptezeci la sută din toate site-urile de găzduire te pot refuza categoric. Alții pot fi permise, dar cu restricții. Aceasta ar putea fi, în cel mai bun caz, cinci sute de litere pe oră sau pe zi, sau în cel mai rău caz, o sută de litere pe zi. Totul depinde de tarif și de găzduire în sine.

Și dacă faci asta profesional și serios și, desigur, banii nu sunt suficienți, atunci mai întâi vei avea nevoie de un server VPS dedicat. Dar să nu credeți că puteți trimite atât de mult cât doriți acolo. Încă trebuie să spuneți administratorului de găzduire că trebuie să trimiteți un mesaj utilizatorilor site-ului că toată lumea a fost de acord să primească e-mailuri de la dvs. Și în general, baza de utilizatori este absolut albă și nu ați cumpărat această bază de pe nicio piață neagră.

Ei bine, cred că ați scris deja o scrisoare administratorului de găzduire. Am primit aprobarea de la el și i-am demonstrat că baza ta de e-mail este absolut albă și pufoasă.

Minunat. Acum să trecem la partea tehnică a problemei. Vom trimite scrisori într-o buclă while cu funcția obișnuită mail();.
Avem o bază de date de e-mail și numele fiecărui utilizator. Aceasta înseamnă că facem o interogare în baza de date a utilizatorilor folosind expresia mysql_query(“SELECT * FROM `users`”);

Și codul general de script este următorul:

În principiu, scriptul în sine pentru trimiterea de e-mailuri în masă în PHP este foarte simplu. Nu mai complicat decât, de exemplu, simplu. Dar, în realitate, trimiterea prin corespondență în masă nu este atât de simplă pe cât pare. Scriptul de corespondență în masă în sine este instalat și configurat pe server în câteva minute. Numai dvs. ați făcut doar zece la sută din tot ceea ce este necesar pentru a trimite scrisori și, în general, pentru a efectua corespondența.

Și, trebuie să țineți cont de următoarele condiții:

Iată o listă scurtă cu ceea ce este necesar pentru a trimite e-mailuri în masă. Dar acestea nu sunt toate recomandări, deoarece regulile jocului sunt în continuă schimbare. Și regulile pentru recunoașterea spam-ului se schimbă aproape în fiecare an. Pentru că în rețea există peste 200 de milioane de adrese de e-mail numai în Rusia. Toată lumea visează să primească cel puțin o rublă de la fiecare destinatar de e-mail.

Moguta.Mailer™ este un script PHP care oferă o interfață web pentru gestionarea buletinelor informative prin e-mail. Scriptul trebuie instalat pe serverul dvs. web/gazdă care îndeplinește următoarele cerințe de sistem:

  • Gazduire cu sistem de operare – Unix;
  • Cantitate minimă de RAM 128MB;
  • Baze de date - MySQL 5+ cu suport pentru sistem de stocare a datelor: MyISAM;
  • Server web - Apache 2.2.x.
  • Interpret PHP 7 sau 5.4+, cu module instalate: sesiune, json, curl, php_zip, gd_lib, xmlwriter, xmlreader, ionCube;
  • Drepturi de ștergere și adăugare a fișierelor CHMOD 755, în folderul rădăcină al site-ului și în toate subfolderele și fișierele acestuia. Proprietarul fișierelor trebuie să fie același cu proprietarul cu care rulează serverul web.

Cum să instalați

  1. Închiriază găzduire sau server VPS/VDS care îndeplinește cerințele de sistem prezentate mai sus;
  2. Încarcă arhiva din Moguta.Mailer la rădăcina site-ului tău;
  3. Despachetați arhiva;
  4. Deschideți site-ul dvs. în bara de adrese a browserului dvs. Veți vedea asistentul de instalare Moguta.Mailer™;
  5. În timpul procesului de instalare, va trebui să introduceți parametrii pentru a vă conecta la baza de date MySQL, care va trebui creat în prealabil folosind panoul de control al găzduirii;

Videoclip detaliat despre instalarea și configurarea Moguta.Mailer™

Nu se poate instala?

Programatorul nostru va instala și configura complet Moguta.Mailer™ pe găzduirea dvs. pentru doar 990 de ruble!

Cum să configurați trimiterea de e-mailuri

  1. Imediat după instalare, accesați panoul de control, acesta este disponibil pe pagina principală a site-ului
  2. Deschideți secțiunea „Setări” -> „De bază”.
  3. Asigurați-vă că completați câmpurile:

    În loc de [email protected]- înlocuiți adresa de e-mail înregistrată cu Yandex.mail.

    Yandex.Mail este dat doar ca exemplu, în realitate puteți utiliza orice alt server SMTP.

  4. Pentru a verifica, accesați secțiunea „Scrisori”, creați o nouă scrisoare, apoi faceți clic pe pictograma „Avion”, în fereastra care se deschide, introduceți oricare dintre e-mailurile dvs. la care doriți să trimiteți o scrisoare. Dacă setările sunt specificate corect, scrisoarea vă va fi livrată prin e-mail. Este posibil ca e-mailul să nu fie trimis numai dacă parametrii SMTP sunt incorecți.
  5. Dacă scrisoarea este trimisă, atunci următorul pas este să creați o sarcină CRON pe găzduirea dvs., care la un interval specificat (3-10 minute în funcție de volumul de corespondență) va accesa pagina site-ului. http://domeniul_dvs./cronși adună o coadă de scrisori pentru distribuire.

Cum se configurează autorespondere

Moguta.Mailer™- vă permite să creați un lanț de e-mailuri secvențiale care vor fi trimise automat abonaților dvs. conform unui program dat.

În secțiunea „Scrisori”, la crearea unei noi scrisori, bifați caseta: „Setați ora pentru trimiterea scrisorii”, va fi afișat un panou pentru selectarea orei pentru trimiterea scrisorii, care ar trebui să treacă după ce clientul se abonează la listă de email-uri.

Când este specificată ora de trimitere, scrisoarea va primi starea „Autoresponder” și va fi trimisă automat noilor abonați.

Conectarea fluxurilor RSS

Moguta.Mailer™- vă permite să difuzați conținutul fluxului de știri RSS către abonații de e-mail. Dacă publicați des știri pe site-ul dvs., atunci această funcționalitate este foarte convenabilă și va reduce timpul petrecut cu menținerea unei campanii de e-mail și va crea automat scrisori cu știri și le va trimite.

Puteți conecta orice număr de canale RSS. Pentru a conecta fluxul RSS al unui site creat pe Moguta.CMS, adăugați în setări Moguta.Mailer™ https://yourdomain/blog/rss sau https://yourdomain/new/rss, în funcție de pluginul de publicare utilizat. Dacă utilizați un blog pe Wordpress, atunci linkul RSS va arăta ca http://domeniul dvs./feed

Cum să configurați o campanie de e-mail

După finalizarea setărilor preliminare, puteți continua să lucrați cu serviciul de buletin informativ prin e-mail.

  1. Creați un abonament în secțiunea „Abonamente”. Veți primi un link către pagina de abonare și un formular de încorporat într-o terță parte. Pagina poate fi proiectată după cum aveți nevoie, până la o pagină de destinație cu drepturi depline. Pentru a face acest lucru, va trebui să copiați aspectul HTML pregătit anterior al paginii de destinație în codul paginii de abonament a serviciului.
  2. Dacă intenționați să vă colectați în mod onest baza de abonați, plasați un formular de abonare sau un link către o pagină de abonare pe site-ul dvs. terță parte.
  3. Pentru a descărca o bază de date de adrese gata făcută, faceți clic pe pictograma „@” pentru a importa baza de date cu adrese de e-mail.
  4. Accesați secțiunea „Scrisori”, creați o scrisoare și specificați lista de corespondență nou creată ca destinatari.
  5. Așteptați finalizarea lucrării CRON curl -s „http://domeniul tău/cron”, pe care l-ați specificat în setările de găzduire.
  6. De îndată ce sarcina este finalizată, o coadă de scrisori va fi adunată pentru a fi trimise către lista de corespondență creată de dvs. și acestea vor fi trimise.

Ceva nu merge

Dacă ceva nu funcționează sau nu funcționează corect, activați înregistrarea pentru depanare:

pentru a face acest lucru, deschideți fișierul mg-core/lib/log.php și înlocuiți linia

static private $write = false;


pe

static private $write = true;

După aceea, când sarcina cron este executată, raportul de execuție va fi salvat într-un fișier text în rădăcina site-ului dvs.

Asigurați-vă că dezactivați înregistrarea după depanare, deoarece acest lucru încarcă mult serverul și poate duce la timpi mai lungi de livrare a e-mailului.

Există multe servicii gratuite pe Internet. Inclusiv servicii pentru trimiterea de scrisori către abonați. Unele dintre ele sunt foarte bune. Dar din moment ce sunt gratuite, înseamnă că reclamele apare în litere. Și mulți oameni nu sunt mulțumiți de formularele mari de abonare cu sigla reprezentantului serviciului.

Deci, de ce să nu scrieți un motor simplu pentru lista dvs. de corespondență și să trimiteți scrisori pe cont propriu?

Să ne dăm seama de ce avem nevoie pentru asta. Pentru ca vizitatorii să aibă posibilitatea de a se abona la newsletter-ul dvs., aveți nevoie de un formular pentru a vă introduce adresa de e-mail. După ce ați introdus adresa, trebuie să o amintiți. Să salvăm adresele în fișierul maillist.txt, câte o adresă pe rând. Odată ce adresa a fost salvată, să afișăm un mesaj și să afișăm un formular pentru abonarea la o altă adresă sau ștergerea uneia existente. Asta e aproape tot. Tot ce rămâne este să adăugați posibilitatea de a trimite scrisori. Pentru securitate, să setăm o parolă pentru capacitatea de a trimite scrisori - este necesar un formular pentru a introduce parola. Veți avea nevoie și de formulare pentru a completa adresa și subiectul expeditorului, precum și pentru textul în sine. Și, în sfârșit, scenariul în sine, care va trimite scrisori. Și acum totul este în ordine.

Formularul pentru introducerea unei adrese de e-mail va consta doar dintr-o fereastră pentru introducerea adresei și un buton de confirmare:


Deci, în fereastra de introducere a textului, cu numele e-mail și o lungime vizibilă de 30 de caractere, va fi introdusă o adresă de e-mail. După ce faceți clic pe butonul etichetat subscribe, adresa va fi transferată în script-ul ras.php pentru a fi inclusă în lista de corespondență.

În continuare, să ne uităm la scriptul ras.php, care va salva adresa de e-mail într-un fișier, va afișa un mesaj despre rezultat și formularele pentru abonare și dezabonare. Scriptul poate fi executat destul de simplu - salvați adresa, afișați mesajul corespunzător. Dar pot apărea probleme: cineva se poate abona accidental de mai multe ori, cineva poate face o greșeală de tipar și introduce un caracter nevalid în câmpul de adresă. În acest caz, lista de corespondență va deveni poluată, iar adresele incorecte vor duce la erori în script. Concluzia este clară - înainte de a salva o adresă, ar trebui să o verificați pentru conformitatea cu standardele pentru numele adreselor căsuțelor poștale electronice, precum și pentru prezența acesteia în lista de corespondență. Pentru a nu privi codul în părți, voi da comentarii în codul în sine:

$file = "maillist.txt"; // fișierul care conține adrese error_reporting(0); // dezactivează afișarea mesajelor despre posibile erori funcția test_mail($char) // funcție care verifică realitatea adresei ( if (preg_match("/^[_\.0-9a-z-]+@([-) 0-9a-z \.]+)\.((2,3)$)/", $char)) returnează adevărat; returnează fals; ) // obține adresa introdusă în formular cu caractere mici $email = trim (strtolower($email )); funcția copy_mail($char) // verifică dacă o astfel de adresă există în baza de date ( global $fișier; $listă = fișier($fișier); pentru ($i = 0; $i< sizeof ($list); $i++) if ($char == trim($list[$i])) return true; return false; } echo "

"; if (is_file($file)) // apoi verificați adresa utilizând funcțiile descrise mai sus ( $maillist = file($file); if (!$email == "") ( if (test_mail($email)) ( dacă (! copy_mail($email)) ( $maillist = "\n$email"; printează "E-mail: $email listă de corespondență adăugată
"; ) else print "E-mail: $email este deja în baza de date"; ) else print "E-mail: $email nu există"; ) else print""; ) else print "Fișierul $fișier nu a fost găsit! Vă rog să-mi dai de veste eu despre eroare."; // afișează un formular cu o propunere de abonare și dezabonare echo "
Aboneaza-te la newsletter-ul nostru
"; echo "Introduceți e-mail:
"; ecou"


"; echo "Dezabonare
Introdu e-mail:"; echo "
"; // dacă utilizatorul decide să se dezaboneze, șterge adresa introdusă $flag = false; $fw = fopen($fișier, "w"); pentru ($i = 0; $i< sizeof ($maillist); $i++) if (trim(strtolower($delmail)) == trim(strtolower($maillist[$i]))) { if (!$delmail == "") { print "
$delmail a fost eliminat din lista de corespondență
"; $flag = adevărat; ) ) else fputs($fw, $maillist[$i]); // adresa introdusă nu este în baza de date fclose($fw); if (!$delmail == "") dacă (!$ steag) imprimă "
$delmail nu a fost găsit în lista de corespondență
";

Iată codul nostru pentru salvarea și ștergerea adreselor este gata. Acum trebuie să avem grijă de mijloacele de trimitere a corespondenței. Nu vom trimite prin Outlook!?. După cum sa menționat deja, vom proteja capacitatea de a trimite cu o parolă, pe care o vom introduce într-un formular special:


Câmpul de introducere se numește pass și va fi folosit pentru a introduce o parolă. După ce faceți clic pe butonul care spune enter, parola va fi transmisă scriptului out.php:

$subject = "Buletinul informativ al site-ului meu"; // trimiterea subiectului $fromemail = "my@soap"; // adresa ta (pentru răspunsuri) $file = "maillist.txt"; // lista adreselor abonaților $password = "secretpassword"; // parola ta pentru lista de corespondență dacă ($_POST["pass"] == $parolă) // dacă parola introdusă este corectă // atunci afișăm un formular cu câmpuri de introducere: // adresa expeditorului, textul scrisorii, corpul literei // buton pentru trimitere // după ce facem clic pe butonul, transferăm datele în scriptul send.php ( echo "


"; echo "adresa expeditorului

"; echo "linie de subiect
"; ecou"
textul scrisorii:
"; ecou"
"; imprimare " În baza de date ". sizeof($maillist) ." adrese

"; pentru ($i = 0; $i< sizeof ($maillist); $i++) print $maillist[$i]. "
"; ) // dacă parola este incorectă, vă rugăm să o introduceți din nou, altfel echo "
";

Mai rămâne un singur script de luat în considerare - cel care va trimite e-mail:

$odr = "\n\n\n Pentru a vă dezabona, utilizați linkul\n"; $homepage = "http://site.address/ras.php"; raportare_eroare(0); $subiect = $HTTP_POST_VARS[„subiect”]; $corp = $HTTP_POST_VARS[„corp”]; $subiect = bare oblice($subiect); $body = stripslashes($corp); $file = "maillist.txt"; $maillist = fisier($fisier); printează „În baza de date”. sizeof($maillist)." adrese
"; pentru ($i = 0; $i< sizeof ($maillist); $i++) { #echo($maillist[$i]."
"); mail($maillist[$i], $subject, $body ."$odr $homepag?delmail=$maillist[$i]", "De la:<$fromemail>"); ) echo "Gata!";

Totul este simplu aici: primim valorile introduse în formularul anterior și le trimitem în ciclu pe rând către fiecare dintre adrese.

Drepturi de autor de Vladislav Putyak http://ru-coding.com/. Modificări și completări

Foarte des este necesar să se organizeze trimiterea în masă a scrisorilor pe un site web, de exemplu, știri pe site pentru câteva mii de utilizatori. Dar din cauza limitărilor unor servicii de găzduire (de multe ori găzduire partajată) cu privire la numărul de e-mailuri trimise pe oră, pe zi, această sarcină nu devine atât de simplă. Hosterii pur și simplu tăie toate scrisorile care depășesc această limită și nu le trimit destinatarilor, acest lucru este de înțeles, lupta împotriva spammerilor. La urma urmei, un site mic nu are nevoie să trimită mii de e-mailuri pe oră, în timp ce un site mare își poate permite cu ușurință un server dedicat unde nu există aceste restricții.

Dar dacă mai trebuie să trimiteți un număr mare de scrisori? Există o soluție simplă pentru aceasta, și anume un script PHP pentru trimiterea întârziată. Principiul funcționării sale este simplu, toate scrisorile trimise trec prin el și apoi, în loc să fie trimise destinatarului, sunt adăugate într-o bază de date. După care acest script este apelat automat prin Cron la un interval de timp specificat și trimite un anumit număr de litere din baza de date la un moment dat. Astfel, fără a depăși limitele stabilite de hoster și atingerea scopului dorit.

Scriptul este formatat ca o clasă. Pentru funcționarea sa, sunt necesare două clase auxiliare suplimentare care vin cu el în arhivă, acestea sunt:
dbsql.class.php - clasă pentru lucrul cu baza de date
mail.class.php - clasa pentru trimiterea de mail

Un exemplu de utilizare a scriptului.

Sper că această soluție vă este de folos. Soluția este destul de universală și autonomă; poate fi conectată la orice CMS, orice site de pe orice găzduire. Capacitățile extinse ale clasei de e-mail vă vor permite, de asemenea, să configurați în mod flexibil operațiunea de corespondență, de exemplu, să utilizați un server SMTP terță parte.

Dar apoi am venit cu o idee despre cum să economisesc bani la trimiterea de e-mailuri către abonați. Cum se face trimiterea prin e-mail PHP și ce capcane veți întâmpina vor fi discutate în acest articol.

Cum se creează un buletin informativ PHP Email?

PHP este un limbaj universal, are chiar și o funcție de trimitere a e-mailurilor încorporată care trimite e-mailuri prin sendmail sau alt utilitar de găzduire (în funcție de configurația de găzduire). Și aici întrebarea este numărul de litere. Atât funcția de e-mail, cât și utilitățile de găzduire sunt destul de lente. Trimiterea unei scrisori la fiecare 30 de secunde nu te va duce departe cu o bază de clienți de 20 000. Există alternative, de exemplu, poți folosi SwiftMailer - o întreagă componentă a claselor PHP care îți permite să trimiți scrisori cu toate umpluturile (atașamente, semnături). și toate bunătățile disponibile).

Dar întotdeauna există capcane.

  1. Limite ale numărului de trimiteri - toate găzduirile stabilesc limite pentru trimiterea e-mailurilor de ieșire din contul unui client la 100-500 de scrisori pe zi (acest lucru ar trebui să fie suficient pentru corespondența obișnuită, dar limitează posibilitatea de a trimite scrisori nedorite și, prin urmare, protejează găzduirea de fiind adăugate la listele de spam). Astfel de limite vă vor împiedica să trimiteți un buletin informativ folosind funcția de e-mail PHP.
  2. Limitele furnizorilor de e-mail - dacă decideți să utilizați SwiftMailer sau o altă componentă pentru trimiterea de e-mailuri, atunci cel mai probabil pentru a utiliza serverele de e-mail ale furnizorilor de e-mail (Gmail, Yandex, Mail.ru) pentru a trimite. SwiftMailer și alții acceptă acreditările unui server SMTP extern și trimit scrisoarea direct de la ei. Și aici intră în joc un sistem de protecție flexibil din partea furnizorului de corespondență, care exprimă suspiciunea de a trimite scrisori nedorite (chiar dacă sunt de dorit) și blochează trimiterea de scrisori.

Există o alternativă, PHP Email mail cu VDS

După cum puteți vedea, aceste restricții strică foarte mult șansele de a face un buletin informativ în PHP. Soluția poate fi închirierea unui server virtual. Nu există astfel de limite așa cum s-a descris mai devreme (în general, desigur, există limite, dar acestea sunt activate numai atunci când furnizorul primește reclamații cu privire la adresa dvs. IP).

Deci, aveți un server virtual, un server sendmail sau smtp este configurat pe el, are propria sa adresă IP. Folosim trimiterea prin e-mail php sau Swiftmailer și trimitem scrisori. Dar atenție, trimiterea are loc de la aceeași adresă IP. Adică, mai devreme sau mai târziu această adresă IP va ajunge în cel puțin o listă de spam, iar literele vor începe să cadă în folderul SPAM al destinatarilor.

Ce altceva se mai poate face?

Cu siguranță trebuie să confirmați că sunteți un expeditor real pentru un motiv. Pentru a face acest lucru, trebuie să puneți înregistrările DKIM și SPF în setările de domeniu ale expeditorului și să atașați o semnătură dkim la scrisoare. Acest mic monstru criptat este adăugat la e-mailurile trimise și îi spune serviciului de e-mail al destinatarului că totul a fost trimis sincer, fără piratare. SwiftMailer poate introduce astfel de semnături. Acest lucru va crește, de asemenea, ușor factorul de livrare a corespondenței. Citiți despre cum să configurați SPF și DKIM în articolele următoare.