Smtp-valtuutuskoodi. Sähköpostien lähettäminen (SMTP vs. sähköposti PHP). Kuinka lähettää sähköposteja ASP:n avulla

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ä muoto toimi 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 täytetystä lomakkeesta, joka havainnollistaa käyttöä tätä menetelmää: 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.

Etsin pitkään ratkaisua lähettää käyttäjille kirjeitä ei PHP:n mail()-toiminnon, vaan SMTP-postipalvelimien kautta. Internetissä ei ole paljon monipuolista tietoa, ja se, mitä siellä on, ei toimi aivan oikein tai ei toimi ollenkaan. Siksi kokosin kaiken ja kirjoitin oman koodini sivustoilla esiteltyjen valmiiden koodien perusteella.

Miksi lähettää SMTP:n kautta eikä postitse ()

Vastaukseni on melko yksinkertainen - virukset lähettivät jonkin aikaa tonnia kirjeitä palvelimeni kautta, mikä johti siihen, että monet postittajat, erityisesti gmail.com, kielsivät IP-osoitteeni, ja tämän yhteydessä käyttäjät saattoivat vastaanottaa kirjeitä, joten minä piti etsiä vaihtoehtoa, ja löysin sen - tämä on SMTP

Saatat olla kiinnostunut siitä, miksi käsikirjoitukseni on parempi kuin muut, jotka makaavat ulkona?! minä tulen vastaamaan

  1. Se toimii Yandexin, Ramblerin, Mailin kanssa (gmail ei voinut voittaa)
  2. Tyhjennä koodi. Voit määrittää sen vaihtamalla muutaman rivin
  3. Lähettää sähköposteja HTML-muodossa

Tässä ovat käsikirjoitukseni edut, joita en löytänyt mistään Internetistä, mutta jokaisesta otin kaiken tarvittavan. Joten katsotaanpa koodia.

Funktio smtpmail($mail_to, $subject, $message, $service="yandex") ( $config["smtp_charset"] = "windows-1251"; //viestin koodaus. (tai UTF-8 jne.) $config [ "smtp_from"] = "mashintop.ru"; //Nimesi - tai sivustosi nimi. Näytetään, kun se luetaan Lähettäjä-kentässä $config["smtp_debug"] = false; //Jos haluat Jos haluat nähdä virheilmoitukset, määritä true sijaan false $config["smtp_port"] = "25"; // Työportti. Älä muuta, jos et ole varma. if($service=="yandex") ( $config[ "smtp_searcher"] = "yandex. ru"; $config["smtp_email"] = " [sähköposti suojattu]"; $config["smtp_username"] = "mashintop"; //Vaihda postilaatikkosi nimeen. $config["smtp_host"] = "smtp.yandex.ru"; //postin lähetyspalvelin $config[" smtp_password "] = "moi_parol"; //Vaihda salasana ) elseif($service=="rambler") ( $config["smtp_searcher"] = "rambler.ru"; $config["smtp_email"] = " [sähköposti suojattu]"; $config["smtp_username"] = "mashintop"; //Vaihda postilaatikkosi nimeen. $config["smtp_host"] = "smtp.rambler.ru"; //postin lähetyspalvelin $config[" smtp_password "] = "moi_parol"; //Vaihda salasana ) elseif($service=="mail") ( $config["smtp_searcher"] = "mail.ru"; $config["smtp_email"] = " [sähköposti suojattu]"; $config["smtp_username"] = "mashintop"; //Vaihda postilaatikkosi nimeen. $config["smtp_host"] = "smtp.mail.ru"; //palvelin sähköpostin lähettämiseen $config[" smtp_password "] = "moi_parol"; //Vaihda salasana ) elseif($service=="gmail") ( $config["smtp_searcher"] = "gmail.com"; $config["smtp_email"] = " [sähköposti suojattu]"; $config["smtp_username"] = "alexeybertram"; //Vaihda postilaatikkosi nimeen. $config["smtp_host"] = "smtp.gmail.com"; //postin lähetyspalvelin $config[" smtp_password "] = "moi_parol"; //Vaihda salasana ) $header="Päiväys: ".date("D, j M Y G:i:s")." +0700rn"; $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config[" smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Mailer: Lepakko! (v3.99.3) Professionalrn"; $header.="Vastaus: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(" ".$config["smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Priority: 3 (normaali)rn"; $header.="Viesti-ID:<172562218.".date("YmjHis")."@".$config["smtp_searcher"].">rn"; $header.="Vastaanottaja: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("")))."? =<$mail_to>rn"; $header.="Aihe: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$subject."") )))."?=rn"; $header.="MIME-versio: 1.0rn"; $header.="Sisältötyyppi: teksti/html; charset=windows-1251rn"; $header.="Sisällönsiirtokoodaus: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) (tulosta "yhteys palvelimilta epäonnistui"; fclose($smtp_conn); exit;) $data = get_data($smtp_conn); fputs($smtp_conn,"EHLO ". $ config["smtp_searcher"]."rn"); $koodi = substr(get_data($smtp_conn),0.3000); if($koodi != 250) (tulosta "EHLO hello error"; fclose($smtp_conn) ; exit; ) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 334) (tulosta "palvelin ei sallinut valtuutuksen alkamista"; fclose ($ smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_username"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000) ; jos ($code != 334) (tulosta "virhe tämän käyttäjän käytössä"; fclose($smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_salasana"].""). "rn" ); $koodi = substr(get_data($smtp_conn),0,3000); if($koodi != 235) (tulosta "väärä salasana"; fclose($smtp_conn); exit;) fputs($smtp_conn,"MAIL FROM:".$config["smtp_email"]."rn"); $koodi = substr(get_data($smtp_conn),0,3000); if($code != 250) (tulosta "palvelin kieltäytyi MAIL FROM -komennosta"; fclose($smtp_conn); exit;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $koodi = substr(get_data($smtp_conn),0,3000); if($koodi != 250 JA $koodi != 251) (tulosta "Palvelin ei hyväksynyt RCPT TO -komentoa"; fclose($smtp_conn); exit;) fputs($smtp_conn,"DATArn"); $koodi = substr(get_data($smtp_conn),0,3000); if($koodi != 354) (tulosta "palvelin ei hyväksynyt DATAA"; fclose($smtp_conn); exit;) fputs($smtp_conn,$header."rn".$message."rn.rn"); $koodi = substr(get_data($smtp_conn),0,3000); if($koodi != 250) (tulosta "kirjeen lähetysvirhe"; fclose($smtp_conn); exit;) fputs($smtp_conn,"QUITrn"); fclose($smtp_conn); ) funktio get_data($smtp_conn) ( $data=""; while($str = fgets($smtp_conn,515)) ( $data .= $str; if(substr($str,3,1) == " " ) ( break; ) ) return $data; ) $text_email = " Olet juuri lisännyt mainoksen verkkosivustolle mashintop.ru. Voit katsoa sen täältä
Avaimesi: ".$key."

Tällä avaimella voit hallita mainostasi.

"; $teksti_sähköposti .= " "; smtpmail(" [sähköposti suojattu]", "Avain mainokseen osoitteessa mashintop.ru", $text_email, "yandex"); //use Yandex smtpmail(" [sähköposti suojattu]", "Avain mainokseen osoitteessa mashintop.ru", $text_email, "mail"); //käytä sähköpostia smtpmail(" [sähköposti suojattu]", "Avain mainokseen osoitteessa mashintop.ru", $text_email, "rambler"); //käytä rambleria smtpmail(" [sähköposti suojattu]", "Avain mainokseen osoitteessa mashintop.ru", $text_email, "gmail"); // mutta gmail ei toimi :(

Siinä kaikki, valmis skripti on käsissäsi, kopioi se, muuta $config-taulukon arvoja ja kaikki toimii hyvin.

Katsotaanpa nyt joitain elementtejä, joihin haluaisin keskittyä.

Esimerkiksi virhe, jonka saamme, kun yritämme lähettää SMTP:n kautta Googlelle. Aluksi näemme tämän virhetekstin:

Jos haluat nähdä jotain tarkempaa, muokataan koodia hieman

Fputs($smtp_conn,"AUTH LOGINrn"); $koodi = substr(get_data($smtp_conn),0,3000); echo $koodi; if($code != 334) (tulosta "palvelin ei sallinut valtuutuksen alkamista"; fclose($smtp_conn); exit;)

Ja lopulta saamme hyvin konkreettisen virheen

530 5.7.0 Ensin on annettava STARTTLS-komento. x4sm16408296lbn.2 - gsmtp

En tiedä mitä se tarkalleen tarkoittaa, mutta uskon, että sillä on jotain tekemistä suojatun, suojaamattoman yhteyden kanssa. En tiedä vielä kuinka päästä eroon siitä, joten gmail on tällä hetkellä voittamaton.



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 esimerkkinä palautelomakkeen lähettämisestä. 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 aloitamme käytännön palautekirjeiden lähettämisen, päätetään ensin, miten se tehdään.

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" - lähettäjän sähköpostiosoite;
  • "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öpostia Mail.ru-postipalvelimen kautta.

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 lähetämme nämä kirjeet järjestelmänvalvojan postilaatikon ylläpitäjälle [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.

Näin syntyy haluttu muoto. 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 merkittävästi sähköpostin lähettämistä SMTP-protokollan kautta valtuutetulla kolmannen osapuolen sähköpostipalvelulla.

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.

Lisäksi uusin versio 6.0.7, joka oli tallennettu tätä artikkelia kirjoitettaessa, on ladattavissa 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 loimme käsikirjoituksessa palautelomakkeesta saatujen tietojen avulla, 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

PHP:ssä on melko suosittua käyttää skriptejä, jotka automatisoivat kirjeiden lähettämisen. Tässä artikkelissa tarkastellaan yksinkertaista komentosarjaa, joka lähettää kirjeitä vastaanottajille SMTP:n ( Yksinkertainen postinsiirtoprotokolla ). Olisi liian helppoa rajoittua vain tähän toimintoon, skripti tukee myös liitteitä, eli voit liittää kirjeeseen pdf-, txt- tai doc-tiedoston.

Skriptin määrittäminen on melko yksinkertaista, tarvitset vain lähettäjän käyttäjätunnuksen ja salasanan sähköpostiin, josta kirjeet lähetetään.

Skripti toimii km_smtp_class.php-luokan kanssa, hyvä puoli luokassa on, että se tukee erilaisia ​​SSL- ja TLS-protokollia, jotka tarjoavat turvallisen tiedonsiirron.

Tässä itse käsikirjoitus:

"smtp.mail.ru", "SMTP_port" => "25", "SMTP_email" => " [sähköposti suojattu]", "SMTP_pass" => "1111111", "SMTP_type" => "null"); // Vastaanottajan sähköposti $Receiver = " [sähköposti suojattu]"; // Viestin aihe $Subject = "Sähköpostin lähettäminen PHP:stä"; // Viestin teksti (HTML-kielellä) $Text = "Hei!
Viesti lähetetty käsikirjoituksesta Mowshon Verkkosivusto: http://site"; // Kirjeen liite - tiedoston osoite $Attachment = ""; /* $mail = new KM_Mailer(palvelin, portti, käyttäjä, salasana, tyyppi); */ /* Tyyppi voi olla: null, tls tai ssl */ $mail = new KM_Mailer($SenderConfig["SMTP_palvelin"], $SenderConfig["SMTP_port"], $SenderConfig["SMTP_email"], $SenderConfig["SMTP_pass"], $ SenderConfig[" SMTP_type"]); if($mail->isLogin) ( // Liitä tiedosto if($Attachment) ($mail->addAttachment($Attachment);) // Lisää vastaanottajia $mail->addRecipient( " [sähköposti suojattu]"); $mail->addRecipient(" [sähköposti suojattu]") ); // Tyhjennä vastaanottajaluettelo $mail->clearRecipients(); $mail->clearCC(); $mail->clearBCC(); $mail->clearAttachments(); ) else ( echo "Tapahtui virhe muodostaa yhteyden SMTP-palvelimeen"; ) ?>

Komentosarjan asetukset perustuvat pääasiassa $SenderConfig-taulukkoon, tässä on määritettävä SMTP:palvelin, portti, kirjautumistunnus ja sähköpostin salasana. Kuvataan jokaista taulukkoavainta:

SMTP_server - SMTP-palvelimen osoite (yksittäinen osoite eri sähköposteille)

Mail.ru sähköposti: smtp.mail.ru portti: 25, 587 ja 465 (SSL-salauksella)

Yandexin sähköposti: smtp.yandex.ru portti: 25, 587 465 (SSL-portti)

Rambler-posti: mail.rambler.ru portti: 25, 587 465 (SSL-portti)

Yahoo sähköposti: smtp.mail.yahoo.com SSL-portti: 465

(Jos tarvitset smtp-palvelimien osoitteet, joita ei ole luettelossa, kirjoita kommentteihin)

SMTP_portti - Olemme jo kuvanneet sen edellä jokaiselle smtp-palvelimelle.

SMTP_email - käyttäjä olisi tarkempi, mutta selvyyden vuoksi kirjoitin sähköpostin, ilmoitamme sähköpostiosoitteen.

SMTP_pass – Sähköpostin salasana, joka määritettiin arvoksi SMTP_email-avaimessa


SMTP_type - oletusarvo NULL. Protokolla, jolla kirjeet lähetetään. Protokollat: SSL ja TLS

Voit lisätä liitteitä kirjeeseen yksinkertaisesti määrittämällä tiedoston täydellisen osoitteen $Attachment-muuttujassa (/var/patch/to/file/File.pdf)

Jos sinulla on kysyttävää, kirjoita ne alla oleviin kommentteihin.

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.

Sijoita 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 " Lähetä 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.

Tämän menetelmän haitoista on syytä huomata, että tämä menetelmä ei toimi johdonmukaisesti. 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.

Henkilökohtaisen Yandex-tilisi valtuutuksen jälkeen verkkotunnuksen sähköposti luodaan linkissä https://pdd.yandex.ru/. 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.




Yläosa