Sähköpostien lähettäminen smtp:n kautta php-valtuutuksella. Sähköpostin lähettäminen SMTP:n kautta PHP:ssä. Php-sähköpostin lähettäminen SMTP-komentosarjan asennuksen kautta

Sähköposti PHP

Tämä toiminto toteutetaan oletusarvoisesti sähköpostin lähettämisenä. Tämä toiminto ei vaadi kolmannen osapuolen palvelinta sähköpostin välittämiseen. Tämän toiminnon oikeellisuuden tarkistamiseksi luo vain test.php-tiedosto sivuston kansioon ja sijoita sinne seuraava koodi:

Missä sen sijaan "EMAILVASTAANOTTAJA" Anna sähköpostiosoite, johon kirje lähetetään.

Paikka Tämä tiedosto sivustosi juureen.

Kirjoita seuraavaksi osoitepalkkiin www.YourDomain/test.php. Jos kirje vastaanotetaan määritettyyn sähköpostiin, isännöinti toimii oikein kirjeiden lähetystoiminnon kanssa " Sähköposti PHP" . On mahdollista, että kirje päätyi roskapostiin, joten se on myös tarkistettava.

Jos kirje saapui käsittämättömällä koodauksella, vaihda rivi: "Tarkistetaan postin lähetystä" päällä "Tarkistaa sähköpostin lähetystä", "Content-type:text/html;charset=utf-8".

Ja toista kirjeen lähettäminen selaimesi osoitepalkin kautta.

Jos testikirje ei yllä mainittujen manipulaatioiden jälkeen pääse lopulliselle vastaanottajalle, sinun on otettava yhteyttä isännöinnin tekniseen tukeen.

Puutteiden joukossa tätä menetelmää On syytä huomata, että työ ei ole pysyvää tätä menetelmää. Sähköpostien lähettämisessä voi esiintyä häiriöitä isännöintipuolella.

Tämän menetelmän suurin haittapuoli on, että sähköpostipalvelut (gmail, mail.ru, yandex.ru) eivät tunnista kaikkia asiakkaiden sähköposteihin lähetettyjä kirjeitä, koska ne lähetettiin suoraan verkkosivustoltasi.

Gmail-sähköpostipalvelu näyttää nämä kirjaimet kysymysmerkillä ja allekirjoituksella: "Gmail-järjestelmä ei voinut vahvistaa, että tämä kirje on lähetetty verkkotunnuksesta YourDomain. Tämä voi olla roskapostia."

Tämän tilanteen välttämiseksi .

SMTP (Simple Mail Transfer Protocol)

SMTP - sähköpostin siirtoprotokolla. Kaiken kaikkiaan tarvitset itse SMTP-palvelimen, jotta voit määrittää sähköpostin lähetyksen tällä protokollalla. Yleisin vaihtoehto yrityksen (verkkotunnuksen) sähköpostin yandex.ru käyttämiseen SMTP-palvelimena on https://pdd.yandex.ru/.

Ensinnäkin se on välttämätöntä tili (posti) yandex, jonka perusteella verkkotunnuksellesi luodaan sähköpostit: “order@YourDomain” “info@YourDomain”... Päätili ei näy missään ja sitä käytetään jatkossa vain verkkotunnussähköpostien luomiseen sen perusteella.

Kun olet kirjautunut sisään henkilökohtainen tili Yandex-verkkotunnuksen sähköposti luodaan linkin https://pdd.yandex.ru/ avulla. Tämä on verkkotunnuksen sähköposti, jonka käyttäjät näkevät Lähettäjä-kentässä.

"Lähettäjä"-kenttä on pakollinen lähetettäessä sähköposteja SMTP:n kautta. SMTP:n käyttäminen kirjeiden lähettämiseen, yhdistelmä " Verkkotunnus" - "sähköposti", jolloin postipalvelut tunnistavat kirjaimet.


Tämän menetelmän haitoista on syytä huomata mahdottomuus "ladata" verkkotunnuksen postimuotokuvaa, koska itse sähköpostipalvelut eivät vielä tarjoa tätä toimintoa.

2019-08-05

Hei rakas vierailija!

Pyydän anteeksi viivästystä blogin päivittämisessä. Mutta tälle on täysin ymmärrettävä selitys. Loppujen lopuksi oli kesä, dacha, vieraat, metsä, vesi ja paljon muuta, mikä ei antanut minun käsitellä verkkosivuston luomiseen liittyviä kysymyksiä. Mutta nyt olen hieman vapautunut, vieraat ovat lähteneet ja uskon, että nyt pystyn ehdottomasti kiinnittämään asiaan asianmukaista huomiota.

Joten sen jälkeen, kun viime artikkelissa liitimme verkkotunnuksemme sähköpostin johonkin sähköpostipalveluun, katsotaan nyt, kuinka voit lähettää sähköpostia sivustolta. Lisäksi siten, että kirjeemme eivät päädy roskapostiin, vaan ne toimitetaan luotettavasti, suurella todennäköisyydellä vastaanottajillemme.

Yleensä PHP:ssä on sisäänrakennettu mail()-toiminto kirjeiden lähettämiseen. Mutta on huomattava, että huolimatta tämän menetelmän yksinkertaisuudesta (tässä tapauksessa kirjeiden lähettämiseen riittää, että määritetään vain yksi koodirivi tietyillä parametreilla), tämän vaihtoehdon käytöllä on merkittävä haitta, joka liittyy roskapostin ongelmaan. .

Tosiasia on, että sähköpostipalvelimien roskapostin estosuodattimet vastaanottajan puolella eivät todellakaan suosi mail()-toiminnon kautta lähetettyjä kirjeitä. Ja useimmissa tapauksissa tällaiset viestit suodatetaan tai jopa poistetaan ennen kuin ne saapuvat vastaanottajalle.

Ja tällaisten tapausten eliminoimiseksi mahdollisimman paljon käytetään yleensä toista vaihtoehtoa, jossa kirjeet lähetetään ikään kuin sen olisi tehnyt kolmannen osapuolen postipalvelu.

Tätä menetelmää kutsutaan sähköpostin lähettämiseksi SMTP:n kautta valtuutetulla tavalla. Mitä tarkastelemme tänään lomakkeen lähettämisen esimerkin avulla palautetta. Lisäksi käytämme tähän melko tunnettua ja suosittua PHPMailer-kirjastoa, jonka avulla voit yksinkertaisesti järjestää kirjeiden lähettämisen SMTP:n kautta.

  • Miten lähetämme palautekirjeitä
  • Palautelomakkeen luominen
  • PHPMailer-kirjaston asentaminen
  • Luomme skriptin sähköpostin lähettämiseen SMTP:n kautta
  • Sähköpostin lähetystä tarkistetaan
  • Sivuston lähdetiedostot

Miten lähetämme palautekirjeitä

Ennen kuin aloitat käytännön työ Palautekirjeiden lähettämisen jälkeen päätämme ensin, miten teemme sen.

Palautelomake on suunniteltu antamaan käyttäjälle mahdollisuus kommunikoida sivuston ylläpitäjän kanssa viestinsä välittämiseksi. Tyypillisesti tämä lomake koostuu useista kentistä ja "Lähetä"-painikkeesta.

Periaatteessa sähköpostin lähettämiseen riittää vain muutama kenttä, joka antaa riittävästi tietoa käyttäjästä ja viestin sisällöstä, kuten:

  • "Nimi" - syöttääksesi viestin lähettäjän nimen;
  • "Sähköposti" - osoite Sähköposti lähettäjä;
  • "Viestin aihe";
  • "Viestiteksti".

Vaikka voit lisätä muitakin. Esimerkiksi puhelinnumero, jos se on todella tarpeen.

Meidän tapauksessamme tällaiset kirjeet lähetetään sivuston ylläpitäjän osoitteeseen oikeasta postilaatikosta, jolla on valtuutus postipalveluun, johon verkkotunnuksemme on yhdistetty.

Koska edellisessä artikkelissa keskityimme verkkotunnuksen sähköpostin yhteyden tarkistamiseen Yandex.Mail-palveluun, lähetämme sähköpostia tälle vaihtoehdolle. Vaikka tämä ei ole tärkeää. Alla näet ne vaihtoehdot, joita muutettuna voit lähettää sähköpostin kautta sähköpostipalvelin Mail.ru.

Todellisena postilaatikkona, josta kirjeet lähetetään, käytämme juuri luodun verkkotunnuksen sähköpostin käyttäjän tiliä, vaikkapa osoitteella [sähköposti suojattu]. Ja me lähetämme nämä kirjeet osoitteeseen Postilaatikko järjestelmänvalvoja [sähköposti suojattu], jonka loimme aiemmin edellisessä artikkelissa.

Näin ollen palautelomakkeen kirjeen lähettäjä on postilaatikko [sähköposti suojattu]., ja vastaanottaja - [sähköposti suojattu]. Tässä tapauksessa kaikki tiedot viestin sisällöineen lähettäneestä käyttäjästä välitetään lähetetyn kirjeen rungossa.

Palautelomakkeen luominen

Kun olemme päättäneet kirjeiden lähetysmenettelystä, luomme nyt palautelomakkeen, jolla teemme tämän.

Alla on tämän lomakkeen HTML-koodi, jonka sijoitamme "Yhteystiedot"-sivulle (tiedosto kontakty.php artikkelihakemistossa).

    "artikla" >

    Yhteystiedot

    Palaute

    "ottaa yhteyttä" toiminta = "#" menetelmä = "lähettää" >

    Palautelomake

    Jos sinulla on kysymyksiä, pyyntöjä ja yritysehdotuksia, voit ottaa meihin yhteyttä alla olevalla palautelomakkeella.

    "kontaktilohko" >

    "kontaktisyöttö" >

    "teksti" id = "yhteyshenkilön nimi" nimi = "yhteyshenkilön nimi" otsikko = "Nimen tulee olla venäjäksi ja sisältää vähintään 3 merkkiä" malli = "{3,}" vaaditaan >

  1. "tyhjä kontakti" >

    "kontaktisyöttö" >

    "sähköposti" id = "yhteyssähköposti" nimi = "yhteyssähköposti" vaaditaan >

  2. "kontakti-aihe" >

  3. "kontakti-kommentti" >

  4. "yhteyspainike" >

    "Lähetä" nimi = "yhteyspainike" arvo = "Lähettää" >

Kuva 1 Palautelomakkeen HTML-koodi

Voit nähdä, miltä tässä näkyvä palautelomake lopulta näyttää seuraavasta kuvakaappauksesta.

Täten vaadittu lomake luotu. Ja nyt voit siirtyä tietojen käsittelyyn ja lähettämiseen sähköpostiviestin muodossa.

PHPMailer-kirjaston asentaminen

Kuten aiemmin mainittiin, käytämme sähköpostin lähettämiseen PHPMailer-kirjastoa, joka yksinkertaistaa huomattavasti sähköpostin lähettämistä SMTP-protokolla kolmannen osapuolen sähköpostipalvelussa.

Asentaaksesi sen sinun on ladattava tarvittavat tiedostot. Tämä voidaan tehdä GitHub-verkkopalvelusta Composerilla (PHP:n pakettiriippuvuuden hallinta). Tai lataa tarvittavat tiedostot tavalliseen tapaan.

kuvakaappaus 73

Alla on GitHub-verkkopalvelusivu, jonne on merkitty linkki PHPMailer-kirjaston tavalliseen lataukseen.

Sitä paitsi, uusin versio 6.0.7, joka on tallennettu tätä artikkelia kirjoitettaessa, voidaan ladata liitteenä olevista materiaaleista.

Joka tapauksessa tuloksena oleva arkistotiedosto tulee purkaa, minkä jälkeen purettu PHPMailer-master-kansio sisältöineen tulee sijoittaa sivuston juureen. Samalla voit yksinkertaisuuden vuoksi nimetä sen uudelleen PHPMailer. Alla on PHPMailer-kansion sisältö, joka on sijoitettu sivuston juurihakemistoon.

Siten asensimme PHPMailer-kirjaston. Tämän jälkeen voimme aloittaa skriptin luomisen, jolla lähetämme sähköpostiviestejä verkkosivustoltamme.

Luomme skriptin sähköpostin lähettämiseen SMTP:n kautta

Skriptin laatimiseen riittää, että käytämme GitHub-sivulla annettuja PHPMailerin käyttösuosituksia, joita käytimme aiemmin kirjaston lataamiseen.

Ne osoittavat erityisesti, että skriptin alussa on tuotava PHPMailer-luokat globaaliin nimiavaruuteen. Ja vastaavan koodin tietyt rivit annetaan. On myös esimerkkejä PHPMailerin ominaisuuksien ja menetelmien käytöstä, mukaan lukien mahdollisuus lähettää sähköpostia SMTP:n kautta.

Mutta jos tämä ei riitä, voit käyttää myös dokumentaatiota, joka sisältää kuvauksen kaikista tämän kirjaston ominaisuuksista ja menetelmistä.

kuvakaappaus 74

Alla on komentosarjakoodi sähköpostin lähettämiseen palautelomakkeesta SMTP:n kautta valtuutetulla tavalla. Jossa kaikki PHPMaileriin liittyvät rivit on selitetty ja korostettu vaalealla taustalla.

Muu osa, mukaan lukien lomakkeen tietojen vastaanottamiseen ja käsittelyyn liittyvät fragmentit, joita jouduimme aiemmin käyttämään muissa prosessoreissa, on merkitty tummalla taustalla. Niitä käsiteltiin yksityiskohtaisesti aiemmin artikkelissa, joka oli omistettu erityisesti PHP:n lomakkeen tietojen hankkimiseen ja tarkistamiseen. Puhuimme myös yleisestä käyttäjätoiminnosta lomaketietojen validointiin ja käsittelyyn check_symbol().

Sijoitamme tämän skriptin samaan kontakty.php-tiedostoon, johon olemme aiemmin luoneet palautelomakkeen.

    //----Skripti sähköpostin lähettämiseen SMTP:n kautta PHPMailerin avulla----

    //Tuo PHPMailer-luokat globaaliin nimiavaruuteen. Niiden tulee olla skriptin yläosassa, ei funktion sisällä

    käyttää PHPMailer\PHPMailer\PHPMailer ;

    käyttää PHPMailer\PHPMailer\Poikkeus ;

    jos (!tyhjä($_POST["contact-button" ])) (

    $nimi = $_POST["yhteyshenkilön nimi" ];

    $nimi = check_symbol ($nimi, "Nimi" , "1" , "/^+\z/iu" );

    $sähköposti = $_POST["yhteyssähköposti" ];

    $email = check_symbol ($email, "Sähköposti" , "1" , "/^+@(+\.)+(2,6)\z/i");

    $aihe = $_POST["yhteystieto-aihe" ];

    $aihe = check_symbol ($aihe, "Viestin aihe" , "1" , "0" );

    $kommentti = $_POST["contact-comment" ];

    $kommentti = check_symbol ($kommentti, "Viestiteksti", "1" , "0" );

    jos (!tyhjä($GLOBALS["hälytys" ])) (

    $hälytys = "Lomaketietoja ei lähetetty. Seuraavat virheet löytyivät:\n".$hälytys;

    sisältää"alert.php" ;

    muu {

    //Kirjaston yhdistäminen

    vaatia"PHPMailer/src/PHPMailer.php" ;

    vaatia"PHPMailer/src/Exception.php" ;

    vaatia"PHPMailer/src/SMTP.php" ;

    $posti = Uusi PHPMailer(); //Luokan alustus

    $from = " [sähköposti suojattu]" ; //Sähköpostiosoite, josta kirje lähetetään

    $to = " [sähköposti suojattu]" ; //Vastaanottajan osoite

    $posti -> isSMTP(); //Käytä SMTP-protokollaa

    $mail -> Host = "smtp.yandex.ru" ; //Sähköpostipalvelimen osoite

    $posti -> SMTPAuth = totta ; //Ota valtuutustila käyttöön

    $mail -> Käyttäjätunnus = " [sähköposti suojattu]" ; //Kirjaudu sisään verkkotunnuksen sähköpostista, joka on yhdistetty kolmannen osapuolen sähköpostipalveluun (tässä tapauksessa Yandex.Mail)

    $mail -> Salasana = "27MrDon89" ; //Salasana verkkotunnuksen sähköpostiin

    $mail -> SMTPSecure = "ssl" ; //Salausprotokolla

    $posti -> Portti = "465" ; //SMTP-palvelimen portti

    $posti -> CharSet = "UTF-8" ; //Koodaus

    $mail -> setFrom ($from, "Järjestelmänvalvoja" ); //Lähettäjän osoite ja nimi

    $mail -> addAddress ($to, "Järjestelmänvalvoja" ); //Vastaanottajan osoite ja nimi

    $mail -> isHTML ( totta ); //Aseta sähköpostin muoto HTML

    $posti -> Aihe = "Palautelomake lähetetty"; //Sähköpostin aihe (otsikko)

    $posti -> Body = "

    Lähettäjän nimi: $nimi

    Lähettäjän osoite: $sähköposti

    Viestin aihe: $aihe

    Viestin sisältö: $kommentti



    " ; //Viestin sisältö

    $mail -> AltBody = "Vaihtoehtoinen kirjeteksti"; //Vaihtoehtoinen sähköposti, jos sähköpostiohjelma ei tue HTML-muotoa

    $posti -> SMTPDbug = 0 ; //Ota SMTP-virheenkorjaus käyttöön: 0 - pois (normaalikäyttöön), 1 = asiakasviestit, 2 - asiakas- ja palvelinviestit

    jos($posti -> lähetä()) (

    $hälytys = "Viesti lähetetty"; //Lähetä selainvalintaikkunaan viesti kirjeen onnistumisesta

    muu {

    $hälytys = "Virhe, sähköpostia ei voi lähettää:".$mail -> ErrorInfo ; //Lähetä virheilmoitus

    sisältää"alert.php" ;

Kuva 5 Skripti sähköpostin lähettämiseen SMTP:n kautta valtuutetulla tavalla

Kuten näet, kaikki sähköpostiviestin lähettämiseen suoraan liittyvät rivit, joissa tarvittavat menetelmät ja ominaisuudet on määritetty, on liitetty kommentteihin. Siksi ei ole järkevää toistaa itseämme, mutta voimme viipyä vain joissakin niistä, jotka todellakin vaativat lisäselityksiä, nimittäin:

1. Koska kirje on lähetetty kolmannen osapuolen sähköpostipalvelusta, tässä käytetään tiettyä SMTP-palvelinta vastaavia asetuksia. Tässä tapauksessa Yandex.Mail-palvelimen käyttötapauksessa käytetään seuraavia ominaisuusarvoja:

  • Omaisuus Isäntä(pos.28) - Postipalvelimen osoite arvolla smtp.yandex.ru;
  • Omaisuus SMTPSecure
  • Omaisuus Portti

Nämä ominaisuusarvot on otettu Yandex.Help-sivulta, joka näkyy seuraavassa kuvakaappauksessa.

Mutta tällaista tietoa voidaan saada myös muista lähteistä. Voit tehdä tämän kirjoittamalla sopivan kyselyn hakukoneeseen, esimerkiksi: "Yandex smtp-palvelin". Mistä löydät suuren määrän viittauksia tähän aiheeseen.

Samalla tavalla asetusarvot voidaan saada muilta SMTP-palvelimista. Alla on kuvakaappaus Mail.ru-ohjesivusta, joka näyttää Mail.ru-postipalvelun SMTP-palvelimen asetukset.

Ja näin ollen, jos Mail.ru:ta käytetään kolmannen osapuolen SMTP-palvelimena, tulee käyttää seuraavia PHPMailer-luokan ominaisuuksien arvoja:

  • Omaisuus Isäntä(pos.28) - Postipalvelimen osoite (smtp.mail.ru);
  • Omaisuus SMTPSecure(pos.32) - Salausprotokolla (ssl);
  • Omaisuus Portti(pos. 33) - SMTP-palvelinportti (465).

Samanlaista lähestymistapaa tulisi soveltaa muihin sähköpostipalveluihin.

2. Kiinteistössä Käyttäjätunnus(pos. 30) on tarpeen ilmoittaa verkkotunnuksen postilaatikon täydellinen osoite. Tässä tapauksessa, " [sähköposti suojattu]".

Jos kuitenkin käytät muuta tiliä kuin verkkotunnuksen sähköpostitiliä kirjeiden lähettämiseen, mutta suoraan sähköpostipalveluun liittyvää osoitetta, esim. [sähköposti suojattu]", silloin sisäänkirjautumisen tulee olla vain osa osoitteesta @-merkkiin asti. Tässä tapauksessa kirjautumistunnuksella olisi arvo "palaute".

3. PHPMailer tarjoaa ominaisuuden SMTPDbug(pos. 50), jonka avulla voit näyttää eri tasoisia virheitä selaimen näytöllä. Tämä ominaisuus yksinkertaistaa huomattavasti ongelmien etsimistä komentosarjan virheenkorjauksessa.

Tyypillisesti normaalitilassa, kun arvo on asetettu 0:ksi, yksityiskohtaisen virheinformaation ulostulo on poissa käytöstä. Mutta jos ongelmia ilmenee sähköpostin lähettämisessä tai virheenkorjauksen aikana, on mahdollista käyttää muita arvoja näyttämään merkityksellisempää tietoa virheestä.

Jotta nähdään, miltä tämä näyttää käytännössä, laitetaan asetuksiin väliaikaisesti virhe. Esimerkiksi verkkotunnuksen sähköpostin salasanassa (ominaisuus Salasana, pos. 31). Ja myös näyttää yksityiskohtaiset tiedot virheestä, joka on väliaikaisesti asetettu omaisuuteen SMTPDbug(pos.50) arvo 1. Kun kaikki on vianjäljitetty ja tarkistettu, poistamme SMTP-virheenkorjaustilan käytöstä ja korvaamme 1:n arvolla 0.

Skriptin viimeisessä osassa, kun kaikki tarvittavat ominaisuudet ja menetelmät on määritetty, menetelmää käytetään kirjeen lähettämiseen lähettää()) (pos. 51). Ja jos kirje lähetetään, ja menetelmä lähettää() esinettä varten $postia palauttaa tosi, sitten selainikkunassa muuttujan kautta $hälytys Näyttöön tulee viesti onnistuneesta sähköpostin lähettämisestä (pos. 52).

Jos postia ei jostain syystä voitu lähettää, eikä menetelmä siten voinut palauttaa true, tähän tilaan tulee vastaava virheilmoitus (pos. 55).

Sähköpostin lähetystä tarkistetaan

Kun olemme luoneet skriptin postin lähettämistä varten, meidän on luonnollisesti tarkasteltava "luovuutemme" tulosta. Olemmeko ottaneet kaiken huomioon, emmekä ole tehneet virheitä?

Tätä varten yritetään lähettää palautelomakkeella käyttäjältä viesti sivuston ylläpitäjälle tarkoitetulla tavalla. Alla on kuvakaappaus palautelomakkeesta, jonka kentät on täytetty ennen sen lähettämistä.

Ja tässä on lomakkeen lähettämisen tulos.

Jos selaimen valintaikkunan viestistä käy selvästi ilmi, että kirjettä ei voida lähettää SMTP-yhteyden ongelman vuoksi.

Mutta nyt omaisuutta SMTPDbug(pos. 50) on annettu arvo 1, niin voimme nähdä yksityiskohtaiset tiedot tapahtuneesta virheestä ja selvittää sen esiintymisen syyn.

Seuraava kuvakaappaus osoittaa, että yhteyden muodostamisen yhteydessä havaittiin todennusvirhe, mikä tarkoittaa väärän kirjautumistunnuksen tai salasanan käyttöä.

Kun salasanaepäsopivuus on poistettu (aiemmin väärää salasanaa käytettiin virheen lisätietojen tarkistamiseen), yritämme lähettää sähköpostin uudelleen.

Tällä kertaa kaikki näytti menevän hyvin ja saimme viestin, että postin lähetys onnistui. Ilmeisesti emme tehneet muita virheitä lukuun ottamatta tarkoituksella syötettyä väliaikaista virhettä verkkotunnuksen sähköpostin salasanaan.

Mutta varmistaaksemme, että kirje todella toimitettiin vastaanottajalle, syötetään posti osoitteen kanssa [sähköposti suojattu] ja katso tulosta.

Kuten näette, kirje osoitteesta [sähköposti suojattu], josta lähetimme sähköpostiviestin nimeltä "Palaute" onnistuneesti sivuston ylläpitäjälle. Samanaikaisesti kirjeen runko sisältää kaiken sisällön, jonka olemme luoneet käsikirjoituksessa palautelomakkeesta saaduilla tiedoilla, nimittäin:

  • Lähettäjän nimi: Nikolay;
  • Lähettäjän osoite: [sähköposti suojattu];
  • Viestin aihe: Tarkistetaan postin lähetystä;
  • Viestin sisältö: Testiviesti.

Nyt, kun olet tarkistanut sähköpostin lähettämisen onnistuneesti, voit poistaa SMTP-virheenkorjaustilan käytöstä määrittämällä ominaisuuden SMTPDbug(pos.50) arvo 0.

Näin ollen saimme valmiiksi tehtävän luoda työkalu sähköpostin lähettämiseen SMTP:n kautta valtuutetulla kolmannen osapuolen sähköpostipalvelimella.

Esimerkiksi seuraavassa artikkelissa tarkastelemme, kuinka lähettää vahvistussähköpostit rekisteröidyn käyttäjätilin tietojen palauttamiseksi.

Sivuston lähdetiedostot

Sivuston lähdetiedostot tässä artikkelissa tehdyillä päivityksillä voidaan ladata liitteenä olevista lisämateriaaleista:

  • www-hakemistotiedostot
  • MySQL-tietokantataulukot

Lähettämällä sähköpostia SMTP:n kautta paikalliselta palvelimelta voit testata viestien lähettämistä paikallisella koneella sijaitsevalta sivustolta tai yksinkertaisemmin paikalliselta palvelimelta. Voit tehdä tämän käyttämällä mitä tahansa sähköpostipalvelua Yandex, Google tai mail.ru.

Ensinnäkin SMTP (Simple Mail Transfer Protocol) on laajalti käytetty verkkoprotokolla, joka on suunniteltu sähköpostin lähettämiseen TCP/IP-verkkojen kautta. Ja kaikilla suosituilla sähköpostipalveluilla on tällaiset protokollat.

Paikallisten palvelimien tultua käyttöön ei enää tarvinnut valita isännöintipalveluntarjoajaa yksittäisten komentosarjojen tai cms-järjestelmien suorituskyvyn tarkistamiseksi, saati maksaa siitä. On paljon helpompaa testata kaikkea tietokoneella, ja sitten voit näyttää kaikille, mitä olet "tehnyt".

Monissa näistä palvelimista on jo sisäänrakennettu ohjelmisto ja tarvittavat toiminnot sähköpostin kanssa työskentelemiseen; sinun on vain määritettävä se oikein.

Tällaisten sähköpostien toimivuuden tarkistamiseksi vaaditaan vähimmäisvaatimus:

  • Voit käyttää Openserveria paikallisena palvelimena.
  • Ja yksinkertainen käsikirjoitus, jonka malli löytyy juuri alta.
  • Voit käyttää mitä tahansa sähköpostipalvelinta.

Php-sähköpostin lähettäminen SMTP-komentosarjan asennuksen kautta

Yksinkertaista komentosarjamallia, joka voidaan kopioida alla tai ladata sadoilta samanlaisilta sivustoilta, on muokattava.

Ensin sinun on muutettava joitain arvoja komentosarjamallissa.
to — vaihda postiosoite, johon postiviesti lähetetään.
aihe - kirjeen aihe
viesti — itse viesti tai kirjeen runko.

Esimerkki käsikirjoituksestani:

Voit tietysti laajentaa toimintoja hieman ja saada skriptin näyttämään viestin sähköpostin lähettämisestä. Vaikka itse asiassa se on SMTP-palvelin, joka lähettää, ja komentosarja luo vain viestin.

Voit kirjoittaa esimerkiksi tämän:

Kaikkien korvattujen arvojen on oltava lainausmerkeissä, muuten skripti antaa virheen. Tämän jälkeen voit tallentaa komentosarjan paikallisen palvelimen kansioon.

Esimerkiksi: domains/send/index.php ja aloita sähköpostin lähettämisen asetukset SMTP opensrerverin kautta.

Posti saapuu mihin tahansa osoitteeseen, joka määritetään skriptissä arvon sijaan 'on' , mutta tämän sähköpostin käsittelee ja lähettää täsmälleen se SMTP, joka määritetään openserver-asetuksissa.

  1. Palvelimen käynnistäminen
  2. Avaa openserver-moduuli "posti"-valikon asetuksilla
  3. Täytämme kaikki kentät kuvan osoittamalla tavalla, samalla kun korvaamme käyttäjänimen, lähettäjän sähköpostin ja salasanan oikeasta Yandex-postilaatikosta.

Tallennamme asetukset ja palvelimen uudelleenkäynnistyksen jälkeen pääset käsiksi itse skriptiin. Avaa "Omat sivustot" -kansiosta "lähetä" -kansio, jossa aiemmin tallennettu index.php-skripti sijaitsee.

Heti kun tätä komentosarjaa käytetään, uuteen selainikkunaan ilmestyy tietoja, jotka osoittavat, että komentosarja on valmis.

Tämän jälkeen sinun tulee tarkistaa postilaatikostasi, jonka osoite oli skriptissä, nähdäksesi, onko kirje saapunut.

Jos sitä ei ole, se tarkoittaa, että jotain ei ole määritetty oikein tai kirje päätyi roskapostikansioon.

Kaikki muut asetukset näyttävät samanlaisilta, mutta varmuuden vuoksi lisätiedot eivät ole haitallisia.

Jotta voit määrittää sähköpostin lähettämisen SMTP mail ru -palvelun kautta, sinun on vain korvattava Yandex-parametrit mail ru -parametreilla.

Ja jotta paikallista palvelinta ei rakennettaisi uudelleen joka kerta, on parasta määrittää erilaisia ​​openserver-profiileja. Kuinka tämä tehdään, näytetään opetusvideossa.

Tässä tapauksessa riittää, että lataat profiilin ja kaikki tälle profiilille määritetyt asetukset ovat käytettävissä palvelimen uudelleenkäynnistyksen jälkeen. Se on erittäin kätevä asia ja toimii hyvin yksinkertaisesti.

Jokaiselle profiilille (ei ole väliä miksi sitä kutsutaan) on tehtävä omat asetukset, ellet tietenkään aio käyttää komentosarjoja, cms-järjestelmiä ja sovelluksia eri parametreillä.
Jos ei, voit selviytyä oletusasetuksista.

Mitä tulee SMTP-postiin ru, kaikki on identtistä täällä.

Yandex-tiedot muutetaan mail ru -tiedoiksi

Sähköpostin lähettäminen smtp googlen kautta

Sähköpostin lähettämisen määrittäminen Google SMTP:n kautta vaatii hieman vaivaa.

Ensinnäkin profiilin luominen Googlessa on vaikeampaa kuin muissa Yandex- ja mail ru -järjestelmissä
Toiseksi, järjestelmä ei yksinkertaisesti päästä kirjettä läpi, vaikka antaisit kirjautumistietosi. Aluksi hän lähettää kirjeen, joka sisältää kaikki tarvittavat tiedot lisäohjeista.

Muuten Googlelle se on määritetty täsmälleen samalla tavalla. Vain kaikki tiedot muuttuvat.

Jos haluat määrittää sähköpostin lähettämisen toisen SMTP:n kautta, kaikki tiedot ovat suunnilleen samat.

Jos kaikki toimi sinulle ja kirjeet saapuivat määritetylle vastaanottajalle, kaikki tehtiin oikein. Olisi hienoa, jos jakaisit kokemuksesi kommentteihin.

Jotta tietyllä verkkosivustolla olisi mahdollisuus työskennellä tehokkaasti ja tuottavasti, sen luomiseen tulee suhtautua mahdollisimman vastuullisesti ja huolellisesti. Verkkokaupan luomiseen käytettävän järjestelmän valinta ansaitsee erityistä huomiota. Tosiasia on, että tavaroiden tai palveluiden myyntiin erikoistuneen kaupallisen alustan tulee mahdollistaa kaikkien tarvittavien toimintojen toteuttaminen ja sen on oltava helppokäyttöinen sekä sivustojen ylläpitoon ja täyttämiseen osallistuville ylläpitäjille että verkkokauppojen asiakkaille. Monet ihmiset ja yritykset, jotka joutuvat miettimään itselleen sopivan sisällönhallintajärjestelmän valitsemista, analysoivat, valitaanko Magento vai OkayCMS. Verrataanpa näiden sivustomoottoreiden ominaisuuksia ja ominaisuuksia.

Kun työskentelet omalla verkkosivustollasi, henkilön tai yrityksen on tehtävä paljon vaivaa - vain tässä tapauksessa voit luottaa positiivisiin tuloksiin ja todella tehokkaan työkalun saamiseen. Yksi peruskysymyksistä, joka on ratkaistava jo ennen verkkosivuston luomisen aloittamista, on sopivimman sisällönhallintajärjestelmän valinta. Seuraavaksi vertaamme kahta CMS:ää: Joomla tai OkayCMS ja kiinnitämme huomiota kummankin ominaisuuksiin.

Oma verkkosivusto on yksi tehokkaan ja menestyksekkäästi toimivan liiketoiminnan perusedellytyksistä. Tilastot osoittavat selkeästi erilaisten tavaroiden ostojen ja palvelutilausten lisääntyneen Internetin kautta. Tämän huomioon ottaen useimmat kaupalliset yritykset ovat jo tietoisia omien verkkosivujen tarpeesta. Pelkästään Internet-resurssin olemassaolo ei kuitenkaan riitä luottamaan sen tehokkuuteen, kannattavuuteen ja odotettuihin liiketoimintahyötyihin.

Kun valmistaudut luomaan omaa verkkosivustoa tai avaamaan verkkokauppaa, sinun on otettava huomioon ja analysoitava monia asioita sekä ratkaistava erilaisia ​​​​ongelmia. Vain tässä tapauksessa voit luottaa siihen, että projektisi tuo myönteisiä tuloksia ja pystyy täysin täyttämään odotuksesi. Verkkokaupan kehittämiseen liittyvistä eri kysymyksistä CMS:n valinta ansaitsee erityistä huomiota. Jotta sinun olisi helpompi päättää optimaalisesta moottorista itsellesi

Suunnitellessaan oman verkkosivuston luomista tulevalle verkkokaupalle, melko suuri joukko ihmisiä ja jopa myyntiin erikoistuneita yrityksiä joutuu vaikean ja erittäin tärkeän valinnan eteen: mikä olemassa olevista sisällönhallintajärjestelmistä valita. Jos mietit mitä valita: PrestaShop tai OkayCMS, suosittelemme lukemaan tämän artikkelin, jossa vertaamme näitä kahta järjestelmää Internet-sivustojen, erityisesti verkkokauppojen, luomiseen.

Koska nimettömien viestien lähettäminen virtuaalisista Windows-hostingpalvelimista on kiellettyä, kirjeiden lähettäminen kannattaa tehdä SMTP-palvelimen kautta, johon on myös mahdollista käyttää sähköpostijärjestelmäämme.

Kuinka lähettää sähköpostia PHP:llä?

Käyttämällä mitä tahansa PHP-luokkaa, joka tukee valtuutusta smtp-palvelimella. Voit esimerkiksi käyttää PHPMailer-luokkasarjaa.

Voit myös käyttää esimerkkiämme, joka toteuttaa kirjeiden lähettämisen smtp-palvelimella, joka vaatii valtuutuksen. Siksi älä unohda lisätä komentosarjaan asianmukaiset käyttöoikeustiedot, esimerkiksi:

// Jos haluat näyttää SMTP-istuntolokin, voit poistaa kommentin seuraavalta riviltä. // $_SERVER["debug"] = tosi; toiminto MailSmtp ($vastaanotin, $aihe, $sisältö, $otsikot, $debug = 0) ( $smtp_server = "smtp.site"; // SMTP-palvelimen osoite$smtp_port = 25 ; // SMTP-palvelimen portti$smtp_user = " [sähköposti suojattu]" ; // Käyttäjätunnus valtuutusta varten SMTP-palvelimella$smtp_password = "SALASANA" ; // Salasana valtuutusta varten SMTP-palvelimella$mail_from = " [sähköposti suojattu]" ; // Postilaatikko, josta kirje lähetetään$sukka = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($sukka, 512); if (! $sock ) ( printf ( "Palvelinta ei ole luotu\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock, "TODISTA KIRJAUDU"); smtp_msg ($sukka, base64_encode ($smtp_user)); smtp_msg ($sukka, base64_encode ($smtp_salasana)); smtp_msg ($sock , "POSTI LÄHETTÄJÄ:<" . $mail_from . ">" ); smtp_msg ($sock , "RCPT TO:<" . $reciever . ">" ); smtp_msg ($sock , "DATA" ); $headers = "Aihe: " . $aihe . "\r\n" . $headers ; $data = $headers . "\r\n\r\n" " ! $sock ) ( printf ("Broken socket!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ( "Lähetä meiltä" : %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ( "Socket on alas\n" ); exit(1); ) else (if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Saatu palvelimelta: %s
" , nl2br (htmlerikoismerkit ($str )); ) $e = räjähtää (" " , $str ); $koodi = array_shift ($e ); $str = implode ( " " , $e ); if ($koodi > 499 ) ( printf ( "Ongelmia SMTP-keskustelussa.

Koodi %d.
Viesti %s
"
, $koodi , $str ); poistu(1); ) ) ) ?>

Lataa esimerkki valmiista komentosarjasta MailSmtp()-funktiolla: smtpauth.php.sample

Voit käyttää yllä kuvattua MailSmtp()-funktiota korvaamaan suoraan mail()-funktion; harkitse esimerkkiä PHP:n yksinkertaisimmasta muodosta:

// Viestin otsikot, ne määrittelevät viestin koodauksen, Lähettäjä-, Vastaanottaja-kentät jne.$headers = "MIME-versio: 1.0\r\n" ; $otsikot .= "Sisältötyyppi: text/html; charset=windows-1251\r\n"; $headers .= "Vastaanottaja: $vastaanottaja \r\n" ; $otsikot .= "Lähettäjä: Lähettäjän nimi " ; // posti ($vastaanottaja, $aihe, $viesti, $otsikot); request_once "smtpauth.php" ; MailSmtp ($vastaanottaja, $aihe, $viesti, $otsikot); ) ?>
Kenelle: Aihe: Teksti: 
 
 

Jotta tämä lomake toimisi ilman mail()-funktiota, sisällytimme smtpauth.php-tiedoston vaatimuksen_once kautta ja kutsuimme siinä kuvatun MailSmtp()-funktion argumenteilla, jotka ovat samanlaisia ​​kuin mail(). Samalla kommentoimme mail()-kutsua itseään koodissa välttääksemme virheet skriptiä suoritettaessa.

Kuinka lähettää sähköposteja ASP.NET:in kautta?

Jos käytät versiota 2.0, käytä MailMessage-luokkaa System.Net.Mail), hyvin kuvattu.

Alla on esimerkkejä sen käytöstä C#- ja VisualBasic-kielissä:

Esimerkki C#-kielelle:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // uuden kirjeen luominen viesti.To.Add(" [sähköposti suojattu]"); // lisätään vastaanottajan osoite viesti.Lähettäjä = uusi postiosoite("from@" domain.tld", "Lähettäjän nimi"); // ilmoittaen lähettäjän nimen ja osoitteen message.Subject = "Viestin aihe"; // täsmentämällä kirjeen aihe message.BodyEncoding = System.Text.Encoding.UTF8; // kirjainkoodauksen määrittäminen viesti.IsBodyHtml = false; // kirjainmuodon määrittäminen (true - HTML, false - ei HTML) message.Body = "Viestiteksti"; // täsmentämällä kirjeen teksti (runko). SmtpClient client = new SmtpClient("smtp.site",25); // uuden yhteyden luominen palvelimeen "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // määrittelee viestin lähetystavan client.EnableSsl = false; // poistaa käytöstä tarpeen käyttää suojattua yhteyttä palvelimeen client.UseDefaultCredentials = false; // poista oletusarvoisten valtuutustietojen käyttö käytöstä client.Credentials = new NetworkCredential("postmaster@ domain.tld", "***Salasana***"); // määrittämällä tarvittavat tiedot (käyttäjänimi ja salasana) valtuutusta varten SMTP-palvelimella asiakas.Lähetä(viesti); // Lähetä viesti %>

Lataa esimerkki valmiista lomakkeesta, joka havainnollistaa tämän menetelmän käyttöä: MailForm.aspx.

Esimerkki VisualBasic-kielestä:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@domain.tld", "Lähettäjän_nimi") smtpMssg.To.Add (" [sähköposti suojattu]") "lisätään vastaanottajan osoite smtpMssg.Subject = "Sähköpostin aihe" "merkintä kirjeen aiheesta smtpMssg.Body = "Viestiteksti" " merkintä kirjeen tekstistä (rungosta). smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " merkintä kirjainkoodauksesta smtpMssg.IsBodyHtml = false " merkintä kirjainmuodosta (tosi - HTML, false - ei HTML) Himmeä SmtpMail uutena SmtpClient("smtp.site", 25) " ilmoitus uudesta "SmtpClient"-tyypin objektista SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "merkintä kirjeen toimitustavasta SmtpMail.UseDefaultCredentials = Väärin "poistetaan oletusarvoisesti valtuutustietojen käyttö" SmtpMail.EnableSsl = Väärin " poistaa käytöstä tarpeen käyttää suojattua yhteyttä palvelimeen SmtpMail.Credentials = new NetworkCredential("postmaster@ domain.tld", "***Salasana***") "joka ilmoittaa tarvittavat tiedot (käyttäjänimi ja salasana) valtuutusta varten SMTP-palvelimella SmtpMail.Send(smtpMssg) "lähettää viestiä %>

Siellä on myös vanhentunut (ja vanhentunut) SmtpMail-luokka (käyttäen nimiavaruutta System.Web.Mail). Alla on esimerkki sen käytöstä VisualBasic-kielellä:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " ilmoitus uudesta "MailMessage"-tyypin objektista smtpMssg.From = "Lähettäjän_nimi domain.tld>" "Lähettäjän nimi ja osoite smtpMssg.To = "admin@ domain.tld" " ilmoitus vastaanottajan osoitteesta smtpMssg.BodyFormat = MailFormat.Text " merkintä kirjainmuodosta smtpMssg.BodyEncoding = Koodaus.UTF8 "osoittaa kirjainkoodausta smtpMssg.Subject = "Sähköpostin aihe" "merkintä kirjeen aiheesta smtpMssg.Body = "Viestiteksti" " merkintä kirjeen tekstistä smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "osoittaa SMTP-valtuutuksen tarpeen palvelimella smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domain.tld") "käyttäjänimi valtuutusta varten smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***salasana***") "salasana valtuutusta varten SmtpMail.SmtpServer = "smtp.site" " määrittämällä SMTP-palvelimen osoitteen SmtpMail.Send(smtpMssg) "lähettää viestiä %>

Kuinka lähettää sähköpostia ASP:n avulla?

Huomaa, että kun käytät smtp-palvelinta, vaaditaan valtuutus, joten älä unohda lisätä komentosarjaan tarvittavat pääsytiedot, esimerkiksi:

<% 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@domain.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "salasana" .Päivitä Lopeta joukolla cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = iConfig .From = "Testaa käyttäjä domain.tld>" .To = "Käyttäjä " .Subject = "Hei, käyttäjä" .TextBody = "Kirjoitan tämän viestin ASP-komentosarjasta." .Lähetä Lopeta Aseta cdoMessage = Ei mitään Aseta iConfig = Ei mitään %>

Joissakin sisällönhallintajärjestelmissä on jo sisäänrakennetut työkalut kirjeenvaihdon tai vastaavien moduulien lähettämiseen; katsotaanpa suosituimpia.

Wordpress

Tätä CMS:ää varten on erityinen moduuli "WP Mail SMTP", esimerkki sen määrityksestä on kuvattu moduulisivulla.

Kiinnitä huomiota esimerkin kuvaan; sähköpostijärjestelmässämme on käytettävä porttia 25, eikä SSL-salausta vaadita.

Joomla

Siirry hallintapaneelissa "Yleiset asetukset" -osioon, valitse "Palvelin"-välilehti. "Mail"-kentässä sinun on valittava lähetystavaksi "SMTP-palvelin", kenttiin "SMTP-palvelimen osoite" ja "SMTP-sisäänkirjautuminen" ja "SMTP-salasana" määritetään asianmukaiset sähköpostijärjestelmän tiedot, esimerkiksi: smtp.site, laatikko@oma_verkkotunnus ja vastaava Salasana.

Drupal

Tällä CMS:llä on myös oma moduuli SMTP-palvelimen kanssa työskentelyä varten PHPMailer. Voit ladata tämän moduulin sen sivulta CMS Drupal -verkkosivustolta; moduulin asennuksen kuvaus löytyy sen mukana olevasta arkistosta.

NetCat

Tässä CMS:ssä ei ole sisäänrakennettuja toimintoja SMTP-palvelimen kanssa työskentelyä varten. Jos haluat lähettää sähköpostia sivuston komentosarjoilla, voimme tarjota ratkaisumme; sen yhdistämiseksi sinun on suoritettava seuraavat vaiheet:

  • Lataa tarvittavat tiedostot sisältävä arkisto verkkosivustoltamme ( send_auth_mail.php Ja mail.inc.php) ja pura se tietokoneellesi;
  • Muokkaa tiedostoa send_auth_mail.php arkistosta ilmoittamalla siinä yhteystiedot haluttuun SMTP-palvelimeen:

    • $mail_smtpServer = "smtp.site"; (SMTP-palvelimen osoite)
    • $mail_port = "25" ; (liitäntäportti)
    • $mail_username = "[sähköposti suojattu]" ; (käyttäjänimi valtuutusta varten SMTP-palvelimella)
    • $mail_password = "Salasana"; (salasana valtuutusta varten SMTP-palvelimella)
  • Luo tiedostosta varmuuskopio domain.tld/www/netcat/admin/mail.inc.php;
  • lataa tiedostoja send_auth_mail.php Ja mail.inc.php hakemiston virtuaalisivustolle domain.tld/www/netcat/admin/

domain.tld tulee korvata verkkotunnuksellasi.

Ehdotettu ratkaisu toimii kaikkien NetCat-moduulien kanssa, jotka käyttävät tämän CMS:n vakiotoimintoja postin lähettämiseen.




Ylös