Posielanie pošty (SMTP vs. mail PHP). Posielanie pošty z PHP pomocou SMTP (s prílohou) Ako posielať poštu pomocou smtp

  • 21.11.2020

Pretože posielanie anonymných správ z virtuálnych serverov Windows je zakázané, malo by sa odosielanie listov uskutočňovať prostredníctvom servera SMTP, pre ktorý je tiež možné používať náš poštový systém.

Ako posielať e-maily pomocou PHP?

Používanie ľubovoľnej triedy PHP, ktorá podporuje autorizáciu na serveri smtp. Môže sa napríklad použiť sada tried PHPMailer.

Môžete tiež použiť náš príklad, ktorý implementuje odosielanie listov pomocou servera smtp, ktorý vyžaduje autorizáciu. Preto nezabudnite do skriptu pridať príslušné prístupové údaje, napríklad:

// Ak chcete zobraziť protokol relácie SMTP, môžete odkomentovať ďalší riadok. // $ _SERVER ["debug"] \u003d true;funkcia MailSmtp ($ príjemca, $ predmet, $ obsah, $ hlavičky, $ debug \u003d 0) ($ smtp_server \u003d "smtp.site"; // adresa servera SMTP$ smtp_port \u003d 25; // port servera SMTP$ smtp_user \u003d "užívateľ@domen.ru"; // Používateľské meno pre autorizáciu na serveri SMTP$ smtp_password \u003d "pAsSwORd"; // Heslo na autorizáciu na serveri SMTP$ mail_from \u003d "[email protected]"; // Poštová schránka, z ktorej sa list odosiela$ sock \u003d fsockopen ($ smtp_server, $ smtp_port, $ errno, $ errstr, 30); $ str \u003d fgets ($ ponožka, 512); if (! $ sock) (printf ("Zásuvka nie je vytvorená \\ n"); exit (1);) smtp_msg ($ sock, "HELO". $ _SERVER ["SERVER_NAME"]); smtp_msg ($ sock, "AUTH LOGIN"); smtp_msg ($ ponožka, base64_encode ($ smtp_user)); smtp_msg ($ ponožka, base64_encode ($ smtp_password)); smtp_msg ($ sock, "POŠTA OD:<" . $mail_from . ">"); smtp_msg ($ sock," RCPT TO:<" . $reciever . ">"); smtp_msg ($ sock," DATA "); $ headers \u003d" Subject: ". $ subject." \\ r \\ n ". $ headers; $ data \u003d $ headers." \\ r \\ n \\ r \\ n " . $ content. "\\ r \\ n."; smtp_msg ($ sock, $ data); smtp_msg ($ sock, "QUIT"); fclose ($ sock);) funkcia smtp_msg ($ sock, $ msg) (ak ( ! $ sock) (printf ("Broken socket! \\ n"); exit (1);) if (isset ($ _ SERVER ["debug"]) && $ _SERVER ["debug"]) (printf ("Odoslať od nás :% s
", nl2br (htmlspecialchars ($ msg)));) fputs ($ sock," $ msg \\ r \\ n "); $ str \u003d fgets ($ sock, 512); if (! $ sock) (printf (" Socket is down \\ n "); exit (1);) else (if (isset ($ _ SERVER [" debug "]) && $ _SERVER [" debug "])) printf (" Získané zo serveru:% s "
", nl2br (htmlspecialchars ($ str)));) $ e \u003d explode (" ", $ str); $ code \u003d array_shift ($ e); $ str \u003d implode (" ", $ e); if ($ kód \u003e 499) (printf ( "Problémy s konverzáciou SMTP.

Kód% d.
Správa% s
"
, $ code, $ str); výstup (1); )))?\u003e

Stiahnite si príklad hotového skriptu s funkciou MailSmtp (): smtpauth.php.sample

Vyššie popísanú funkciu MailSmtp () môžete použiť na priame nahradenie funkcie mail (), zvážte príklad najjednoduchšej formy v PHP:

// Hlavičky správ, definujú kódovanie správy, polia od, do atď.$ headers \u003d "Verzia MIME: 1.0 \\ r \\ n"; $ hlavičky. \u003d "Typ obsahu: text / html; charset \u003d windows-1251 \\ r \\ n"; $ headers. \u003d "Komu: $ to \\ r \\ n"; $ hlavičky. \u003d „Od: Meno odosielateľa " ; // mail ($ do, $ predmet, $ správa, $ hlavičky);require_once "smtpauth.php"; MailSmtp ($ do, $ predmet, $ správa, $ hlavičky); )?\u003e
Komu:  Téma:  Text: 
 
 

Aby tento formulár fungoval bez funkcie mail (), zahrnuli sme súbor smtpauth.php cez require_once a zavolali sme v ňom opísanú funkciu MailSmtp () s rovnakými argumentmi pre mail (). Zároveň sme v kóde komentovali samotné volanie na mail (), aby sme sa vyhli chybe pri vykonávaní skriptu.

Ako posielať e-maily pomocou technológie ASP.NET?

Ak používate verziu 2.0, potom použite triedu MailMessage System.Net.Mail), dobre opísaný.

Ďalej uvádzame príklady jeho použitia pre jazyky „C #“ a „VisualBasic“:

Príklad pre jazyk „C #“:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // vytvoriť nový e-mail message.To.Add ("[email protected]"); // pridať adresu príjemcu message.From \u003d nová MailAddress ("od @ doména.tld", "Meno odosielateľa"); // uvedenie mena a adresy odosielateľa message.Subject \u003d "Predmet správy"; // s uvedením predmetu listu message.BodyEncoding \u003d System.Text.Encoding.UTF8; // špecifikácia kódovania písmena message.IsBodyHtml \u003d false; // zadanie formátu správy (true - HTML, false - nie HTML) message.Body \u003d "Text správy"; // uvedenie textu (tela) písmena SmtpClient klient \u003d nový SmtpClient ("smtp.site", 25); // vytvoriť nové pripojenie k serveru „smtp.site“ client.DeliveryMethod \u003d SmtpDeliveryMethod.Network; // definuje spôsob posielania správ client.EnableSsl \u003d false; // zakáže potrebu použitia zabezpečeného pripojenia k serveru client.UseDefaultCredentials \u003d false; // deaktivuje použitie „predvolených“ podrobností autorizácie client.Credentials \u003d new NetworkCredential ("postmaster @ doména.tld"," *** heslo *** "); // uvedenie potrebných údajov (používateľské meno a heslo) pre autorizáciu na serveri SMTP client.Send (správa); // poslať správu %>

Stiahnite si príklad hotového formulára, ktorý demonštruje použitie tejto metódy: MailForm.aspx.

Príklad pre jazyk „VisualBasic“:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@doména.tld"," Sender_name ") smtpMssg.To.Add (" [email protected] ") "pridať adresu príjemcu smtpMssg.Subject \u003d "Predmet e-mailu" „s uvedením predmetu listu smtpMssg.Body \u003d "Text e-mailu" "s uvedením textu (tela) písmena smtpMssg.BodyEncoding \u003d System.Text.Encoding.UTF8 "indikácia kódovania písmen smtpMssg.IsBodyHtml \u003d false "s uvedením formátu správy (true - HTML, false - nie HTML) Dim SmtpMail ako nový SmtpClient ("smtp.site", 25) "deklarovanie nového objektu typu" SmtpClient " SmtpMail.DeliveryMethod \u003d SmtpDeliveryMethod.Network "označenie spôsobu doručenia listu SmtpMail.UseDefaultCredentials \u003d False "zakázať použitie" predvolených "podrobností autorizácie SmtpMail.EnableSsl \u003d False "zakazuje potrebu použitia zabezpečeného pripojenia k serveru SmtpMail.Credentials \u003d nový NetworkCredential ("postmaster @ doména.tld"," *** heslo *** ") "s uvedením požadovaných podrobností (používateľské meno a heslo) pre autorizáciu na serveri SMTP SmtpMail.Send (smtpMssg) „posielanie správy %>

K dispozícii je tiež zastaraná (a zastaraná) trieda SmtpMail (pomocou priestoru mien) System.Web.Mail). Nižšie uvádzame príklad jeho použitia pre jazyk „VisualBasic“:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage "deklarovanie nového objektu typu" MailMessage " smtpMssg.From \u003d "Meno odosielateľa doména.tld>" "s uvedením mena a adresy odosielateľa smtpMssg.To \u003d "admin @ doména.tld" "uvedenie adresy príjemcu smtpMssg.BodyFormat \u003d MailFormat.Text "s uvedením formátu listu smtpMssg.BodyEncoding \u003d Encoding.UTF8 "indikácia kódovania písmen smtpMssg.Subject \u003d "Predmet e-mailu" „s uvedením predmetu listu smtpMssg.Body \u003d "Text e-mailu" "s uvedením textu listu smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) "špecifikujúce potrebu autorizácie SMTP na serveri smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin @ doména.tld") "užívateľské meno pre autorizáciu smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendpassword", "*** heslo ***") "heslo pre autorizáciu SmtpMail.SmtpServer \u003d "smtp.site" "s uvedením adresy servera SMTP SmtpMail.Send (smtpMssg) „posielanie správy %>

Ako posielať e-maily pomocou ASP?

Upozorňujeme, že pri používaní nášho servera smtp je nutná autorizácia, takže nezabudnite do skriptu pridať príslušné prístupové údaje, napríklad:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@doména.tld".Item (" http://schemas.microsoft.com/cdo/configuration/sendpassword ") \u003d" heslo ". Aktualizácia Koniec so sadou cdoMessage \u003d CreateObject (" CDO.Message ") so sadou cdoMessage .Configuration \u003d iConfig. Z \u003d "Testovať používateľa doména.tld\u003e ".To \u003d" Používateľ ".Subject \u003d" Dobrý deň, používateľ ".TextBody \u003d" Túto správu píšem zo skriptu ASP. ".Odoslať koniec so sadou cdoMessage \u003d Nič nie je nastavené iConfig \u003d Nič%\u003e

Niektoré CMS už majú zabudované prostriedky na odosielanie korešpondencie alebo zodpovedajúcich modulov, zvážime najobľúbenejšie z nich.

Wordpress

Pre tento CMS existuje špeciálny modul „WP Mail SMTP“, príklad jeho konfigurácie je popísaný na stránke modulu.

Venujte pozornosť ilustrácii v príklade, ktorý náš poštový systém vyžaduje použitie 25. portu, a šifrovanie SSL sa nevyžaduje.

Joomla

Na paneli správy prejdite do časti „Všeobecné nastavenia“ a vyberte kartu „Server“. V poli „Pošta“ musíte zvoliť spôsob odosielania ako „Server SMTP“, v poliach „Adresa servera SMTP“ a „Prihlásenie SMTP“ a „Heslo SMTP“ zadajte príslušné podrobnosti poštového systému, napríklad: smtp. stránka, mailbox @ vasa_domena a prisl heslo.

Drupal

Tento CMS má tiež svoj vlastný modul pre prácu so serverom SMTP založený na PHPMailer. Tento modul si môžete stiahnuť na jeho stránke na webovej stránke CMS Drupal, popis inštalácie modulu je k dispozícii v archíve spolu s ním.

NetCat

Tento CMS nemá vstavané funkcie pre prácu so serverom SMTP. Ak chcete posielať poštu pomocou skriptov stránok, môžeme navrhnúť použitie nášho riešenia. Ak ho chcete pripojiť, musíte vykonať nasledujúce kroky:

  • Stiahnite si archív s potrebnými súbormi z našej webovej stránky ( send_auth_mail.php a mail.inc.php) a rozbaľte ho na počítači;
  • Upraviť súbor send_auth_mail.php z archívu a v ňom špecifikovať podrobnosti pripojenia k požadovanému serveru SMTP:

    • $ mail_smtpServer \u003d „smtp.stránka“; (Adresa servera SMTP)
    • $ mail_port \u003d "25" ; (port pre pripojenie)
    • $ mail_username \u003d [email protected]; (používateľské meno pre autorizáciu na serveri SMTP)
    • $ mail_password \u003d „Heslo“; (heslo pre autorizáciu na serveri SMTP)
  • Zálohujte súbor doména.tld / www / netcat / admin / mail.inc.php;
  • sťahovať súbory send_auth_mail.php a mail.inc.php na virtuálnu stránku v adresári domain.tld / www / netcat / admin /

doména.tld by sa mal nahradiť názvom vašej domény.

Navrhované riešenie funguje so všetkými modulmi NetCat, ktoré na odosielanie pošty využívajú štandardné funkcie tohto CMS.

V PHP je pomerne populárne používať skripty, ktoré automatizujú proces odosielania listov. V tomto článku sa pozrieme na jednoduchý skript, ktorý odosiela listy na poštu príjemcov pomocou protokolu SMTP ( Protokol jednoduchého prenosu pošty ). Bolo by príliš ľahké obmedziť sa iba na túto funkcionalitu, skript podporuje aj prílohy, to znamená, že do listu môžete pripojiť súbor pdf, txt alebo doc.

Nastavenie skriptu je pomerne jednoduché, potrebujete iba údaje o odosielateľovi, prihlasovacie meno, heslo z e-mailu, z ktorého sa budú odosielať listy.

Skript pracuje s triedou km_smtp_class.php, trieda je dobrá, pretože podporuje rôzne protokoly SSL a TLS, ktoré zabezpečujú bezpečný prenos dát.

Tu je samotný skript:

"smtp.mail.ru", "SMTP_port" \u003d\u003e "25", "SMTP_email" \u003d\u003e "používateľ@mail.ru", "SMTP_pass" \u003d\u003e "1111111", "SMTP_type" \u003d\u003e "null"); // E-mail príjemcu $ Receiver \u003d "[email protected]"; // Predmet správy $ Subject \u003d "Posielanie e-mailov z PHP"; // Text správy (v HTML) $ Text \u003d "Dobrý deň!
Správa odoslaná zo skriptu Mowshon Stránka: http: // site "; // Príloha v liste - adresa súboru $ Attachment \u003d" "; / * $ mail \u003d new KM_Mailer (server, port, užívateľ, heslo, typ); * / / * Typ môže byť : , tls alebo ssl * / $ mail \u003d nový KM_Mailer ($ SenderConfig ["SMTP_server"], $ SenderConfig ["SMTP_port"], $ SenderConfig ["SMTP_email"], $ SenderConfig ["SMTP_pass"], $ SenderConfig " SMTP_type "]); if ($ mail-\u003e isLogin) (// Priložiť súbor if ($ Attachment) ($ mail-\u003e addAttachment ($ Attachment);) // Pridať ďalších príjemcov $ mail-\u003e addRecipient (" user @ mail .ru "); $ mail-\u003e addRecipient (" [email protected] "); / * $ mail-\u003e odoslať (od, pre, predmet, text, titul \u003d voliteľné) * / $ SendMail \u003d $ mail-\u003e odoslať ($ SenderConfig ["SMTP_email"], $ príjemca, $ predmet, $ text); // Vymaže zoznam príjemcov $ mail-\u003e clearRecipients (); $ mail-\u003e clearCC (); $ mail-\u003e clearBCC (); $ mail -\u003e clearAttachments ();) else (echo "Pri pripájaní k serveru SMTP sa vyskytla chyba";)?\u003e

Nastavenia skriptu sú založené hlavne na poli $ SenderConfig, tu musíme určiť SMTP: server, port, užívateľské meno a heslo z e-mailu. Popíšme každý kľúč poľa:

SMTP_server - adresa servera SMTP (individuálna adresa pre rôzne e-maily)

Mail.ru mail: port smtp.mail.ru: 25, 587 a 465 (so šifrovaním SSL)

Pošta Yandex: port smtp.yandex.ru: 25 587 465 (port SSL)

Rambler Mail: port mail.rambler.ru: 25, 587 465 (port SSL)

Yahoo Mail: smtp.mail.yahoo.com Port SSL: 465

(Ak potrebujete adresu serverov smtp, ktoré nie sú v zozname - napíšte do komentárov)

SMTP_port - pre každý server smtp sme to už vyššie opísali.

SMTP_email - bolo by presnejšie byť používateľom, ale pre prehľadnosť som napísal e-mail, uvádzame e-mailovú adresu.

SMTP_pass - heslo z e-mailu, ktorý bol zadaný ako hodnota v kľúči SMTP_email


SMTP_type - predvolene NULL. Protokol, ktorým sa budú odosielať listy. Protokoly: SSL a TLS

Prílohy k listu je možné pridať proso zadaním úplnej adresy súboru do premennej $ Attachment (/var/patch/to/file/File.pdf)

Ak máte akékoľvek otázky, napíšte ich do komentárov nižšie.

PHPMailer je veľmi šikovná a obľúbená knižnica na odosielanie e-mailových správ z vášho webu. Tento článok vysvetľuje základné nastavenia knižnice a poskytuje príklady kódov na odosielanie správ. PHPMailer má vo svojom sortimente snáď všetko, čo si od práce s poštou môžete priať: odosielanie rôznymi spôsobmi, cez rôzne servery, vč. prostredníctvom protokolu smtp, možnosti šifrovania a podpisu vašich listov, aby sa nedostali do spamu, a oveľa viac.

Knižnicu PHPMailer si môžete stiahnuť z https://github.com/PHPMailer/PHPMailer (tlačidlo „Klonovať alebo stiahnuť“).

Najskôr analyzujem niekoľko jednoduchých príkladov, aby bolo jasné, ako posielať e-maily pomocou programu PHPMailer.

Posielanie e-mailov prostredníctvom funkcie mail () pomocou programu PHPMailer

Ak chcete zo svojho hostingu posielať listy prostredníctvom poštového servera, je všetko celkom jednoduché a bude vyzerať asi takto:

// Zahrnúť knižnicu PHPMailer pomocou PHPMailer \\ PHPMailer \\ PHPMailer; vyžadovať „PHPMailer / PHPMailer.php“; // Vytvorenie pošty $ mail \u003d nový PHPMailer (); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // od koho (e-mail a meno) $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // komu (e-mail a meno) $ mail-\u003e Subject \u003d "Test"; // predmet e-mailu // html text e-mailu $ mail-\u003e msgHTML ("

Ahoj!

Toto je testovací list.



"); // Poslať, ak ($ \u200b\u200bmail-\u003e send ()) (echo" E-mail bol odoslaný! ";) Else (echo" Chyba: ". $ Mail-\u003e ErrorInfo;)

Ako vidíte, všetko je celkom jednoduché: prepojíme knižnicu, vyplníme od koho, komu, predmet a text listu a pošleme ho. Odosielanie listov týmto spôsobom bude fungovať iba z e-mailových adries vašej domény (pokiaľ nie sú spojené s inými poštovými servermi).

Posielanie e-mailov cez SMTP pomocou PHPMailer pomocou príkladov Yandex a Google

Môžete tiež poslať list prostredníctvom iného poštového priečinka, napríklad prostredníctvom Yandex... Kód bude vyzerať asi takto:

// Zahrnúť knižnicu PHPMailer pomocou PHPMailer \\ PHPMailer \\ PHPMailer; používať PHPMailer \\ PHPMailer \\ SMTP; vyžadovať „PHPMailer / PHPMailer.php“; vyžadovať „PHPMailer / SMTP.php“; // Vytvorenie pošty $ mail \u003d nový PHPMailer (); $ mail-\u003e isSMTP (); // Posielanie cez SMTP $ mail-\u003e Host \u003d "smtp.yandex.ru"; // adresa servera SMTP $ mail-\u003e SMTPAuth \u003d true; // Povoliť SMTP autentifikáciu $ mail-\u003e Užívateľské meno \u003d "prihlásenie"; // vaše užívateľské meno (bez domény a @) $ mail-\u003e heslo \u003d "heslo"; // vaše heslo $ mail-\u003e SMTPSecure \u003d "ssl"; // zašifrovať ssl $ mail-\u003e port \u003d 465; // port pripojenia $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // od koho $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // komu $ mail-\u003e Subject \u003d "Test"; $ mail-\u003e msgHTML ("

Ahoj!

Toto je testovací list.



"); // Poslať, ak ($ \u200b\u200bmail-\u003e send ()) (echo" E-mail bol odoslaný! ";) Else (echo" Chyba: ". $ Mail-\u003e ErrorInfo;)

Posielanie e-mailov cez Google má jednu výhradu: potrebujete účet Google povoliť prístup k nedôveryhodným aplikáciám... Ak to chcete urobiť, musíte sa prihlásiť do svojho účtu https://myaccount.google.com, prejsť na zabezpečenie, prejsť do sekcie „Nespoľahlivé aplikácie, ktoré majú prístup k vášmu účtu“ a tam prepnúť na „Povolené“. V čase písania tohto článku ide o https://myaccount.google.com/u/0/lesssecureapps.

$ mail-\u003e Host \u003d "smtp.gmail.com"; // adresa servera SMTP $ mail-\u003e SMTPAuth \u003d true; // Povoliť SMTP autentifikáciu $ mail-\u003e Užívateľské meno \u003d "prihlásenie"; // vaše používateľské meno $ mail-\u003e heslo \u003d "heslo"; // vaše heslo $ mail-\u003e SMTPSecure \u003d "ssl"; // zašifrovať ssl $ mail-\u003e port \u003d 465; // pripojovací port

Ak posielate program prvýkrát prostredníctvom smtp, je vhodné ho použiť dodatočne $ mail-\u003e SMTPDebug \u003d 1; prijímať všetky správy klientov a smtp serverov, t.j. na obrazovke sa zobrazí celý proces pripojenia, autorizácie atď., čo je veľmi užitočné pri ladení vášho programu.

Posielanie e-mailov s prílohou pomocou PHPMailer

Všetko je tu celkom jednoduché, stačí použiť metódu pridať prílohu... Uvediem príklad a zároveň ukážem niekoľko ďalších funkcií:

// Zahrnúť knižnicu PHPMailer pomocou PHPMailer \\ PHPMailer \\ PHPMailer; použite PHPMailer \\ PHPMailer \\ Výnimka; vyžadovať „PHPMailer / PHPMailer.php“; vyžadovať „PHPMailer / Exception.php“; // Vytvorenie pošty $ mail \u003d nový PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // od koho $ mail-\u003e addReplyTo ("[email protected]", "Ivan Ivanov"); // spiatočná adresa $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // komu $ mail-\u003e Subject \u003d "Test"; // predmet $ mail-\u003e msgHTML (file_get_contents ("contents.html"), __DIR__); // získa "telo" písmena zo súboru $ mail-\u003e AltBody \u003d "Písmeno v obyčajnom texte"; // čistý text, ak klient nepodporuje html $ mail-\u003e addAttachment ("my_file.txt"); // priložiť jeden súbor $ mail-\u003e addAttachment ("phpmailer.jpg"); // pripojte druhý súbor // Send if ($ mail-\u003e send ()) (echo "Email sent!";) else (echo "Error:". $ mail-\u003e ErrorInfo;)

Pomocou adresy addAddress je možné pridať viac adries príjemcov. Alebo v prípade potreby môžete pomocou tejto metódy naopak vyčistiť všetky adresy príjemcov clearAddresses ()... Všetky prílohy môžete vymazať pomocou clearAttachments ().

Môžete tiež použiť AddEmbeddedImage pridať k e-mailu prílohu (zvyčajne obrázky), ktorá je určená na použitie v html kóde a nebude k dispozícii na stiahnutie. Príklad použitia obrázka v liste, ktorý nie je k dispozícii na stiahnutie:

// Zahrnúť knižnicu PHPMailer pomocou PHPMailer \\ PHPMailer \\ PHPMailer; vyžadovať „PHPMailer / PHPMailer.php“; // Vytvorenie e-mailu $ mail \u003d nový PHPMailer; $ mail-\u003e IsHTML (true); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); $ mail-\u003e Subject \u003d "Test"; $ mail-\u003e AddEmbeddedImage ("phpmailer.jpg", "testImage"); $ mail-\u003e Body \u003d "

Obrázok v html kóde

"; // Poslať $ mail-\u003e poslať ();

Takže môžete poslať písmená s obrázkamiktoré sa nachádzajú iba v tele e-mailu, ale nemožno ich stiahnuť ako prílohu. Tieto obrázky je možné použiť kdekoľvek v html kóde písmena, stačí zadať cid obrázka namiesto adresy URL, ktorú ste použili v AddEmbeddedImage.

Posielanie podpísaného a šifrovaného e-mailu cez PHPMailer

Štandardne PHPMailer šifruje všetky odoslané správy. Šifrovanie e-mailov môžete zakázať iba pri odosielaní e-mailov cez SMTP pomocou kódu:

$ mail-\u003e SMTPSecure \u003d false; $ mail-\u003e SMTPAutoTLS \u003d false;

To podpíšte list podpisom DKIM, musíte urobiť niekoľko vecí:

  • Generujte súkromné \u200b\u200ba verejné kľúče pre svoju doménu
  • Pridajte záznam DNS pre doménu TXT pomocou verejného kľúča
  • Pred odoslaním e-mailu nakonfigurujte podpis DKIM v PHPMailer

Teraz popíšem každý krok trochu podrobnejšie.

Generovanie súkromných a verejných kľúčov

Ak máte hosting v systéme Linux a máte prístup k Shell, potom je generovanie kľúčových súborov také ľahké ako hrušky, stačí spustiť 2 príkazy s obvyklými právami vášho používateľa:

Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout

Respektíve test-súkromný.pem a test-public.pem sú súkromné \u200b\u200ba verejné kľúče. Musíte ich uložiť do priečinka, ktorý nebude prístupný návštevníkom stránok ani nikomu okrem vás.

Ak nie je možné vykonávať príkazy v prostredí shell, môžete pomocou nasledujúceho kódu vygenerovať súkromné \u200b\u200ba verejné kľúče a uložiť ich do súborov:

$ domain \u003d "test.ru"; // tvoja doména $ privatekeyfile \u003d "test-private.pem"; // názov súboru, do ktorého sa bude písať súkromný kľúč $ publickeyfile \u003d "test-public.pem"; // názov súboru, do ktorého sa zapíše verejný kľúč if (file_exists ($ privatekeyfile)) (echo "

Pomocou existujúcich kľúčov

"; $ privatekey \u003d file_get_contents ($ privatekeyfile); $ publickey \u003d file_get_contents ($ publickeyfile);) else (echo"

Vytvorte kľúče"; $ Pk \u003d openssl_pkey_new ([" digest_alg "\u003d\u003e" sha256 "" private_key_bits "\u003d\u003e 2048," private_key_type "\u003d\u003e OPENSSL_KEYTYPE_RSA,]), openssl_pkey_export_to_file ($ pk, $ privateKeypile \u003d openssl_pkey_export_to_file ($ pk, $ privateKeypile), openssl_pkey_export_to_file ($ pk, $ privateKeypile); otvorený ); $ publickey \u003d $ pubKey ["kľúč"]; file_put_contents ($ publickeyfile, $ publickey); $ privatekey \u003d file_get_contents ($ privatekeyfile);) echo "

Súkromný kľúč (ponechajte tento súkromný!):

". $ privatekey."
„; echo“

Verejný kľúč:

". $ publickey."
";

Pozor! Nezabudnite skontrolovať, či je do priečinka, do ktorého sa budú súbory ukladať, zapisovateľné.

Pridanie záznamu DNS pomocou verejného kľúča

Záznam DNS je potrebný, aby poštové servery, ktoré dostanú vaše listy, mohli overiť podpis na liste prečítaním záznamu DNS vašej domény. Záznam DNS je zvyčajne možné pridať do ovládacieho panela vašej domény alebo do ovládacieho panela hostenia. Ak si nie ste istí, ako pridať záznam, kontaktujte podporu svojho poskytovateľa hostiteľských služieb.

Musíte pridať záznam DNS, ktorý vyzerá takto:

Názov záznamu: mail._domainkey.test.ru. (na konci bodka „.“)

TTL: 3600 (alebo ktoré budú predvolené)

Typ záznamu: TXT

Hodnota: v \u003d DKIM1; h \u003d sha256; t \u003d s; p \u003d YOUR_PUBLIC_KEY

V názve záznamu test.ru je potrebné nahradiť názvom domény. Slová „YOUR_PUBLIC_KEY“ nahradíte textom, ktorý ste dostali v predchádzajúcom kroku po položke „Verejný kľúč“, bez znakov „----- BEGIN PUBLIC KEY -----“ a „----- KONIEC VEREJNÉHO KĽÚČA --- - ", iba samotný kľúč. V tomto prípade je potrebné všetky riadky kľúča spojiť do jedného dlhého reťazcaaby neboli žiadne nové riadky.

Nastavenie podpisu DKIM v PHPMailer a posielanie e-mailov

Teraz už zostáva len vykonať niekoľko nastavení PHPMailer pred odoslaním listu a bude podpísaný. Myslím, že uvedený príklad objasní všetko:

// Zahrnúť knižnicu použitie PHPMailer \\ PHPMailer \\ PHPMailer; vyžadovať „PHPMailer / PHPMailer.php“; // Vytvorenie e-mailu $ mail \u003d nový PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]"); $ mail-\u003e addAddress ("[email protected]"); $ mail-\u003e Subject \u003d "Toto je test"; $ mail-\u003e msgHTML ("

Toto je test

"); // Nastavenie podpisu DKIM $ mail-\u003e DKIM_domain \u003d" test.ru "; $ mail-\u003e DKIM_private \u003d" test-private.pem "; $ mail-\u003e DKIM_selector \u003d" mail "; // Odosielanie $ mail- \u003e odoslať ();

Samozrejme test.ru musíte zmeniť názov svojej domény a test-súkromný.pem na úplnú cestu a názov súboru súkromného kľúča, ktorý bol vytvorený vo fáze generovania kľúča.

Teraz budú vaše e-maily odoslané cez PHPMailer podpísané DKIM s vašim súkromným kľúčom.

Posielanie pošty cez SMTP z lokálneho servera vám umožňuje testovať odosielanie správ zo stránky umiestnenej na lokálnom počítači alebo jednoduchšie z miestneho servera. K tomu môžete použiť ľubovoľnú poštovú službu yandex, google alebo mail.ru.

Najskôr SMTP (Simple Mail Transfer Protocol) je široko používaný sieťový protokol na prenos e-mailov cez siete TCP / IP. A všetky populárne poštové služby majú také protokoly.

S príchodom miestnych serverov nebolo potrebné vyberať poskytovateľa hostingu, aby sme skontrolovali výkon jednotlivých skriptov alebo systémov cms, a ešte viac ho platili. Je oveľa jednoduchšie otestovať všetko na počítači a potom môžete všetkým ukázať, čo ste „urobili“.

Mnoho z týchto serverov má už zabudovaný softvér a potrebné funkcie pre prácu s poštou, stačí ho správne nakonfigurovať.

Na kontrolu výkonnosti takejto pošty je potrebné minimum:

  • Openserver možno použiť ako lokálny server.
  • A jednoduchý skript, ktorého šablónu si môžete vziať hneď dole.
  • Môže sa použiť akýkoľvek poštový server.

Posielanie php pošty cez nastavenie skriptu SMTP

Je potrebné upraviť jednoduchú šablónu skriptu, ktorú je možné skopírovať nižšie alebo stiahnuť zo stoviek podobných stránok.

Najskôr musíte zmeniť niektoré hodnoty v šablóne skriptu.
do - zmeníme sa na poštovú adresu, na ktorú bude poštová správa odoslaná.
predmet - predmet listu
správa - samotná správa alebo text listu.

Príklad môjho scenára:

Môžete samozrejme trochu rozšíriť funkčnosť a nechať skript zobraziť správu o odosielaní pošty. Aj keď v skutočnosti správu odosiela server SMTP, skript ju iba vytvorí.

Môžete napríklad písať takto:

Všetky substituované hodnoty musia byť v úvodzovkách, inak skript vygeneruje chybu. Potom môžete skript uložiť do priečinka lokálneho servera.

Napríklad: domény / odoslať / index.php a začnite nastavovať odosielanie pošty cez SMTP opensrerver.

Mail sa bude posielať na akúkoľvek adresu, ktorá bude uvedená v skripte namiesto hodnoty „Do“ , ale SMTP, ktorý bude uvedený v nastaveniach openserveru, tento e-mail spracuje a odošle.

  1. Spustíme server
  2. Otvorte modul openserver s nastaveniami v ponuke „mail“
  3. Vyplníme všetky polia, ako je to znázornené na obrázku, pričom nahradíme používateľské meno, e-mail odosielateľa a heslo zo skutočnej poštovej schránky na serveri Yandex.

Uložíme nastavenia a po reštarte servera sa môžete obrátiť na samotný skript. V priečinku „Moje stránky“ otvorte priečinok „odoslať“, v ktorom sa nachádza skôr uložený skript index.php.

Ihneď po vyvolaní tohto skriptu sa v novom okne prehliadača zobrazia informácie o tom, že skript fungoval.

Potom stojí za to skontrolovať poštovú schránku, ktorej adresa bola uvedená v skripte, či list dorazil.

Ak tam nie je, znamená to, že niečo nie je správne nakonfigurované alebo sa list dostal do priečinka spamu.

Všetky ostatné nastavenia vyzerajú rovnako, ale iba v prípade, že ďalšie informácie neublížia.

Ak chcete nakonfigurovať odosielanie pošty cez SMTP mail ru, stačí nahradiť parametre Yandex parametrami mail ru.

A aby nedošlo k opätovnému vytvoreniu lokálneho servera zakaždým, je lepšie nakonfigurovať rôzne profily openservera. Postup je uvedený vo videonávode.

V takom prípade bude stačiť profil jednoducho načítať a všetky nastavenia, ktoré boli pre tento profil zadané, budú k dispozícii po reštartovaní servera. Je to veľmi šikovná vec a funguje to veľmi jednoducho.

Pre každý profil (je úplne jedno, ako sa bude volať) je potrebné vykonať jeho vlastné nastavenie, pokiaľ samozrejme nie je plánované použitie skriptov, systémov cms a aplikácií odlišných svojimi parametrami.
Ak nie, môžete si vystačiť s predvoleným nastavením.

Pokiaľ ide o SMTP mail ru, tu je všetko identické.

Zmeny údajov Yandex na údaje pošty ru

Posielanie pošty cez smtp google

Ak chcete nastaviť odosielanie pošty prostredníctvom protokolu SMTP spoločnosti Google, mali by ste sa trochu pokúsiť.

Po prvé, vytvorenie samotného profilu v službe Google je zložitejšie ako v iných systémoch Yandex a mail ru.
Po druhé, systém nenechá len prejsť list, aj keď zadáte svoje prihlasovacie údaje. Na začiatok pošle list, v ktorom budú všetky potrebné informácie o ďalších pokynoch.

Pre zvyšok pre Google je nakonfigurovaný rovnakým spôsobom. Zmenené sú iba všetky údaje.

Ak chcete nakonfigurovať odosielanie pošty cez iný SMTP, všetky údaje budú približne rovnaké.

Ak vám všetko vyšlo a listy sa dostali k určenému adresátovi, potom bolo všetko urobené správne. Bude skvelé, ak sa o svoju prácu podelíte v komentároch.

Aby určitá stránka mohla pracovať efektívne a produktívne, k jej tvorbe je potrebné pristupovať čo najzodpovednejšie a najopatrnejšie. Osobitná pozornosť si zaslúži výber systému, ktorý sa použije pri vytváraní internetového obchodu. Faktom je, že komerčná platforma špecializovaná na predaj tovaru alebo služieb by vám mala umožniť implementovať všetky potrebné funkcie a byť ľahko použiteľná tak pre správcov zapojených do údržby a plnenia stránok, ako aj pre zákazníkov internetových obchodov. Mnoho ľudí a spoločností, ktoré čelia otázke výberu správneho CMS pre seba, analyzujú: čo si zvoliť Magento alebo OkayCMS. Porovnajme vlastnosti a možnosti týchto nástrojov pre webové stránky.

Pri práci na vlastnej webovej stránke bude musieť osoba alebo spoločnosť vyvinúť veľké úsilie - iba v tomto prípade môžete počítať s pozitívnymi výsledkami a skutočne efektívnym nástrojom. Jednou zo základných otázok, ktorú je potrebné vyriešiť ešte pred začatím vytvárania stránky, bude rozhodnutie o najvhodnejšej možnosti CMS. Ďalej porovnáme dva CMS: Joomla alebo OkayCMS, venujeme pozornosť vlastnostiam každého z nich.

Mať vlastný web je jednou zo základných požiadaviek na efektívne a úspešné podnikanie. Štatistiky jednoznačne svedčia v prospech zvýšenia počtu nákupov rôzneho tovaru a objednávok služieb cez internet. S týmto vedomím si väčšina obchodných spoločností už uvedomuje potrebu mať vlastné webové stránky. Samotná skutočnosť dostupnosti internetového zdroja však stále nestačí na to, aby sa počítalo s jeho účinnosťou, ziskovosťou a očakávanými obchodnými výhodami.

Pri príprave na vytvorenie vlastnej webovej stránky alebo otvorenie online obchodu musíte vziať do úvahy a analyzovať veľa problémov, ako aj vyriešiť rôzne problémy. Iba v takom prípade sa môžete spoľahnúť, že váš projekt prinesie pozitívne výsledky a bude schopný plne splniť očakávania. Spomedzi rôznych problémov týkajúcich sa rozvoja internetového obchodu si osobitnú pozornosť zaslúži otázka výberu CMS. Aby ste si ľahšie určili optimálny motor pre seba, vo vnútri

Pri plánovaní vytvorenia vlastnej webovej stránky pre budúci online obchod čelí pomerne veľký počet ľudí a dokonca aj spoločností špecializovaných na predaj zložitá a mimoriadne dôležitá voľba: ktorý z existujúcich CMS si zvoliť. Ak uvažujete o tom, čo si vybrať: PrestaShop alebo OkayCMS, odporúčame vám prečítať si tento článok, v ktorom porovnáme tieto dva systémy na vytváranie internetových stránok, najmä internetových obchodov.