Php pasta sūtīšana, izmantojot Yandex smtp. Pasta sūtīšana, izmantojot SMTP no vietējā servera
PHPMailer ir ļoti ērta un populāra bibliotēka sūtot e-pastu ziņas no jūsu vietnes. Šajā rakstā ir aprakstīti bibliotēkas pamata iestatījumi un sniegti kodu piemēri ziņojumu sūtīšanai. PHPMailer sortimentā, iespējams, ir viss, ko jūs varētu vēlēties, strādājot ar pastu: sūtīšanu dažādos veidos, izmantojot dažādus serverus, tostarp izmantojot smtp — iespēja šifrēt un parakstīt jūsu vēstules, lai tās nenonāktu surogātpastu un daudz ko citu.
Jūs varat lejupielādēt PHPMailer bibliotēku no https://github.com/PHPMailer/PHPMailer (poga "Klonēt vai lejupielādēt").
Pirmkārt, es apskatīšu pāris vienkāršus piemērus lai būtu skaidrs, kā sūtīt e-pastus, izmantojot PHPMailer.
E-pasta sūtīšana, izmantojot funkciju mail(), izmantojot PHPMailer
Ja vēlaties nosūtīt e-pasta ziņojumus no sava hostinga, izmantojot savu pasta serveris, tad viss ir pavisam vienkārši un izskatīsies apmēram šādi:
// Iekļaut PHPMailer bibliotēku izmantot PHPMailer\PHPMailer\PHPMailer; pieprasīt "PHPMailer/PHPMailer.php"; // Izveidot vēstuli $mail = new PHPMailer(); $mail->setFrom(" [aizsargāts ar e-pastu]", "Ivans Ivanovs"); // no kura (e-pasts un vārds) $ pasts-> addAddress(" [aizsargāts ar e-pastu]", "Vasja Petrovs"); // kam (e-pasts un vārds) $ pasts->Subject = "Tests"; // vēstules priekšmets // html teksts burti $mail->msgHTML("
Sveiki!
Šī ir testa vēstule.
"); // Sūtīt if ($mail->send()) ( echo "Ziņojums nosūtīts!"; ) else ( echo "Kļūda: " . $mail->ErrorInfo; )Kā redzams, viss ir pavisam vienkārši: pieslēdzam bibliotēku, aizpildām no kā, kam vēstules tēmu un tekstu un nosūtām. E-pasta sūtīšana šādā veidā darbosies tikai no e-pasta adresēm jūsu domēnā (ja vien tās nav saistītas ar citiem e-pasta sūtītājiem).
E-pasta sūtīšana, izmantojot SMTP, izmantojot PHPMailer, izmantojot Yandex un Google piemēru
Varat arī nosūtīt vēstuli, izmantojot citu pasta sūtītāju, piemēram, caur Yandex. Kods izskatīsies apmēram šādi:
// Iekļaut PHPMailer bibliotēku izmantot PHPMailer\PHPMailer\PHPMailer; izmantot PHPMailer\PHPMailer\SMTP; pieprasīt "PHPMailer/PHPMailer.php"; pieprasīt "PHPMailer/SMTP.php"; // Izveidot vēstuli $mail = new PHPMailer(); $ pasts->isSMTP(); // Sūtīšana, izmantojot SMTP $ pasts-> Host = "smtp.yandex.ru"; // SMTP servera adrese $ pasts->SMTPAuth = true; // Iespējot SMTP autentifikāciju $ pasts->Lietotājvārds = "pieteikšanās"; // jūsu lietotājvārds (bez domēna un @) $mail->Parole = "parole"; // jūsu parole $mail->SMTPSecure = "ssl"; // ssl šifrēšana $ pasts->Ports = 465; // savienojuma ports $mail->setFrom(" [aizsargāts ar e-pastu]", "Ivans Ivanovs"); // no kura $mail->addAddress(" [aizsargāts ar e-pastu]", "Vasja Petrovs"); // kam $mail->Subject = "Pārbaude"; $mail->msgHTML("
Sveiki!
Šī ir testa vēstule.
"); // Sūtīt if ($mail->send()) ( echo "Ziņojums nosūtīts!"; ) else ( echo "Kļūda: " . $mail->ErrorInfo; )E-pasta ziņojumu sūtīšana, izmantojot Google ir viens brīdinājums: jums tas ir jādara google konts ļauj piekļūt neuzticamām lietojumprogrammām. Lai to izdarītu, atveriet savu kontu https://myaccount.google.com, dodieties uz sadaļu Drošība, dodieties uz sadaļu “Neuzticamās lietojumprogrammas, kurām ir piekļuve jūsu kontam” un tur pārslēdzieties uz “Atļauts”. Rakstīšanas laikā šī lapa ir https://myaccount.google.com/u/0/lesssecureapps.
$mail->Host = "smtp.gmail.com"; // SMTP servera adrese $ pasts->SMTPauth = true; // Iespējot SMTP autentifikāciju $ pasts->Lietotājvārds = "pieteikšanās"; // jūsu lietotājvārds $mail->Parole = "parole"; // jūsu parole $mail->SMTPSecure = "ssl"; // ssl šifrēšana $ pasts->Ports = 465; // savienojuma ports
Ja programmu sūtīšanai pa smtp palaižat pirmo reizi, tad pirms nosūtīšanas vēlams papildus izmantot $ pasts->SMTTPebug = 1; lai saņemtu visus ziņojumus no klienta un smtp servera, t.i. Ekrānā tiks parādīts viss savienojuma, autorizācijas utt. process, kas ir ļoti noderīgi programmas atkļūdošanai.
E-pasta sūtīšana ar pielikumu, izmantojot PHPMailer
Šeit viss ir pavisam vienkārši, jums vienkārši jāizmanto metode pievienot Pielikumu. Es sniegšu piemēru un vienlaikus parādīšu vēl dažus papildu funkcijas:
// Iekļaut PHPMailer bibliotēku izmantot PHPMailer\PHPMailer\PHPMailer; izmantot PHPMailer\PHPMailer\Exception; pieprasīt "PHPMailer/PHPMailer.php"; pieprasīt "PHPMailer/Exception.php"; // Izveidot vēstuli $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [aizsargāts ar e-pastu]", "Ivans Ivanovs"); // no kura $mail->addReplyTo(" [aizsargāts ar e-pastu]", "Ivans Ivanovs"); // atgriešanas adrese $ pasts-> addAddress(" [aizsargāts ar e-pastu]", "Vasja Petrovs"); // kam $mail->Subject = "Pārbaude"; // priekšmets $mail->msgHTML(file_get_contents("contents.html"), __DIR__); // iegūt "body" vēstules no faila $mail->AltBody = "Vienkārša teksta vēstule" // vienkārša teksta vēstule, ja klients neatbalsta html $mail->addAttachment("my_file.txt" // pievienot vienu failu $mail-); >addAttachment("phpmailer) .jpg"); // pievienot otro failu // Send if ($mail->send()) ( atbalss "Ziņojums nosūtīts!"; ) else ( echo "Kļūda: " . $mail- > ErrorInfo;
Varat pievienot vairākas adresātu adreses, izmantojot addAddress. Vai, ja nepieciešams, varat, gluži pretēji, notīrīt visas adresātu adreses, izmantojot šo metodi notīrīt adreses (). Varat notīrīt visus pielikumus, izmantojot notīrīt pielikumus().
Varat arī izmantot AddEmbeddedImage lai e-pastam pievienotu pielikumu (parasti attēlu), kas paredzēts lietošanai html kodā un nebūs pieejams lejupielādei. Piemērs attēla izmantošanai vēstulē, kas nav pieejama lejupielādei:
// Iekļaut PHPMailer bibliotēku izmantot PHPMailer\PHPMailer\PHPMailer; pieprasīt "PHPMailer/PHPMailer.php"; //Izveidot vēstuli $mail = new PHPMailer; $ pasts->IsHTML(true); $mail->setFrom(" [aizsargāts ar e-pastu]", "Ivans Ivanovs"); $ pasts-> addAddress(" [aizsargāts ar e-pastu]", "Vasja Petrovs"); $ pasts-> Subject = "Pārbaude"; $ pasts-> AddEmbeddedImage("phpmailer.jpg","testImage"); $ pasts-> Body = "
Attēls html kodā
"; // Sūtīt $mail->send();Tātad jūs varat nosūtīt burti ar attēliem, kas atrodas tikai vēstules pamattekstā, taču tos nevar lejupielādēt kā pielikumu. Šos attēlus var izmantot jebkur vēstules html kodā, jums vienkārši jānorāda attēla cid, ko izmantojāt AddEmbeddedImage, nevis url adresi.
Parakstīta un šifrēta e-pasta sūtīšana, izmantojot PHPMailer
Pēc noklusējuma PHPMailer šifrē visas nosūtītās ziņas. E-pasta šifrēšanu var atspējot tikai tad, ja sūtāt e-pastus, izmantojot SMTP, izmantojot kodu:
$ pasts-> SMTPSecure = false; $ pasts->SMTPAutoTLS = false;
Uz paraksta vēstuli ar DKIM parakstu, jums jāveic vairākas darbības:
- Ģenerējiet sava domēna privātās un publiskās atslēgas
- Pievienojiet DNS ierakstu TXT domēnam ar publisko atslēgu
- Pirms e-pasta sūtīšanas konfigurējiet DKIM parakstu programmā PHPMailer
Tagad es aprakstīšu katru soli nedaudz sīkāk.
Privāto un publisko atslēgu ģenerēšana
Ja jums ir Linux mitināšana un jums ir piekļuve Shell, atslēgu failu ģenerēšana ir tikpat vienkārša kā bumbieru lobīšana, jums ir jāpalaiž tikai 2 komandas ar parastajām lietotāja tiesībām:
Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout
Respektīvi, test-private.pem Un test-public.pem- tās ir privātās un publiskās atslēgas. Tie ir jāsaglabā mapē, kas nebūs pieejama vietnes apmeklētājiem vai citiem, izņemot jūs.
Ja nav iespējams izpildīt komandas čaulā, tad, lai ģenerētu privātās un publiskās atslēgas un saglabātu tās failos, varat izmantot šādu kodu:
$domēns = "test.ru"; // jūsu domēns $privatekeyfile = "test-private.pem"; // faila nosaukums, kurā tiks ierakstīta privātā atslēga $publickeyfile = "test-public.pem"; // faila nosaukums, kurā tiks ierakstīta publiskā atslēga if (file_exists($privatekeyfile)) ( echo "
Izmantojot esošās atslēgas
"; $privatekey = file_get_contents($privatekeyfile); $publickey = file_get_contents($publickeyfile); ) else ( echo "Izveidojiet atslēgas"; $pk = openssl_pkey_new([ "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]); openssl_pkey_export_to_file, $key_sl ils ($ pk $publickey = $pubKey["atslēga"];
Privātā atslēga (saglabājiet šo privātu!):
" . $privātā atslēga .""; atbalss"
Publiskā atslēga:
" . $publickey ."";
Uzmanību! Neaizmirstiet pārliecināties, ka mape, kurā tiks saglabāti faili, ir rakstāma.
DNS ieraksta pievienošana ar publisko atslēgu
DNS ieraksts ir nepieciešams, lai pasta serveri, kas saņems jūsu vēstules, varētu pārbaudīt vēstules parakstu, nolasot jūsu domēna DNS ierakstu. Parasti DNS ierakstu varat pievienot savā domēna vadības panelī vai mitināšanas vadības panelī. Ja nezināt, kā pievienot ierakstu, sazinieties ar mitināšanas pakalpojumu sniedzēja atbalstu.
Jums jāpievieno šāds DNS ieraksts:
Ieraksta nosaukums: mail._domainkey.test.ru. (beigās ir punkts ".")
TTL: 3600 (vai tas, kurš būs noklusējuma)
Ziņas veids: TXT
Nozīme: v=DKIM1; h=sha256; t=s; p=YOUR_PUBLIC_KEY
Ieraksta nosaukumā test.ru jāaizstāj ar jūsu domēna vārdu. Jūs aizstājat vārdus "YOUR_PUBLIC_KEY" ar tekstu, ko saņēmāt iepriekšējā darbībā aiz "Publiskā atslēga", bez "-----BEGIN PUBLISKĀ ATSLĒGA-----" un "-----END PUBLISKĀ ATSLĒGA- -- --", tikai pati atslēga. Šajā gadījumā ir nepieciešamas visas galvenās līnijas savienot vienā garā rindā lai nebūtu rindiņu pārtraukumu.
DKIM paraksta iestatīšana programmā PHPMailer un e-pasta nosūtīšana
Tagad atliek tikai pirms vēstules nosūtīšanas veikt dažus PHPMailer iestatījumus un tā tiks parakstīta. Es domāju, ka šāds piemērs visu paskaidros:
// Iekļaut bibliotēku izmanto PHPMailer\PHPMailer\PHPMailer; pieprasīt "PHPMailer/PHPMailer.php"; // Izveidot vēstuli $mail = new PHPMailer; $mail->CharSet = "UTF-8"; $mail->setFrom(" [aizsargāts ar e-pastu]"); $ pasts-> addAddress(" [aizsargāts ar e-pastu]"); $mail->Subject = "Šis ir tests"; $mail->msgHTML("
Šis ir pārbaudījums
"); // DKIM paraksta iestatīšana $mail->DKIM_domain = "test.ru"; $mail->DKIM_private = "test-private.pem"; $mail->DKIM_selector = "pasts"; // Sūtīt $ pasts->sūtīt();Protams test.ru jums vajadzētu mainīt savu domēna vārdu un test-private.pem uz pilnu privātās atslēgas faila ceļu un nosaukumu, kas tika izveidots atslēgas ģenerēšanas posmā.
Tagad jūsu e-pasta ziņojumi, kas nosūtīti, izmantojot PHPMailer, tiks parakstīti DKIM ar jūsu privāto atslēgu.
Lai kādai 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 rūpīgāk. Ī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īvi rezultāti un iegūt patiesi efektīvu rīku. 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.
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ā vasara, vasarnīca, viesi, mežs, ūdens un daudz kas cits, kas man neļāva 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ā, 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
- Avota faili vietne
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, ļaus nosūtīt e-pastu, izmantojot pasta serveri 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).