E-pastu sūtīšana caur smtp ar php autorizāciju. Pasta sūtīšana, izmantojot SMTP PHP. Php pasta sūtīšana, izmantojot SMTP skripta iestatīšanu

Pasts PHP

Šī funkcija pēc noklusējuma tiek ieviesta kā e-pasta sūtītājs. Šai funkcionalitātei nav nepieciešams trešās puses serveris, lai nosūtītu e-pastu. Lai pārbaudītu šīs funkcijas pareizību, pietiek izveidot test.php failu mapē ar vietni un ievietot tur šādu kodu:

Kur vietā "e-pastsSAŅĒMĒJS" ievadiet e-pasta adresi, uz kuru jāsūta e-pasts.

Vieta dotais fails jūsu vietnes saknē.

Pēc tam adreses joslā ievadiet www.YourDomain/test.php. Ja vēstule ir nosūtīta uz norādīto pastu, tad jūsu hostings darbojas pareizi ar vēstuļu sūtīšanas funkciju " Pasts PHP. Iespējams, ka vēstule nokļuvusi surogātpastā, tāpēc arī tā ir jāpārbauda.

Ja vēstule tika ievadīta nesaprotamā kodējumā, mainiet rindiņu: "Pārbauda nosūtīto pastu" ieslēgts "Pārbauda nosūtīto pastu", "Content-type:text/html;charset=utf-8".

Un atkārtojiet vēstules nosūtīšanu, izmantojot pārlūkprogrammas adreses joslu.

Ja pēc veiktajām manipulācijām testa vēstule nesasniedza gala adresātu, jums jāsazinās ar sava hostinga tehnisko atbalstu.

No trūkumiem šī metode ir vērts atzīmēt, ka darbs nav pastāvīgs šī metode. Var būt pārtraukumi e-pasta sūtīšanā mitināšanas pusē.

Šīs metodes galvenais trūkums ir tas, ka visas vēstules, kas nosūtītas uz klientu e-pastiem, netiks atpazītas pasta dienestos (gmail, mail.ru, yandex.ru), jo tās tika nosūtītas tieši no jūsu vietnes.

Gmail pasta pakalpojums parāda e-pasta datus ar jautājuma zīmi un parakstu: "Gmail nevarēja apstiprināt, ka šis e-pasta ziņojums tika nosūtīts no domēna YourDomain Tas varētu būt mēstules."

Lai izvairītos no šīs situācijas .

SMTP (Vienkāršais pasta pārsūtīšanas protokols)

SMTP ir pasta pārsūtīšanas protokols. Kopumā, lai iestatītu pasta pārraidi, izmantojot šo protokolu, ir nepieciešams pats SMTP serveris. Visizplatītākais veids, kā yandex.ru korporatīvo (domēna) pastu izmantot kā SMTP serveri, ir https://pdd.yandex.ru/.

Pirmkārt, jums ir nepieciešams konts (pasts) yandex, pamatojoties uz kuriem tiks izveidotas jūsu domēna vēstules: " [aizsargāts ar e-pastu] TavsDomēns"" [aizsargāts ar e-pastu] YourDomain"... Galvenais konts nekur nebūs redzams un turpmāk tiek izmantots tikai domēna pastu izveidei uz tā bāzes.

Pēc autorizācijas jūsu personīgais konts yandex domēna pasts tiek izveidots, izmantojot saiti https://pdd.yandex.ru/. Tas ir šis domēna pasts, ko lietotāji redzēs laukā “Sūtītājs”.

Sūtot e-pastus, izmantojot SMTP, ir nepieciešams lauks "Sūtītājs". Izmantojot SMTP kā e-pasta ziņojumu sūtīšanu, virkne " Domēns" - "e-pasts", tādējādi vēstules atpazīst pasta pakalpojumi.


Starp šīs metodes trūkumiem ir vērts atzīmēt, ka nav iespējams "ielādēt" domēna pasta portretu, jo paši pasta pakalpojumi vēl nenodrošina šo funkcionalitāti.

2019-08-05

Sveiki dārgais apmeklētāj!

Lūdzu, atvainojiet par aizkavēšanos emuāra atjaunināšanā. Bet tam ir pilnīgi saprotams izskaidrojums. Galu galā vasara, vasarnīca, viesi, mežs, ūdens un daudz kas cits, kas man neļāva tikt galā ar vietnes izveidi. Bet tagad esmu nedaudz atbrīvojusies, viesi ir devušies prom, un domāju, ka tagad noteikti varēšu tam pievērst pienācīgu uzmanību.

Tātad, kad iepriekšējā rakstā esam savienojuši mūsu domēna pastu ar kādu no pasta pakalpojumiem, tagad redzēsim, kā varat nosūtīt e-pastu no vietnes. Turklāt, lai mūsu vēstules neiekļūtu SPAM, bet gan uzticami, ar lielu varbūtības pakāpi, tiktu piegādātas mūsu adresātiem.

Kopumā PHP ir iebūvēta pasta () funkcija e-pasta sūtīšanai. Bet jāatzīmē, ka, neskatoties uz šīs metodes vienkāršību (šajā gadījumā pietiek norādīt tikai vienu koda rindiņu ar noteiktiem parametriem, lai nosūtītu vēstules), šīs opcijas izmantošanai ir būtisks trūkums, kas saistīts ar SPAM problēmu.

Fakts ir tāds, ka pasta serveru anti-SPAM filtri adresāta pusē ne pārāk mīl vēstules, kas nosūtītas, izmantojot pasta () funkciju. Un vairumā gadījumu šādi ziņojumi tiek filtrēti vai pat izdzēsti, nesasniedzot adresātu.

Un, lai pēc iespējas izslēgtu šādus gadījumus, parasti tiek izmantota cita iespēja, kurā vēstules tiek sūtītas tā, it kā to darītu trešās puses pasta serviss.

Šo metodi sauc par pasta sūtīšanu, izmantojot SMTP ar autorizāciju. Ko mēs šodien apsvērsim, izmantojot veidlapas iesniegšanas piemēru atsauksmes. Turklāt šim nolūkam izmantosim diezgan pazīstamo un populāro PHPMailer bibliotēku, kas ļauj vienkārši organizēt e-pastu sūtīšanu, izmantojot SMTP.

  • Kā mēs nosūtīsim atsauksmju e-pasta ziņojumus?
  • Atsauksmju veidlapas izveide
  • PHPMailer bibliotēkas instalēšana
  • Mēs veidojam skriptu pasta sūtīšanai, izmantojot SMTP
  • Pārbauda e-pasta sūtīšanu
  • Vietnes avota faili

Kā mēs nosūtīsim atsauksmju e-pasta ziņojumus?

Pirms turpināt praktiskais darbs nosūtot atsauksmes, vispirms mēs izlemsim, kā mēs to darīsim.

Atsauksmes veidlapa ir veidota tā, lai lietotājs varētu nosūtīt savu ziņojumu, lai sazinātos ar vietnes administratoru. Parasti šāda veidlapa sastāv no vairākiem laukiem un pogas "Iesniegt".

Principā, lai nosūtītu e-pastu, pietiek izmantot tikai dažus laukus, kas sniedz pietiekamu informāciju par lietotāju un ziņojuma saturu, piemēram:

  • "Vārds" - lai ievadītu ziņas sūtītāja vārdu;
  • "E-pasts" - adresei E-pasts sūtītājs;
  • "Ziņojuma tēma";
  • "Ziņojuma teksts".

Lai gan var pievienot citus. Piemēram, tālruņa numurs, ja tas patiešām ir nepieciešams.

Mūsu gadījumā šādas vēstules tiks nosūtītas uz vietnes administratora adresi no īstas pastkastes ar autorizāciju pasta pakalpojumā, kuram ir pievienots mūsu domēns.

Tā kā iepriekšējā rakstā mēs pārstājām pārbaudīt domēna pasta savienojumu ar pakalpojumu Yandex.Mail, mēs nosūtīsim pastu šai opcijai. Lai gan tas nav būtiski. Zemāk šīs opcijas tiks atzīmētas, mainot, būs iespējams nosūtīt e-pastu pa pasta serveris Mail.ru.

Kā īstu pastkastīti, no kuras tiks sūtītas vēstules, mēs izmantosim jaunizveidota domēna pasta lietotāja kontu, teiksim ar adresi [aizsargāts ar e-pastu] Un mēs nosūtīsim šīs vēstules uz pastkaste administrators [aizsargāts ar e-pastu], kuru mēs iepriekš izveidojām iepriekšējā rakstā.

Tādējādi vēstules sūtītājs no atsauksmju veidlapas būs pastkaste [aizsargāts ar e-pastu], un saņēmējs - [aizsargāts ar e-pastu]Šajā gadījumā visa informācija par lietotāju, kurš nosūtījis ziņojumu ar tā saturu, tiks pārsūtīts nosūtītās vēstules pamattekstā.

Atsauksmju veidlapas izveide

Pēc tam, kad būsim izlēmuši par pašu vēstuļu nosūtīšanas secību, tagad izveidosim atsauksmju veidlapu, ar kuru mēs to darīsim.

Zemāk ir šādas formas HTML kods, kuru ievietosim lapā "Kontakti" (rakstu direktorijā esošais fails kontakty.php).

    "raksts" >

    Kontakti

    Atsauksmes

    "kontakts" darbība= "#" metode = "post" >

    Atsauksmes forma

    Par visiem jautājumiem, pieprasījumiem un biznesa priekšlikumiem varat sazināties ar mums, izmantojot tālāk esošo atsauksmju veidlapu.

    "kontaktu bloks" >

    "kontakta ievade" >

    "teksts" id= "kontakta vārds" vārds = "kontakta vārds" virsraksts = "Nosaukumam jābūt krievu valodā un tajā jābūt vismaz 3 rakstzīmēm" modelis = "{3,}" nepieciešams >

  1. "tukšs kontakts" >

    "kontakta ievade" >

    "e-pasts" id= "E-pasts saziņai" vārds = "E-pasts saziņai" nepieciešams >

  2. "kontaktu tēma" >

  3. "kontakta komentārs" >

  4. "kontakta poga" >

    "Iesniegt" vārds = "kontakta poga" vērtība = "Sūtīt" >

1. att. Atsauksmes veidlapas HTML kods

Rezultātā šeit sniegto atsauksmju veidlapu var redzēt nākamajā ekrānuzņēmumā.

Tādējādi vēlamā forma izveidots. Un tagad varat pāriet uz jautājumiem par datu apstrādi un nosūtīšanu pasta ziņojuma veidā.

PHPMailer bibliotēkas instalēšana

Kā minēts iepriekš, pasta sūtīšanai mēs izmantosim PHPMailer bibliotēku, kas ievērojami vienkāršos e-pasta sūtīšanu, izmantojot SMTP protokols ar atļauju trešās puses pasta pakalpojumā.

Lai to instalētu, jums ir jālejupielādē nepieciešamie faili. To var izdarīt no GitHub tīmekļa pakalpojuma, izmantojot Composer (pakešu atkarības pārvaldnieks PHP). Vai arī vienkārši lejupielādējiet nepieciešamos failus parastajā veidā.

ekrānuzņēmums 73

Zemāk ir GitHub tīmekļa pakalpojuma lapa ar atzīmētu saiti uz regulāru PHPMailer bibliotēkas lejupielādi.

Turklāt, jaunākā versija 6.0.7, kas tika saglabāts šīs rakstīšanas laikā, var lejupielādēt no pievienotajiem materiāliem.

Jebkurā gadījumā iegūtais arhīva fails ir jāizpako, pēc tam izvilktā PHPMailer-master mape ar visu tās saturu jāievieto vietnes saknē. Tajā pašā laikā vienkāršības labad varat to pārdēvēt par PHPMailer. Zemāk ir PHPMailer mapes saturs, kas ievietots vietnes saknes direktorijā.

Tādējādi mēs instalējām PHPMailer bibliotēku. Pēc tam mēs varam sākt veidot skriptu, ar kuru mēs nosūtīsim e-pasta ziņojumus no mūsu vietnes.

Mēs veidojam skriptu pasta sūtīšanai, izmantojot SMTP

Lai uzrakstītu skriptu, pietiek izmantot GitHub lapā sniegtās PHPMailer lietošanas vadlīnijas, kuras mēs iepriekš izmantojām bibliotēkas lejupielādei.

Jo īpaši tie norāda, ka skripta sākumā ir jāimportē PHPMailer klases globālajā nosaukumvietā. Un tiek dotas konkrētas atbilstošā koda rindas. Tajā ir sniegti arī PHPMailer rekvizītu un metožu izmantošanas piemēri, tostarp iespēja nosūtīt pastu, izmantojot SMTP.

Bet, ja ar to nepietiek, tad var izmantot arī dokumentāciju, kurā ir visu šīs bibliotēkas īpašību un metožu apraksts.

74. ekrānuzņēmums

Tālāk ir norādīts skripta kods pasta sūtīšanai no atsauksmju veidlapas, izmantojot SMTP ar autorizāciju. Kur visas ar PHPMailer saistītās rindas ir dotas ar skaidrojumu un izceltas ar gaišu fonu.

Pārējais, tostarp fragmenti, kas saistīti ar datu saņemšanu un apstrādi no veidlapas, kas mums iepriekš bija jāizmanto citos apstrādātājos, ir apzīmēti ar tumšu fonu. Tie tika pietiekami detalizēti apspriesti iepriekš rakstā, precīzi veltīti jautājumiem par datu iegūšanu un apstiprināšanu no veidlapas PHP. Kur mēs arī runājām par universālo pielāgoto funkciju veidlapu datu validēšanai un apstrādei pārbaudes_simbols().

Šo skriptu ievietosim tajā pašā kontakty.php failā, kurā iepriekš izveidojām atsauksmju veidlapu.

    //----Skripts pasta sūtīšanai, izmantojot SMTP, izmantojot PHPMailer----

    //Importējiet PHPMailer klases globālajā nosaukumvietā. Tiem jāatrodas skripta augšdaļā, nevis funkcijā

    izmantot PHPMailer\PHPMailer\PHPMailer ;

    izmantot PHPMailer\PHPMailer\Exception ;

    ja (!tukšs($_POST["kontaktpoga" ])) (

    $nosaukums = $_POST["kontaktpersonas vārds" ];

    $name = check_simbols ($name, "Nosaukums" , "1" , "/^+\z/iu" );

    $email = $_POST["kontakt-e-pasts" ];

    $email = check_symbol ($email, "Email" , "1" , "/^[aizsargāts ar e-pastu](+\.)+(2,6)\z/i");

    $subject = $_POST["kontaktpersonas tēma" ];

    $subject = check_symbol ($subject, "Subject" , "1" , "0" );

    $komentārs = $_POST["kontaktpersona-komentārs"];

    $komentārs = check_simbols($komentārs, "Ziņojuma teksts", "1" , "0" );

    ja (!tukšs($GLOBALS["alert" ])) (

    $ brīdinājums = "Veidlapas dati netika iesniegti. Tika konstatētas šādas kļūdas: \n".$alert;

    ietver"alert.php" ;

    cits {

    //Bibliotēkas savienojums

    pieprasīt"PHPMailer/src/PHPMailer.php" ;

    pieprasīt"PHPMailer/src/Exception.php" ;

    pieprasīt"PHPMailer/src/SMTP.php" ;

    $ pasts = jauns PHPMailer(); //Klases inicializācija

    $no = " [aizsargāts ar e-pastu]" ; //Pasta adrese, no kuras tiek sūtīta vēstule

    $to=" [aizsargāts ar e-pastu]" ; //Saņēmēja adrese

    $ pasts -> isSMTP(); //Lietot SMTP protokolu

    $mail -> Host = "smtp.yandex.ru" ; //Pasta servera adrese

    $ pasts -> SMTPAuth = taisnība ; //Iespējot autorizācijas režīmu

    $mail -> Lietotājvārds = " [aizsargāts ar e-pastu]" ; //Pieteikšanās no domēna pasta, kas savienota ar trešās puses pasta pakalpojumu (šajā gadījumā Yandex.Mail)

    $ pasts -> Parole = "27MrDon89" ; //Domēna pasta parole

    $ pasts -> SMTPSecure = "ssl" ; //Šifrēšanas protokols

    $ pasts -> Port = "465" ; //SMTP servera ports

    $ pasts -> CharSet = "UTF-8" ; //Kodējums

    $ pasts -> setFrom($from, "Administrators" ); //Sūtītāja adrese un vārds

    $ pasts -> pievienotAdrese($kam, "Administrators" ); //Saņēmēja adrese un vārds

    $mail -> isHTML( taisnība ); //Iestatiet e-pasta formātu uz HTML

    $ pasts -> Tēma = "Iesniegta saziņas veidlapa"; //E-pasta tēma (nosaukums)

    $ pasts -> pamatteksts = "

    Sūtītāja vārds: $name

    Sūtītāja adrese: $e-pasts

    Ziņojuma tēma: $subject

    Ziņojuma saturs: $komentārs



    " ; //Ziņojuma saturs

    $ pasts -> AltBody = "Alternatīvais burtu teksts"; //Alternatīva vēstule gadījumam, ja pasta klients neatbalsta HTML formātu

    $ pasts -> SMTPDbug = 0 ; //Iespējot SMTP atkļūdošanu: 0 — izslēgts (regulārai lietošanai), 1 = klienta ziņojumi, 2 — klienta un servera ziņojumi

    ja($mail -> send()) (

    $ brīdinājums = "Ziņa nosūtīta"; //Pārlūkprogrammas dialoglodziņā parādiet ziņojumu par veiksmīgu vēstules nosūtīšanu

    cits {

    $ brīdinājums = "Kļūda, pastu nevarēja nosūtīt:".$mail -> ErrorInfo ; //Izvades kļūdas ziņojums

    ietver"alert.php" ;

5. att. Skripts e-pasta sūtīšanai caur SMTP ar autorizāciju

Kā redzat, visām rindām, kas ir tieši saistītas ar pasta ziņojuma nosūtīšanu, kurās ir iestatītas nepieciešamās metodes un rekvizīti, ir pievienoti komentāri. Tāpēc nav jēgas atkārtot, bet mēs varam pakavēties tikai pie dažiem no tiem, kas patiešām prasa papildu paskaidrojumus, proti:

1. Sakarā ar to, ka vēstule ir nosūtīta no trešās puses pasta pakalpojuma, šeit tiek piemēroti iestatījumi, kas atbilst konkrētam SMTP serverim. Šajā gadījumā Yandex.Mail servera lietošanas gadījumam tiek piemērotas šādas rekvizītu vērtības:

  • Īpašums Uzņēmēja(poz.28) - pasta servera adrese ar vērtību smtp.yandex.ru;
  • Īpašums SMTPSecure
  • Īpašums osta

Šīs rekvizītu vērtības tika ņemtas no Yandex.Help lapas, kas parādīta nākamajā ekrānuzņēmumā.

Bet šādu informāciju var iegūt no citiem resursiem. Lai to izdarītu, pietiek ar to, lai meklētājprogrammā ievadītu atbilstošo vaicājumu, piemēram: "Yandex smtp serveris". Kur es varu atrast lielu skaitu saišu par šo tēmu.

Līdzīgi iestatījumus var iegūt no citiem SMTP serveriem. Tālāk ir redzams Mail.ru palīdzības lapas ekrānuzņēmums, kurā ir parādīti pasta pakalpojuma Mail.ru SMTP servera iestatījumi.

Tādējādi, ja Mail.ru izmantojat kā trešās puses SMTP serveri, jāpiemēro šādas PHPMailer klases rekvizītu vērtības:

  • Īpašums Uzņēmēja(poz.28) - pasta servera adrese (smtp.mail.ru);
  • Īpašums SMTPSecure(32. poz.) - Šifrēšanas protokols (ssl);
  • Īpašums osta(poz.33) — SMTP servera ports (465).

Līdzīga pieeja būtu jāpiemēro citiem pasta pakalpojumiem.

2. Īpašumā lietotājvārds(30. poz.) jānorāda pilna domēna pasta pastkastes adrese. Šajā gadījumā, " [aizsargāts ar e-pastu]".

Tomēr, ja vēstuļu sūtīšanai izmantojat nevis domēna pasta kontu, bet gan adresi, kas ir tieši saistīta ar pasta pakalpojumu, piemēram, " [aizsargāts ar e-pastu]", tad tikai adreses daļai pirms zīmes "@" jābūt pieteikšanās vārdam. Šajā gadījumā pieteikumvārdam būtu vērtība "feedback".

3. PHPMailer nodrošina īpašumu SMTPDbug(50. poz.), kas ļauj pārlūkprogrammas ekrānā parādīt dažāda līmeņa kļūdas. Šī funkcija ievērojami vienkāršo problēmu atrašanu skripta atkļūdošanas laikā.

Parasti parastajā režīmā, kad vērtība ir iestatīta uz 0, detalizētas informācijas par kļūdu izvade ir atspējota. Bet, ja rodas problēmas ar pasta sūtīšanu vai atkļūdošanu, lai parādītu jēgpilnāku informāciju par kļūdu, ir iespējams izmantot citas vērtības.

Lai redzētu, kā tas izskatās praksē, īslaicīgi ieviesīsim iestatījumos kļūdu. Piemēram, domēna pasta parolē (īpašums Parole, 31. poz.). Un arī, lai parādītu detalizētu informāciju par kļūdu, kas īslaicīgi iestatīta īpašumā SMTPDbug(poz.50) vērtība 1. Kad viss ir atkļūdots un pārbaudīts, atspējojiet SMTP atkļūdošanas režīmu, aizstājot 1 ar 0.

Skripta beigu daļā pēc visu nepieciešamo rekvizītu un metožu norādīšanas metode tiek izmantota vēstules nosūtīšanai sūtīt ()) (51. poz.). Un, ja vēstule ir nosūtīta, un metode sūtīt () priekš objektam $ pasts atgriezīsies true, pēc tam pārlūkprogrammas dialoglodziņā, izmantojot mainīgo $alert tiks parādīts ziņojums par veiksmīgu pasta nosūtīšanu (poz.52).

Ja kāda iemesla dēļ pastu nevarēja nosūtīt un līdz ar to metode nevarēja atgriezt true, tad šādam stāvoklim tiks pievienots atbilstošs kļūdas ziņojums (55. poz.).

Pārbauda e-pasta sūtīšanu

Pēc tam, kad esam sastādījuši pasta sūtīšanas skriptu, mums, protams, jāskatās uz mūsu "radošuma" rezultātu. Vai mēs šeit visu esam ņēmuši vērā un vai esam pieļāvuši kļūdas.

Lai to izdarītu, mēģināsim, kā plānots, nosūtīt ziņu no lietotāja vietnes administratoram no atsauksmju veidlapas. Tālāk ir redzams atsauksmju veidlapas ekrānuzņēmums ar laukiem, kas ir aizpildīti pirms tās iesniegšanas.

Un šeit ir veidlapas iesniegšanas rezultāts.

Kur no ziņojuma pārlūkprogrammas dialoglodziņā var redzēt, ka vēstuli nevar nosūtīt SMTP savienojuma problēmas dēļ.

Bet, kopš tagad īpašums SMTPDbug(poz.50) ir iestatīts uz 1, tad varēsim apskatīt detalizētu informāciju par notikušo kļūdu un noskaidrot tās rašanās cēloni.

Nākamajā ekrānuzņēmumā redzams, ka, mēģinot izveidot savienojumu, tika atklāta autentifikācijas kļūda, kas nozīmē, ka tika izmantots nepareizs pieteikšanās vārds vai parole.

Kad paroles neatbilstība ir novērsta (iepriekš tika izmantota nepareiza parole, lai varētu pārbaudīt papildu informācijas izvadi par kļūdu), mēs mēģināsim nosūtīt vēstuli vēlreiz.

Šoreiz likās, ka viss noritēja labi, un saņēmām ziņu, ka pasts ir veiksmīgi nosūtīts. Acīmredzot, ja neskaita apzināti ieviesto pagaidu kļūdu domēna pasta parolē, citas kļūdas mēs nepieļāvām.

Bet, lai pārliecinātos, ka vēstule tiešām ir piegādāta adresātam, ievadīsim pastu ar adresi [aizsargāts ar e-pastu] un paskaties uz rezultātu.

Kā redzat, vēstule no adreses [aizsargāts ar e-pastu], no kuras nosūtījām e-pasta ziņojumu ar nosaukumu "Atsauksmes" droši sasniegtajam vietnes administratoram. Tajā pašā laikā vēstules pamattekstā ir viss saturs, ko veidojām skriptā, izmantojot datus, kas saņemti no atsauksmju veidlapas, proti:

  • Sūtītāja vārds: Nikolajs;
  • Sūtītāja adrese: [aizsargāts ar e-pastu];
  • Ziņojuma tēma: Pārbauda pasta sūtīšanu;
  • Ziņojuma saturs: Testa ziņojums.

Tagad pēc veiksmīgas pasta sūtīšanas pārbaudes būs iespējams atspējot SMTP atkļūdošanas režīmu, iestatot rekvizītu SMTPDbug(50. poz.) vērtība 0.

Tādējādi esam pabeiguši uzdevumu izveidot rīku pasta sūtīšanai caur SMTP ar autorizāciju, izmantojot trešās puses pasta serveri.

Piemēram, nākamajā rakstā mēs redzēsim, kā nosūtīt apstiprinājuma e-pasta ziņojumus, lai atgūtu reģistrētā lietotāja konta informāciju.

Vietnes avota faili

Vietnes avota failus ar šajā rakstā veiktajiem atjauninājumiem var lejupielādēt no pievienotajiem papildu materiāliem:

  • www direktoriju faili
  • MySQL datu bāzes tabulas

Pasta sūtīšana, izmantojot SMTP no lokālā servera, ļauj pārbaudīt ziņojumu sūtīšanu no vietnes, kas atrodas vietējā datorā vai, vienkāršāk sakot, lokālā servera. Lai to izdarītu, varat izmantot jebkuru pasta pakalpojumu yandex, google vai mail.ru.

Pirmkārt, SMTP (Simple Mail Transfer Protocol) ir plaši izmantots tīkla protokols e-pasta pārsūtīšanai, izmantojot TCP/IP tīklus. Un visiem populārajiem pasta pakalpojumiem ir šādi protokoli.

Līdz ar vietējo serveru parādīšanos nav nepieciešams izvēlēties mitināšanas pakalpojumu sniedzēju, lai pārbaudītu atsevišķu skriptu vai cms sistēmu veiktspēju un vēl jo vairāk par to maksātu. Daudz vienkāršāk ir visu pārbaudīt datorā, un tad var visiem parādīt, ko esi “izdarījis”.

Daudziem no šiem serveriem jau ir iebūvēta programmatūra un nepieciešamā funkcionalitāte darbam ar pastu, jums tikai nepieciešams to pareizi konfigurēt.

Lai pārbaudītu šāda pasta darbību, jums ir nepieciešams minimums:

  • Varat izmantot Openserver kā vietējo serveri.
  • Un vienkāršs skripts, kura veidni var ņemt zemāk.
  • Var izmantot jebkuru pasta serveri.

Php pasta sūtīšana, izmantojot SMTP skripta iestatīšanu

Vienkārša skripta veidne, ko var kopēt tālāk vai lejupielādēt no simtiem līdzīgu vietņu, ir jārediģē.

Vispirms jums ir jāmaina dažas vērtības skripta veidnē.
uz - mainīt uz pasta adresi, uz kuru tiks nosūtīts pasta ziņojums.
priekšmets - vēstules tēma
ziņa - pats ziņojums vai vēstules pamatteksts.

Mana skripta piemērs:

Protams, varat nedaudz paplašināt funkcionalitāti un likt skriptam izdot ziņojumu par pasta sūtīšanu. Lai gan patiesībā tas ir SMTP serveris, kas sūta, un skripts veido tikai ziņojumu.

Piemēram, jūs varat rakstīt šādi:

Visām aizvietotajām vērtībām jābūt pēdiņās, pretējā gadījumā skripts radīs kļūdu. Pēc tam skriptu var saglabāt vietējā servera mapē.

Piemēram: domains/send/index.php un sāciet iestatīt pasta sūtīšanu, izmantojot SMTP opensrver.

Pasts tiks nosūtīts uz jebkuru adresi, kas tiks norādīta skriptā vērtības vietā "uz" , bet SMTP, kas tiks norādīts openserver iestatījumos, apstrādās un nosūtīs šo pastu.

  1. Servera palaišana
  2. Atveriet openserver moduli ar iestatījumiem izvēlnē "pasts".
  3. Mēs aizpildām visus laukus, kā parādīts attēlā, vienlaikus aizstājot lietotājvārdu, sūtītāja e-pastu un paroli no īstas pastkastes vietnē Yandex.

Mēs saglabājam iestatījumus un pēc servera restartēšanas varat atsaukties uz pašu skriptu. Mapē "Manas vietnes" atveriet mapi "sūtīt", kurā ir iepriekš saglabātais index.php skripts.

Tiklīdz šis skripts tiek izsaukts, jaunā pārlūkprogrammas logā tiks parādīta informācija, ka skripts ir darbojies.

Pēc tam jums vajadzētu pārbaudīt savu pastkastīti, kuras adrese bija norādīta skriptā, vai vēstule ir atnākusi.

Ja tā nav, tad kaut kas nav pareizi konfigurēts vai vēstule nonāca surogātpasta mapē.

Visi pārējie iestatījumi izskatās līdzīgi, bet katram gadījumam papildu informācija nenāktu par ļaunu.

Lai iestatītu pasta sūtīšanu, izmantojot SMTP pasta ru, jums vienkārši jāaizstāj Yandex iestatījumi ar pasta ru iestatījumiem.

Un, lai katru reizi nepārbūvētu vietējo serveri, vislabāk ir iestatīt dažādus atvērtā servera profilus. Kā to izdarīt, ir parādīts video pamācībā.

Šajā gadījumā pietiks tikai ar profila ielādi, un visi iestatījumi, kas tika norādīti šim profilam, būs pieejami pēc servera restartēšanas. Ļoti ērts un ļoti viegli apstrādājams.

Katram profilam (nav svarīgi, kā tas tiks saukts) ir jāveic savi iestatījumi, ja vien, protams, nav paredzēts izmantot skriptus, cms-sistēmas un aplikācijas, kas atšķiras pēc parametriem.
Ja nē, varat iztikt ar noklusējuma iestatījumiem.

Kas attiecas uz SMTP pasta ru, šeit viss ir identisks.

Yandex dati mainās uz pasta ru datiem

Pasta sūtīšana caur smtp google

Lai iestatītu pasta sūtīšanu, izmantojot Google SMTP, jums vajadzētu nedaudz mēģināt.

Pirmkārt, paša profila izveide Google tīklā ir grūtāka nekā citās Yandex un pasta ru sistēmās.
Otrkārt, sistēma nelaidīs e-pastu cauri tāpat, pat ja jūs norādāt savu pieteikšanās informāciju. Sākumā viņa nosūtīs vēstuli, kurā būs visa nepieciešamā informācija par turpmākajiem norādījumiem.

Kas attiecas uz pārējo Google tas ir konfigurēts tādā pašā veidā. Visi dati mainās.

Lai iestatītu pasta sūtīšanu, izmantojot citu SMTP, visi dati būs aptuveni vienādi.

Ja jums viss izdevās un vēstules sasniedza norādīto adresātu, tad viss tika izdarīts pareizi. Būtu lieliski, ja komentāros padalītos ar savu pieredzi.

Lai noteiktai vietnei būtu iespēja strādāt efektīvi un produktīvi, tās izveidei ir jāpieiet pēc iespējas atbildīgāk un līdzsvarotāk. Īpašu uzmanību ir pelnījusi sistēmas izvēle, kas tiks izmantota, veidojot interneta veikalu. Fakts ir tāds, ka komerciālai platformai, kas specializējas preču vai pakalpojumu pārdošanā, ir jāļauj ieviest visu nepieciešamo funkcionalitāti un jābūt viegli lietojamai gan administratoriem, kas nodarbojas ar vietņu uzturēšanu un aizpildīšanu, gan tiešsaistes veikalu klientiem. Daudzi cilvēki un uzņēmumi, kas saskaras ar jautājumu par pareizās CMS izvēli, analizē, vai izvēlēties Magento vai OkayCMS. Salīdzināsim šo vietņu dzinēju funkcijas un iespējas.

Strādājot pie savas mājas lapas, cilvēkam vai uzņēmumam būs jāpieliek lielas pūles – tikai šajā gadījumā varat paļauties uz pozitīviem rezultātiem un patiešām efektīva instrumenta iegūšanu. Viens no fundamentālajiem jautājumiem, kas jāatrisina pirms mājas lapas izveides uzsākšanas ir, kā izlemt par piemērotāko CMS variantu. Tālāk mēs salīdzināsim divas CMS: Joomla vai OkayCMS, pievērsiet uzmanību katras no tām funkcijām.

Savas vietnes izveide ir viena no efektīvas un veiksmīgas uzņēmējdarbības pamatprasībām. Statistika viennozīmīgi liecina par labu dažādu preču pirkumu un pakalpojumu pasūtījumu skaita pieaugumam internetā. Ņemot to vērā, lielākā daļa komercuzņēmumu jau apzinās nepieciešamību izveidot savu vietni. Tomēr ar interneta resursa esamības faktu vien nepietiek, lai rēķināties ar tā efektivitāti, rentabilitāti un paredzamajiem ieguvumiem uzņēmējdarbībai.

Gatavojoties izveidot savu vietni vai atvērt interneta veikalu, jāņem vērā un jāanalizē daudz jautājumu, kā arī jārisina dažādas problēmas. Tikai šajā gadījumā jūs varat paļauties uz to, ka jūsu projekts dos pozitīvus rezultātus un pilnībā attaisnos cerības. Starp dažādiem jautājumiem, kas saistīti ar interneta veikala attīstību, īpašu uzmanību ir pelnījis jautājums par CMS izvēli. Lai jums būtu vieglāk izlemt par optimālo dzinēju sev, ietvaros

Plānojot veidot savu mājas lapu topošajam interneta veikalam, diezgan liela daļa cilvēku un pat uzņēmumu, kas specializējas pārdošanā, saskaras ar grūtu un ārkārtīgi svarīgu izvēli: kuru no esošajām CMS izvēlēties. Ja domājat par to, vai izvēlēties PrestaShop vai OkayCMS, iesakām iepazīties ar šo rakstu, kurā salīdzināsim šīs divas sistēmas interneta vietņu, jo īpaši interneta veikalu, izveidei.

Tā kā anonīmu ziņojumu sūtīšana no virtuālajiem Windows hostinga serveriem ir aizliegta, vēstuļu sūtīšana jāveic caur SMTP serveri, kuram ir iespējams izmantot arī mūsu pasta sistēmu.

Kā nosūtīt e-pastus, izmantojot PHP?

Izmantojot jebkuru PHP klasi, kas atbalsta autorizāciju smtp serverī. Piemēram, varat izmantot PHPMailer klases kopu.

Varat arī izmantot mūsu piemēru, kas ievieš e-pasta ziņojumu sūtīšanu, izmantojot smtp serveri, kuram nepieciešama autorizācija. Tāpēc neaizmirstiet skriptam pievienot atbilstošu piekļuves informāciju, piemēram:

// Ja jums ir jāparāda SMTP sesijas žurnāls, varat noņemt komentāru no šīs rindas. // $_SERVER["atkļūdošana"] = true; function MailSmtp ($saņēmējs , $subject , $content , $headers , $debug = 0 ) ( $smtp_server = "smtp.site" ; // SMTP servera adrese$smtp_port = 25 ; // SMTP servera ports$smtp_user = " [aizsargāts ar e-pastu]" ; // Lietotājvārds autorizācijai SMTP serverī$smtp_password = "PasSWORd" ; // Parole autorizācijai SMTP serverī$mail_from = " [aizsargāts ar e-pastu]" ; // Pastkaste, no kuras tiek sūtīta vēstule$sock = fsockopen($smtp_server , $smtp_port , $errno , $errstr , 30 ); $str = fgets ($zeķe , 512 ); if (! $sock ) ( printf ("Socket nav izveidota\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock , "AUTH LOGIN" ); smtp_msg ($sock , base64_encode ($smtp_user )); smtp_msg ($sock , base64_encode ($smtp_password )); smtp_msg($sock , "PASTAS NO:<" . $mail_from . ">" ); smtp_msg ($sock , "RCPT UZ:<" . $reciever . ">" ); smtp_msg ($sock , "DATA" ); $headers = "Subject: " . $subject . "\r\n" . $headers ; $data = $headers . "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) funkcija smtp_msg ($sock , $msg ) ( if ( ! $sock ) ( printf ("Broken socket!\n" ); iziet(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Sūtīt no mums :%s
" , nl2br (htmlspecialchars ($msg ))); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ("Socket nedarbojas\n" ); iziet(1 ); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Iegūts no servera: %s
" , nl2br (htmlspecialchars ($str ))); ) $e = eksplodēt (" " , $str ); $kods = array_shift ($e ); $str = implode (" " , $e ); if ($kods > 499 ) ( printf ( "Problēmas ar SMTP sarunu.

Kods %d.
Ziņojums %s
"
, $kods , $str ); izeja(1); ) ) ) ?>

Lejupielādējiet pabeigta skripta piemēru ar funkciju MailSmtp(): smtpauth.php.sample

Varat izmantot iepriekš aprakstīto funkciju MailSmtp(), lai tieši aizstātu funkciju mail(). Apsveriet vienkāršākās PHP formas piemēru:

// Ziņojumu galvenes, tās nosaka ziņojuma kodējumu, laukus No, Kam utt.$headers = "MIME versija: 1.0\r\n" ; $galvenes .= "Satura veids: teksts/html; charset=windows-1251\r\n"; $headers .= "Kam: $uz \r\n" ; $galvenes .= "No: sūtītāja vārds " ; // pasts ($kam, $tēma, $ziņa, $headers); request_once "smtpauth.php" ; MailSmtp ($kam , $subject , $message , $headers ); ) ?>
Kam: Tēma: Teksts: 
 
 

Lai šī veidlapa darbotos bez funkcijas mail(), mēs iekļāvām failu smtpauth.php, izmantojot request_once, un izsaucām tajā aprakstīto funkciju MailSmtp() ar argumentiem, kas līdzīgi mail(). Tajā pašā laikā mēs kodā komentējām mail() izsaukumu, lai izvairītos no kļūdas, izpildot skriptu.

Kā nosūtīt e-pastus, izmantojot ASP.NET?

Ja izmantojat versiju 2.0, izmantojiet MailMessage klasi System.Net.Mail), labi aprakstīts.

Tālāk ir sniegti piemēri tā lietojumam valodām "C#" un "VisualBasic".

Piemērs valodai "C#":

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // izveidot jaunu burtu ziņa.To.Pievienot(" [aizsargāts ar e-pastu]"); // pievienojot adresāta adresi message.From = new MailAddress(" [aizsargāts ar e-pastu]domēns.tld", "Sūtītāja vārds"); // norādot sūtītāja nosaukumu un adresi message.Subject = "Tēma"; // vēstules tēmas norāde message.BodyEncoding = System.Text.Encoding.UTF8; // norādot burtu kodējumu message.IsBodyHtml = false; // norādot burta formātu (true — HTML, false — not HTML) message.Body = "Ziņojuma pamatteksts"; // norādot vēstules tekstu (pamattekstu). SmtpClient klients = new SmtpClient("smtp.site",25); // izveidojot jaunu savienojumu ar "smtp.site" serveri client.DeliveryMethod = SmtpDeliveryMethod.Network; // nosaka ziņojumu nosūtīšanas metodi client.EnableSsl = false; // atspējo nepieciešamību izmantot drošu savienojumu ar serveri client.UseDefaultCredentials = false; // atspējot autorizācijas informācijas izmantošanu "pēc noklusējuma" client.Credentials = new NetworkCredential(" [aizsargāts ar e-pastu]domēns.tld", "***parole***"); // norādot nepieciešamo informāciju (lietotājvārdu un paroli) autorizācijai SMTP serverī klients.Sūtīt(ziņa); // sūtīt ziņu %>

Lejupielādējiet gatavās veidlapas piemēru, kas parāda šīs metodes izmantošanu: MailForm.aspx .

VisualBasic valodas piemērs:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("[aizsargāts ar e-pastu]domēns.tld", "SūtītājaVārds") smtpMssg.To.Add(" [aizsargāts ar e-pastu]") " Pievienojiet adresāta adresi smtpMssg.Subject = "Tēma" "norādot vēstules tēmu smtpMssg.Body = "Ziņojuma pamatteksts" ", norādot vēstules tekstu (pamattekstu). smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 "norādot burta kodējumu smtpMssg.IsBodyHtml = false " burta formāta norāde (true - HTML, false - nevis HTML) Aptumšot SmtpMail kā jaunu SmtpClient ("smtp.site", 25) " jauna "SmtpClient" tipa objekta deklarācija SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network ", norādot ziņojuma piegādes veidu SmtpMail.UseDefaultCredentials = False " atspējot autorizācijas informācijas izmantošanu "pēc noklusējuma" SmtpMail.EnableSsl = False "atspējo nepieciešamību izmantot drošu savienojumu ar serveri SmtpMail.Credentials = new NetworkCredential(" [aizsargāts ar e-pastu]domēns.tld", "***parole***") ", norādot nepieciešamo informāciju (lietotājvārdu un paroli) autorizācijai SMTP serverī SmtpMail.Send(smtpMssg) " nosūtot ziņojumu %>

Ir arī novecojusi (un novecojusi) SmtpMail klase (izmantojot nosaukumvietu System.Web.Mail). Tālāk ir sniegts piemērs tās lietojumam "VisualBasic" valodai:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " jauna objekta deklarēšana ar tipa "MailMessage" smtpMssg.From = "SūtītājaVārds domēns.tld>" ", norādot sūtītāja vārdu un adresi smtpMssg.to=" [aizsargāts ar e-pastu]domēns.tld" ", norādot adresāta adresi smtpMssg.BodyFormat = MailFormat.Text ", norādot vēstules formātu smtpMssg.BodyEncoding = Kodēšana.UTF8 "norādot burta kodējumu smtpMssg.Subject = "Tēma" "norādot vēstules tēmu smtpMssg.Body = "Ziņojuma pamatteksts" ", norādot vēstules tekstu smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) ", norādot nepieciešamību pēc SMTP autorizācijas serverī smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", " [aizsargāts ar e-pastu]domēns.tld") "pieteikšanās lietotājvārds smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***parole***") "pieslēgšanās parole SmtpMail.SmtpServer = "smtp.site" "norādiet SMTP servera adresi SmtpMail.Send(smtpMssg) " nosūtot ziņojumu %>

Kā nosūtīt e-pastus, izmantojot ASP?

Lūdzu, ņemiet vērā, ka, izmantojot mūsu smtp serveri, ir nepieciešama autorizācija, tāpēc neaizmirstiet skriptam pievienot atbilstošu piekļuves informāciju, piemēram:

<% 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") = "[aizsargāts ar e-pastu]domēns.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "parole" .Atjaunināt Beigt ar Set cdoMessage = CreateObject("CDO.Message") Ar cdoMessage Set .Configuration = iConfig .From = "Pārbaudīt lietotāju domēns.tld>" .To = "Lietotājs " .Subject = "Sveiks, lietotāj" .TextBody = "Es rakstu šo ziņojumu no ASP skripta." .Sūtīt Beigt ar Set cdoMessage = Nekas Iestatīt iConfig = Nekas %>

Dažās CMS jau ir iebūvēti rīki korespondences sūtīšanai vai atbilstošie moduļi, apskatīsim populārākos no tiem.

Wordpress

Šai CMS ir īpašs modulis "WP Mail SMTP", tā konfigurācijas piemērs ir aprakstīts moduļa lapā.

Pievērsiet uzmanību ilustrācijai piemērā, mūsu pasta sistēmas apstākļos ir nepieciešams ports 25 un SSL šifrēšana nav nepieciešama.

Joomla

Administrēšanas panelī dodieties uz sadaļu "Vispārīgie iestatījumi", atlasiet cilni "Serveris". Laukā "Pasts" ir jāizvēlas sūtīšanas metode kā " SMTP serveris", Laukos " SMTP servera adrese" Un" SMTP pieteikšanās" Un" SMTP parole" Norādiet atbilstošo pasta sistēmas informāciju, piemēram: smtp.site, pastkaste@jūsu_domēns un atbilstošs parole.

Drupal

Šai CMS ir arī savs modulis darbam ar SMTP serveri, pamatojoties uz PHPmailer. Jūs varat lejupielādēt šo moduli tā lapā CMS Drupal vietnē, moduļa instalācijas apraksts ir pieejams arhīvā kopā ar to.

NetCat

Šai CMS nav iebūvētu funkciju darbam ar SMTP serveri. Lai nosūtītu pastu, izmantojot vietnes skriptus, mēs varam piedāvāt izmantot mūsu risinājumu, lai to savienotu, jums jāveic šādas darbības:

  • Lejupielādējiet no mūsu vietnes arhīvu ar nepieciešamajiem failiem ( send_auth_mail.php un mail.inc.php) un izpakojiet to savā datorā;
  • Rediģēt failu send_auth_mail.php no arhīva, norādot tajā savienojuma detaļas ar vēlamo SMTP serveri:

    • $mail_smtpServer = "smtp.vietne"; (SMTP servera adrese)
    • $mail_port = "25" ; (savienojuma ports)
    • $pasta_lietotājvārds = "[aizsargāts ar e-pastu]" ; (lietotājvārds autorizācijai SMTP serverī)
    • $pasta_parole = "Parole"; (parole autorizācijai SMTP serverī)
  • Izveidojiet faila dublējumu domain.tld/www/netcat/admin/mail.inc.php;
  • lejupielādēt failus send_auth_mail.php un mail.inc.php uz virtuālo vietni uz direktoriju domain.tld/www/netcat/admin/

domēns.tld jāaizstāj ar jūsu domēna vārdu.

Piedāvātais risinājums darbojas ar visiem NetCat moduļiem, kas izmanto šīs CMS standarta funkcijas pasta sūtīšanai.




Tops