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īšana. Šai funkcionalitātei nav nepieciešams trešās puses serveris, lai pārsūtītu e-pastu. Lai pārbaudītu šīs funkcijas pareizību, vienkārši izveidojiet failu test.php mapē ar vietni un ievietojiet tur šādu kodu:

Kur vietā "EMAILSAŅĒMĒJS" Ievadiet e-pastu, uz kuru jānosūta vēstule.

Vieta šo failu jūsu vietnes saknē.

Pēc tam adreses joslā ievadiet www.YourDomain/test.php. Ja uz norādīto e-pastu tiek saņemta vēstule, tad jūsu mitināšana 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 saņemta nesaprotamā kodējumā, mainiet rindiņu: "Pārbauda pasta sūtīšanu" ieslēgts "Pārbauda pasta sūtīšanu", "Content-type:text/html;charset=utf-8".

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

Ja pēc iepriekš minētajām manipulācijām testa vēstule nesasniedz gala adresātu, jums jāsazinās ar hostinga tehnisko atbalstu.

Starp 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, neatpazīs pasta pakalpojumi (gmail, mail.ru, yandex.ru), jo tās tika nosūtītas tieši no jūsu vietnes.

Gmail pasta pakalpojums parāda šos burtus ar jautājuma zīmi un parakstu: "Gmail sistēma nevarēja apstiprināt, ka šī vēstule ir nosūtīta no domēna YourDomain. Tas var būt mēstules."

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

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

SMTP - pasta pārsūtīšanas protokols. Kopumā, lai iestatītu pasta pārraidi, izmantojot šo protokolu, ir nepieciešams pats SMTP serveris. Visizplatītākā iespēja korporatīvā (domēna) pasta yandex.ru izmantošanai kā SMTP serverim ir https://pdd.yandex.ru/.

Pirmkārt, tas ir nepieciešams konts (pasts) yandex, uz kuru pamata tiks izveidoti e-pasti jūsu domēnam: “order@YourDomain” “info@YourDomain”... Galvenais konts nekur nebūs redzams un tiek izmantots tikai domēna e-pastu veidošanai uz tā bāzes turpmāk.

Pēc pieteikšanās savā personīgais konts Yandex domēna pasts tiek izveidots, izmantojot saiti https://pdd.yandex.ru/. Šis ir domēna e-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, lai nosūtītu vēstules, kombinācija " 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, piedodiet par kavēšanos ar emuāra atjaunināšanu. Bet tam ir pilnīgi saprotams izskaidrojums. Galu galā tā bija vasara, vasarnīca, viesi, mežs, ūdens un daudz kas cits, kas neļāva man risināt vietnes izveides jautājumus. Bet tagad esmu nedaudz atbrīvojies, viesi ir devušies prom, un domāju, ka tagad noteikti varēšu tam pievērst pienācīgu uzmanību.

Tātad, pēc tam, kad iepriekšējā rakstā mēs savienojām sava domēna pastu ar kādu no pasta pakalpojumiem, tagad apskatīsim, kā varat nosūtīt e-pastu no vietnes. Turklāt tādā veidā, lai mūsu vēstules nenonāktu SPAM, bet gan uzticami, ar lielu varbūtības pakāpi tiktu piegādātas mūsu adresātiem.

Kopumā ir iebūvēta funkcija mail() vēstuļu sūtīšanai PHP. Bet jāatzīmē, ka, neskatoties uz šīs metodes vienkāršību (šajā gadījumā, lai nosūtītu vēstules, pietiek norādīt tikai vienu koda rindiņu ar noteiktiem parametriem), šī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ē īsti neatbalsta vēstules, kas nosūtītas, izmantojot funkciju mail(). Un vairumā gadījumu šādi ziņojumi tiek filtrēti vai pat izdzēsti, pirms tie sasniedz adresātu.

Un, lai pēc iespējas novērstu šā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 aplūkosim, izmantojot veidlapas iesniegšanas piemēru atsauksmes. Turklāt šim nolūkam izmantosim diezgan pazīstamo un populāro PHPMailer bibliotēku, kas ļauj gluži vienkārši organizēt vēstuļu sūtīšanu caur SMTP.

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

Kā mēs nosūtīsim atsauksmju vēstules

Pirms sākat praktiskais darbs Pēc atsauksmju vēstuļu nosūtīšanas vispirms izlemsim, kā to darīsim.

Atsauksmes veidlapa ir izstrādāta, lai ļautu lietotājam sazināties ar vietnes administratoru, lai nodotu savu ziņojumu. Parasti šī 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 jūs varat 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ā, ar kuru ir savienots mūsu domēns.

Tā kā iepriekšējā rakstā mēs koncentrējāmies uz domēna pasta savienojuma pārbaudi ar pakalpojumu Yandex.Mail, mēs nosūtīsim pastu šai opcijai. Lai gan tas nav svarīgi. Zemāk redzēsit tās opcijas, kuras, mainot, varēsiet nosūtīt e-pastu, izmantojot 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 vēstuļu nosūtīšanas kārtību, tagad izveidosim atsauksmju veidlapu, ar kuru mēs to darīsim.

Zemāk ir šīs veidlapas HTML kods, kuru ievietosim lapā "Kontakti" (rakstu direktorijā 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. "kontakts-tēma" >

  3. "kontakts-komentārs" >

  4. "kontakta poga" >

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

1. att. Atsauksmes veidlapas HTML kods

Nākamajā ekrānuzņēmumā varat redzēt, kā izskatās šeit redzamā atsauksmju veidlapa.

Tādējādi nepieciešamā forma izveidots. Un tagad varat pāriet uz jautājumiem par datu apstrādi un nosūtīšanu e-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 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, kurā ir atzīmēta saite uz parasto PHPMailer bibliotēkas lejupielādi.

Turklāt, jaunākā versija 6.0.7, kas tika saglabāts šī raksta tapš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ņas no mūsu vietnes.

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

Lai izveidotu skriptu, pietiek izmantot GitHub lapā sniegtos ieteikumus par PHPMailer lietošanu, kurus mēs iepriekš izmantojām bibliotēkas lejupielādei.

Tie jo īpaši norāda, ka skripta sākumā ir nepieciešams importēt PHPMailer klases globālajā nosaukumu telpā. Un tiek dotas konkrētas atbilstošā koda rindas. Ir 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 sniegtas ar paskaidrojumiem un izceltas ar gaišu fonu.

Pārējā daļa, ieskaitot fragmentus, kas saistīti ar datu saņemšanu un apstrādi no formas, kas mums iepriekš bija jāizmanto citos procesoros, ir apzīmēta ar tumšu fonu. Tie tika detalizēti apspriesti iepriekš rakstā, kas īpaši veltīts jautājumiem par datu iegūšanu un pārbaudi no veidlapas PHP. Kur mēs runājām arī par universālo lietotāja funkciju veidlapu datu validēšanai un apstrādei pārbaudes_simbols().

Mēs ievietosim šo skriptu 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, "E-mail" , "1" , "/^+@(+\.)+(2,6)\z/i");

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

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

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

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

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

    $ brīdinājums = "Veidlapas dati netika nosūtīti. Tika atrastas šādas kļūdas:\n".$alert;

    ietver"alert.php" ;

    cits {

    // Bibliotēkas pievienošana

    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]" ; //E-pasta adrese, no kuras tiek sūtīta vēstule

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

    $ pasts -> isSMTP(); //Izmantojiet 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 e-pasta, kas savienots ar trešās puses e-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

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

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

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

    $ pasts -> Tēma = "Iesniegta atsauksmju veidlapa"; //E-pasta tēma (virsraksts)

    $ 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 e-pasta adrese, ja e-pasta klients neatbalsta HTML formātu

    $ pasts -> SMTPDbug = 0 ; //Iespējot SMTP atkļūdošanu: 0 — izslēgts (parastai 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ņā izvadiet ziņojumu par veiksmīgu vēstules nosūtīšanu

    cits {

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

    ietver"alert.php" ;

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

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

1. Sakarā ar to, ka vēstule ir nosūtīta no trešās puses pasta servisa, šeit tiek piemēroti konkrētajam SMTP serverim atbilstošie iestatījumi. Šajā gadījumā Yandex.Mail servera lietošanas gadījumā 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 arī no citiem resursiem. Lai to izdarītu, meklētājprogrammā vienkārši ievadiet atbilstošo vaicājumu, piemēram: “Yandex smtp serveris”. Kur var atrast lielu skaitu atsauču par šo jautājumu.

Līdzīgā veidā iestatījumu vērtības var iegūt no citiem SMTP serveriem. Zemāk ir Mail.ru palīdzības lapas ekrānuzņēmums, kurā tiek 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(33. poz.) - SMTP servera ports (465).

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

2. Īpašumā Lietotājvārds(30. poz.) nepieciešams norādīt pilnu domēna pastkastes adresi. Šajā gadījumā, " [aizsargāts ar e-pastu]".

Tomēr, ja vēstuļu sūtīšanai izmantojat citu kontu, nevis domēna pasta kontu, bet adresi, kas ir tieši saistīta ar pasta pakalpojumu, piemēram, " [aizsargāts ar e-pastu]", tad pieteikumvārdam ir jābūt tikai adreses daļai līdz zīmei "@". Šādā 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 kļūdu informācijas izvade ir atspējota. Bet, ja rodas problēmas ar pasta sūtīšanu vai atkļūdošanas laikā, ir iespējams izmantot citas vērtības, lai parādītu jēgpilnāku informāciju par kļūdu.

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. Pēc tam, kad viss ir atkļūdots un pārbaudīts, mēs atspējosim 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 atgriež 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 (52. poz.).

Ja kāda iemesla dēļ pastu nevarēja nosūtīt un attiecīgi metode nevarēja atgriezties true, tad šim stāvoklim tiks pievienots atbilstošs kļūdas ziņojums (55. poz.).

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

Pēc tam, kad esam izveidojuši skriptu pasta sūtīšanai, mums, protams, jāaplūko mūsu “radošuma” rezultāts. Vai mēs šeit visu esam ņēmuši vērā un vai neesam pieļāvuši nekādas kļūdas?

Lai to izdarītu, mēģināsim, kā paredzēts, nosūtīt ziņojumu 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ņā ir skaidrs, ka vēstuli nevar nosūtīt SMTP savienojuma problēmas dēļ.

Bet, kopš tagad īpašums SMTPDbug(50. poz.) tiek piešķirta vērtība 1, tad mēs varam redzēt detalizētu informāciju par notikušo kļūdu un noskaidrot tās rašanās iemeslu.

Nākamajā ekrānuzņēmumā redzams, ka, mēģinot izveidot savienojumu, tika atklāta autentifikācijas kļūda, kas nozīmē nepareizas pieteikšanās vai paroles izmantošanu.

Pēc paroles neatbilstības novēršanas (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 viss it kā izdevās un saņēmām ziņu, ka pasts ir veiksmīgi nosūtīts. Acīmredzot, izņemot apzināti ievadīto 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 mēs nosūtījām e-pasta ziņojumu ar nosaukumu "Atsauksmes" veiksmīgi sasniedza vietnes administratoru. Tajā pašā laikā vēstules pamattekstā ir viss saturs, ko ģenerējā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 varat atspējot SMTP atkļūdošanas režīmu, piešķirot rekvizītu SMTPDbug(50. poz.) vērtība 0.

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

Piemēram, nākamajā rakstā apskatīsim, kā nosūtīt apstiprinājuma e-pastus reģistrētā lietotāja konta datu atkopšanai.

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āzu 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, kas paredzēts e-pasta pārsūtīšanai pa TCP/IP tīkliem. Un visiem populārajiem e-pasta pakalpojumiem ir šādi protokoli.

Līdz ar vietējo serveru parādīšanos vairs nebija vajadzības izvēlēties mitināšanas pakalpojumu sniedzēju, lai pārbaudītu atsevišķu skriptu vai cms sistēmu veiktspēju, vēl jo mazāk par to maksāt. Ir daudz vienkāršāk visu pārbaudīt datorā, un pēc tam varat visiem parādīt, ko esat "padarījis".

Daudziem no šiem serveriem jau ir iebūvēta programmatūra un nepieciešamā funkcionalitāte darbam ar pastu; jums tā vienkārši ir pareizi jākonfigurē.

Lai pārbaudītu šāda pasta funkcionalitāti, ir nepieciešams minimums:

  • Varat izmantot Openserver kā vietējo serveri.
  • Un vienkāršs skripts, kura veidni var atrast tieši zemāk.
  • Varat 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ģē.

Pirmkārt, 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 parādīt ziņojumu par pasta sūtīšanu. Lai gan patiesībā sūtīšanu veic SMTP serveris, un skripts tikai ģenerē ziņojumu.

Piemēram, varat uzrakstīt šo:

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 varat saglabāt skriptu vietējā servera mapē.

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

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

  1. Servera palaišana
  2. Atveriet atvērtā servera 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 Yandex pastkastes.

Mēs saglabājam iestatījumus un pēc servera restartēšanas jūs varat piekļūt pašam skriptam. Mapē “Manas vietnes” atveriet mapi “sūtīt”, kurā atrodas iepriekš saglabātais index.php skripts.

Tiklīdz šim skriptam tiek piekļūts, jaunā pārlūkprogrammas logā tiks parādīta informācija, kas norāda, ka skripts ir pabeigts.

Pēc tam jums vajadzētu pārbaudīt savu pastkasti, kuras adrese bija norādīta skriptā, lai redzētu, vai vēstule ir pienākusi.

Ja tā nav, tas nozīmē, ka 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, taču katram gadījumam papildu informācija nenāks par ļaunu.

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

Un, lai katru reizi nepārbūvētu vietējo serveri, vislabāk ir konfigurē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. Tā ir ļoti ērta lieta un darbojas ļoti vienkārši.

Katram profilam (nav svarīgi, kā tas tiks saukts) ir jāveic savi iestatījumi, ja vien, protams, neplānojat izmantot skriptus, cms sistēmas un lietojumprogrammas ar dažādiem parametriem.
Ja nē, varat iztikt ar noklusējuma iestatījumiem.

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

Yandex dati tiek mainīti uz pasta ru datiem

Pasta sūtīšana caur smtp google

Lai iestatītu pasta sūtīšanu, izmantojot Google SMTP, ir jāpieliek nelielas pūles.

Pirmkārt, Google profila izveide ir grūtāka nekā citās Yandex un pasta ru sistēmās
Otrkārt, sistēma vienkārši nelaidīs vēstuli cauri, pat ja jūs norādāt savu pieteikšanās informāciju. Sākumā viņa nosūtīs vēstuli ar visu nepieciešamo informāciju par turpmākajiem norādījumiem.

Citādi Google tas ir konfigurēts tieši tādā pašā veidā. Mainās tikai visi dati.

Lai konfigurē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 kādai noteiktai vietnei būtu iespēja strādāt efektīvi un produktīvi, tās izveidei ir jāpieiet maksimāli atbildīgi un rūpīgi. Īpašu uzmanību ir pelnījusi sistēmas izvēle, kas tiks izmantota interneta veikala izveidei. 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 vietņu uzturēšanā un aizpildīšanā iesaistītajiem administratoriem, gan tiešsaistes veikalu klientiem. Daudzi cilvēki un uzņēmumi, kas saskaras ar jautājumu par sev piemērotas 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 patiesi efektīva instrumenta iegūšanu. Viens no fundamentālajiem jautājumiem, kas jāatrisina jau pirms mājas lapas izveides, būs, kā izlemt par piemērotāko CMS variantu. Tālāk mēs salīdzināsim divas CMS: Joomla vai OkayCMS un pievērsīsim uzmanību katras no tām funkcijām.

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

Gatavojoties izveidot savu vietni vai atvērt interneta veikalu, jāņem vērā un jāanalizē daudzi jautājumi, kā arī jārisina dažādas problēmas. Tikai šajā gadījumā jūs varat paļauties uz to, ka jūsu projekts nesīs pozitīvus rezultātus un spēs pilnībā attaisnot jūsu 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, iekšā

Plānojot veidot savu mājaslapu 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, ko izvēlēties: PrestaShop vai OkayCMS, iesakām izlasīt š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 īsteno vēstuļu sūtīšanu, izmantojot smtp serveri, kam 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 ir uz leju\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 gatavā 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, $tēma, $ziņa, $galvenes); ) ?>
Kam: Temats: 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ļūdām, izpildot skriptu.

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

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

Tālāk ir sniegti piemēri tā izmantošanai C# un VisualBasic valodās:

Piemērs C# valodai:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // izveidojot jaunu burtu ziņa.To.Pievienot(" [aizsargāts ar e-pastu]"); // adresāta adreses pievienošana ziņa.No = new MailAddress("from@" domēns.tld", "Sūtītāja vārds"); // norādot sūtītāja nosaukumu un adresi message.Subject = "Ziņojuma tēma"; // precizējot vēstules tēmu 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 teksts"; // norādot vēstules tekstu (pamattekstu). SmtpClient klients = new SmtpClient("smtp.site",25); // jauna savienojuma izveide ar serveri "smtp.site" 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 noklusējuma autorizācijas informācijas izmantošanu client.Credentials = new NetworkCredential("postmaster@ 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, kurā parādīta šīs metodes izmantošana: 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 ("admin@domēns.tld", "Sūtītāja_nosaukums") smtpMssg.To.Add (" [aizsargāts ar e-pastu]") " pievienojot adresāta adresi smtpMssg.Subject = "E-pasta tēma" "norāde uz vēstules tēmu smtpMssg.Body = "Ziņojuma teksts" " norāde uz vēstules tekstu (pamattekstu). smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " burtu kodējuma norāde 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āde par vēstules piegādes veidu SmtpMail.UseDefaultCredentials = False "pēc noklusējuma atspējot autorizācijas akreditācijas datu izmantošanu" SmtpMail.EnableSsl = False " atspējo nepieciešamību izmantot drošu savienojumu ar serveri SmtpMail.Credentials = new NetworkCredential("postmaster@ 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 izmantošanai VisualBasic valodai:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " jauna objekta "MailMessage" tipa deklarācija smtpMssg.From = "Sūtītāja_nosaukums domēns.tld>" "Sūtītāja vārda un adreses norāde smtpMssg.To = "admin@ domēns.tld" " norāde par saņēmēja adresi smtpMssg.BodyFormat = MailFormat.Text " vēstules formāta norāde smtpMssg.BodyEncoding = Kodēšana.UTF8 "norādot burtu kodējumu smtpMssg.Subject = "E-pasta tēma" "norāde uz vēstules tēmu smtpMssg.Body = "Ziņojuma teksts" " norāde uz vēstules tekstu smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "norādot uz servera nepieciešamību pēc SMTP autorizācijas smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domēns.tld") "lietotājvārds autorizācijai smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***parole***") "parole autorizācijai SmtpMail.SmtpServer = "smtp.site" ", norādot 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") = "postmaster@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 vai atbilstošu moduļu nosūtīšanai; apskatīsim populārākos.

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ēmā ir nepieciešams izmantot 25. portu 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šus pasta sistēmas datus, piemēram: smtp.site, kaste@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ēšanas 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, jāveic šādas darbības:

  • Lejupielādējiet arhīvu ar nepieciešamajiem failiem no mūsu vietnes ( 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 datus 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 rezerves kopiju domain.tld/www/netcat/admin/mail.inc.php;
  • lejupielādēt failus send_auth_mail.php Un mail.inc.php uz virtuālo vietni direktorijā 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