Smtp авторизация коды. Электрондық хаттарды жіберу (SMTP және PHP поштасы). ASP көмегімен электрондық поштаны қалай жіберуге болады

Виртуалды Windows хостинг серверлерінен анонимді хабарламаларды жіберуге тыйым салынғандықтан, хаттарды жіберу SMTP сервері арқылы жүзеге асырылуы керек, ол үшін біздің пошта жүйемізді де пайдалануға болады.

PHP арқылы электрондық поштаны қалай жіберуге болады?

smtp серверінде авторизацияны қолдайтын кез келген РНР класын пайдалану. Мысалы, PHPMailer класс жиынын пайдалануға болады.

Сондай-ақ авторизацияны қажет ететін smtp сервері арқылы хаттарды жіберуді жүзеге асыратын біздің мысалды пайдалануға болады. Сондықтан сценарийге тиісті рұқсат мәліметтерін қосуды ұмытпаңыз, мысалы:

// SMTP сеансы журналын көрсету қажет болса, келесі жолға түсініктемені жоюға болады. // $_SERVER["debug"] = шын; MailSmtp функциясы ($reciever, $тақырып, $мазмұн, $тақырыптар, $debug = 0) ( $smtp_server = "smtp.site"; // SMTP сервер мекенжайы$smtp_port = 25 ; // SMTP серверінің порты$smtp_user = " [электрондық пошта қорғалған]" ; // SMTP серверіндегі авторизацияға арналған пайдаланушы аты$smtp_password = "pAsSwORd" ; // SMTP серверіндегі авторизацияға арналған құпия сөз$mail_from = " [электрондық пошта қорғалған]" ; // Хат жіберілетін пошта жәшігі$sock = fsockopen ($smtp_server, $smtp_port, $errno, $errstr, 30); $str = fgets ($sok, 512); if (! $sock ) ( printf ( "Розета жасалмады\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock, "AUTH LOGIN"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock , "ПОШТА КІМНЕН:<" . $mail_from . ">" ); smtp_msg ($sock , "RCPT TO:<" . $reciever . ">" ); smtp_msg ($sock , "DATA" ); $headers = "Тақырып: " . $тақырып. "\r\n" . $тақырыптар; $деректер = $тақырыптар. "\r\n\r\n" $content . "\r\n." ; smtp_msg ($sock, $data ); smtp_msg ($sock, "QUIT" ); fclose ($sock ); ) smtp_msg функциясы ($sock, $msg ) ( егер ( ! $sock ) ( printf ("Сынған ұяшық!\n" ); exit(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ( "Бізден жіберу" : %s
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ( "Socket is" down\n" ); exit(1); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("Серверден алынды: %s"
" , nl2br (htmlspecialchars ($str )); ) $e = жарылу (" " , $str ); $код = массив_жылжыту ($e ); $str = имплоде ( " " , $e ); егер ($код > 499 ) ( printf ( «SMTP сөйлесуіндегі мәселелер.

Код %d.
%s хабары
"
, $code , $str ); шығу(1); ))) ?>

MailSmtp() функциясы бар дайын сценарийдің мысалын жүктеп алыңыз: smtpauth.php.sample

mail() функциясын тікелей ауыстыру үшін жоғарыда сипатталған MailSmtp() функциясын пайдалануға болады; PHP тіліндегі ең қарапайым пішіннің мысалын қарастырыңыз:

// Хабарлама тақырыптары, олар хабарлама кодтауын, Кімнен, Кімге өрістерін және т.б. анықтайды.$headers = "MIME-нұсқасы: 1.0\r\n" ; $тақырыптар.= "Мазмұн түрі: мәтін/html; charset=windows-1251\r\n"; $headers .= "Кімге: $ - \r\n" ; $тақырыптар.= «Кімнен: Жіберушінің аты " ; // пошта ($to, $тақырып, $хабарлама, $тақырыптар); require_once "smtpauth.php" ; MailSmtp ($ to, $subject, $хабарлама, $тақырыптар); ) ?>
Кімге: Тақырыбы: Мәтін: 
 
 

Үшін бұл пішін mail() функциясынсыз жұмыс істедік, біз smtpauth.php файлын require_once арқылы қостық және онда сипатталған MailSmtp() функциясын шақырдық, аргументтері mail() сияқты. Сонымен бірге, сценарийді орындау кезінде қателерді болдырмау үшін mail() қоңырауының өзін кодта түсіндірдік.

ASP.NET арқылы электрондық поштаны қалай жіберуге болады?

Егер сіз 2.0 нұсқасын пайдалансаңыз, MailMessage сыныбын пайдаланыңыз System.Net.Mail), жақсы сипатталған.

Төменде оны C# және VisualBasic тілдері үшін пайдалану мысалдары берілген:

C# тіліне мысал:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // жаңа әріп құрухабар.Қосу(" [электрондық пошта қорғалған]"); // алушының мекенжайын қосу message.From = жаңа пошта мекенжайы("from@ domain.tld", "Жіберушінің аты"); // жіберушінің аты мен мекенжайын көрсету message.Subject = "Хабар тақырыбы"; // хаттың тақырыбын көрсету message.BodyEncoding = System.Text.Encoding.UTF8; // әріпті кодтауды анықтау message.IsBodyHtml = жалған; // әріп пішімін көрсету (true - HTML, false - HTML емес) message.Body = "Хабар мәтіні"; // әріптің мәтінін (негізін) көрсету SmtpClient клиенті = жаңа SmtpClient("smtp.site",25); // "smtp.site" серверіне жаңа қосылым жасау client.DeliveryMethod = SmtpDeliveryMethod.Network; // хабарламаларды жіберу әдісін анықтайды client.EnableSsl = false; // серверге қауіпсіз қосылымды пайдалану қажеттілігін өшіреді client.UseDefaultCredentials = жалған; // әдепкі авторизация мәліметтерін пайдалануды өшіру client.Credentials = new NetworkCredential("postmaster@" domain.tld", "***пароль***"); // SMTP серверінде авторизациялау үшін қажетті мәліметтерді (пайдаланушы аты мен құпия сөз) көрсету client.Send(хабарлама); // хат жіберу %>

Пайдалануды көрсететін толтырылған пішіннің мысалын жүктеп алыңыз бұл әдіс: MailForm.aspx.

VisualBasic тіліне мысал:

<% @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", "Жіберуші_аты") smtpMssg.To.Add (" [электрондық пошта қорғалған]") " алушының мекенжайын қосу smtpMssg.Subject = "Электрондық пошта тақырыбы" «хаттың тақырыбын көрсету smtpMssg.Body = "Хабар мәтіні" « хаттың мәтінін (негізін) көрсету smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " әріпті кодтауды көрсету smtpMssg.IsBodyHtml = жалған " әріп пішімін көрсету (true - HTML, false - HTML емес) SmtpMail жаңа SmtpClient ретінде күңгірттендіріңіз («smtp.site», 25) "SmtpClient" типті жаңа нысанды жариялау SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network «хатты жеткізу әдісін көрсету SmtpMail.UseDefaultCredentials = Өтірік "әдепкі бойынша авторизация тіркелгі деректерін пайдалануды өшіру" SmtpMail.EnableSsl = False " серверге қауіпсіз қосылымды пайдалану қажеттілігін өшіреді SmtpMail.Credentials = жаңа NetworkCredential("postmaster@" domain.tld", "***пароль***") "SMTP серверінде авторизациялау үшін қажетті мәліметтерді (пайдаланушы аты мен құпия сөз) көрсете отырып SmtpMail.Send(smtpMssg) "хабарлама жіберу %>

Сондай-ақ ескірген (және ескірген) SmtpMail сыныбы бар (аттар кеңістігін пайдалану). System.Web.Mail). Төменде оның VisualBasic тілі үшін қолданылуының мысалы келтірілген:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage " MailMessage" түріндегі жаңа нысанды жариялау smtpMssg.From = "Жіберуші_аты domain.tld>" «Жіберушінің аты-жөні мен мекенжайын көрсету smtpMssg.To = "admin@ domain.tld" " алушының мекенжайын көрсету smtpMssg.BodyFormat = MailFormat.Text " әріп пішімін көрсету smtpMssg.BodyEncoding = Encoding.UTF8 "әріпті кодтауды көрсетеді smtpMssg.Subject = "Электрондық пошта тақырыбы" «хаттың тақырыбын көрсету smtpMssg.Body = "Хабар мәтіні" « хаттың мәтінін көрсету smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "серверде SMTP авторизациясының қажеттілігін көрсетеді smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ domain.tld") "авторизация үшін пайдаланушы аты smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***password***") «авторизация құпия сөзі SmtpMail.SmtpServer = "smtp.site" " SMTP сервер мекенжайын көрсету SmtpMail.Send(smtpMssg) "хабарлама жіберу %>

ASP көмегімен электрондық поштаны қалай жіберуге болады?

Біздің smtp серверін пайдаланған кезде авторизация қажет екенін ескеріңіз, сондықтан сценарийге тиісті рұқсат мәліметтерін қосуды ұмытпаңыз, мысалы:

<% 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") = "password" .Соңын жаңарту cdoMessage жиынымен = CreateObject("CDO.Message") cdoMessage жинағымен .Configuration = iConfig .From = "Пайдаланушыны сынау domain.tld>" .Кімге = "Пайдаланушы " .Subject = "Сәлеметсіз бе, Пайдаланушы" .TextBody = "Мен бұл хабарды ASP сценарийінен жазамын." .Соңын орнату cdoMessage = Ештеңе орнату iConfig = Ештеңе %>

Кейбір CMS-де хат алмасу немесе сәйкес модульдерді жіберуге арналған кірістірілген құралдар бар, олардың ең танымалдарын қарастырайық.

Wordpress

Бұл CMS үшін арнайы «WP Mail SMTP» модулі бар, оның конфигурациясының мысалы модуль бетінде сипатталған.

Мысалдағы суретке назар аударыңыз, біздің пошта жүйемізде 25 портты пайдалану қажет және SSL шифрлау қажет емес.

Joomla

Басқару тақтасында «Жалпы параметрлер» бөліміне өтіп, «Сервер» қойындысын таңдаңыз. «Пошта» өрісінде «SMTP сервері» ретінде жіберу әдісін таңдау керек, «SMTP серверінің мекенжайы» және «SMTP логин» және «SMTP құпия сөзі» өрістерінде пошта жүйесінің сәйкес мәліметтерін көрсетіңіз, мысалы: smtp.site, box@your_domainжәне сәйкес құпия сөз.

Drupal

Бұл CMS-де SMTP серверімен жұмыс істеуге арналған өзінің модулі бар PHPMailer.Сіз бұл модульді CMS Drupal веб-сайтындағы өз бетінде жүктей аласыз; модульді орнату сипаттамасы онымен бірге мұрағатта бар.

NetCat

Бұл CMS жүйесінде SMTP серверімен жұмыс істеуге арналған кірістірілген функциялар жоқ. Сайт сценарийлерін пайдаланып хат жіберу үшін біз шешімімізді пайдалануды ұсына аламыз; оны қосу үшін келесі қадамдарды орындау қажет:

  • Біздің веб-сайттан қажетті файлдары бар мұрағатты жүктеп алыңыз ( send_auth_mail.phpЖәне mail.inc.php) және оны компьютерде орауыштан шығарыңыз;
  • Файлды өңдеу send_auth_mail.phpмұрағаттан қажетті SMTP серверіне қосылу мәліметтерін көрсете отырып:

    • $mail_smtpServer = "smtp.site"; (SMTP серверінің мекенжайы)
    • $mail_port = "25" ; (қосылу порты)
    • $mail_username = "[электрондық пошта қорғалған]" ; (SMTP серверінде авторизациялау үшін пайдаланушы аты)
    • $mail_password = «Пароль»; (SMTP серверіндегі авторизацияның құпия сөзі)
  • Файлдың сақтық көшірмесін жасаңыз domain.tld/www/netcat/admin/mail.inc.php;
  • файлдарды жүктеп алу send_auth_mail.phpЖәне mail.inc.phpкаталогтағы виртуалды сайтқа domain.tld/www/netcat/admin/

domain.tldдомендік атыңызбен ауыстырылуы керек.

Ұсынылған шешім поштаны жіберу үшін осы CMS стандартты функцияларын пайдаланатын барлық NetCat модульдерімен жұмыс істейді.

Ұзақ уақыт бойы пайдаланушыларға хаттарды PHP-дегі mail() функциясы арқылы емес, SMTP пошта серверлері арқылы жіберу шешімін іздедім. Интернетте әртүрлі ақпарат көп емес, ал бар нәрсе дұрыс жұмыс істемейді немесе мүлдем жұмыс істемейді. Сондықтан мен бәрін біріктіріп, сайттарда ұсынылған дайын кодтардың негізінде өзімнің кодымды жаздым.

Неліктен пошта арқылы емес, SMTP арқылы жіберу керек()

Менің жауабым өте қарапайым - біраз уақыт бойы вирустар менің серверім арқылы тонналап хаттар жіберді, бұл менің IP мекенжайымды көптеген пошташылар, атап айтқанда gmail.com арқылы БАН-ға әкелді және осыған байланысты пайдаланушылар хаттар ала алады, сондықтан мен балама іздеу керек болды, мен оны таптым - бұл SMTP

Сізді неге менің сценарийім ашық жерде жатқан басқаларға қарағанда жақсырақ деп қызықтыруы мүмкін?! Мен жауап беремін

  1. Ол Yandex, Rambler, Mail қызметтерімен жұмыс істейді (gmail жеңе алмады)
  2. Кодты тазалау. Оны конфигурациялау үшін бірнеше жолды өзгерту жеткілікті
  3. Электрондық хаттарды HTML пішімінде жібереді

Интернеттен еш жерден таппаған сценарийімнің артықшылықтары осында, бірақ әрқайсысынан өзіме қажеттінің бәрін алдым. Сонымен, кодты қарастырайық.

Функция smtpmail($mail_to, $subject, $message, $service="yandex") ( $config["smtp_charset"] = "windows-1251"; //хабарлама кодтау. (немесе UTF-8, т.б.) $config [ "smtp_from"] = "mashintop.ru"; //Сіздің атыңыз - немесе сіздің сайтыңыздың атауы. "Кімнен" өрісінде оқығанда көрсетіледі $config["smtp_debug"] = false; //Егер қаласаңыз қате туралы хабарларды көру үшін false орнына шын мәнін көрсетіңіз $config["smtp_port"] = "25"; // Жұмыс порты. Егер сенімді болмасаңыз өзгертпеңіз. if($service=="yandex") ( $config[ "smtp_searcher"] = "yandex. ru"; $config["smtp_email"] = " [электрондық пошта қорғалған]"; $config["smtp_username"] = "mashintop"; //Пошта жәшігінің атауын өзгертіңіз. $config["smtp_host"] = "smtp.yandex.ru"; //хат жіберу сервері $config[" smtp_password "] = "moi_parol"; //Құпия сөзді өзгерту ) elseif($service=="rambler") ( $config["smtp_searcher"] = "rambler.ru"; $config["smtp_email"] = " [электрондық пошта қорғалған]"; $config["smtp_username"] = "mashintop"; //Пошта жәшігінің атын өзгертіңіз. $config["smtp_host"] = "smtp.rambler.ru"; //хат жіберу сервері $config[" smtp_password "] = "moi_parol"; //Құпия сөзді өзгерту ) elseif($service=="mail") ( $config["smtp_searcher"] = "mail.ru"; $config["smtp_email"] = " [электрондық пошта қорғалған]"; $config["smtp_username"] = "mashintop"; //Пошта жәшігінің атын өзгертіңіз. $config["smtp_host"] = "smtp.mail.ru"; //хат жіберу сервері $config[" smtp_password "] = "moi_parol"; //Құпия сөзді өзгерту ) elseif($service=="gmail") ( $config["smtp_searcher"] = "gmail.com"; $config["smtp_email"] = " [электрондық пошта қорғалған]"; $config["smtp_username"] = "alexeybertram"; //Пошта жәшігінің атын өзгертіңіз. $config["smtp_host"] = "smtp.gmail.com"; //хат жіберу сервері $config[" smtp_password "] = "moi_parol"; //Құпия сөзді өзгерту ) $header="Күні: ".date("D, j M Y G:i:s")." +0700rn"; $header.="Кімнен: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config[" smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Mailer: Жарқанат! (v3.99.3) Professionalrn"; $header.="Жауап беру: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(" ".$config["smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X- приоритет: 3 (қалыпты)rn"; $header.="Хабар идентификаторы:<172562218.".date("YmjHis")."@".$config["smtp_searcher"].">rn"; $header.="Кімге: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("")))."? =<$mail_to>rn"; $header.="Тақырып: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$subject."" )))."?=rn"; $header.="MIME-нұсқасы: 1.0rn"; $header.="Мазмұн түрі: мәтін/html; charset=windows-1251rn"; $header.="Мазмұнды тасымалдау-кодтау: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) ("серверлерден қосылым сәтсіз аяқталды" басып шығару; fclose($smtp_conn); exit;) $data = get_data($smtp_conn); fputs($smtp_conn,"EHLO ". $ config["smtp_searcher"]."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) ("EHLO сәлем қатесін" басып шығару; fclose($smtp_conn) ; exit; ) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 334) ("сервер авторизацияны бастауға рұқсат бермеді" басып шығару; fclose ($) smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_username"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000); егер ($code != 334) ("осы пайдаланушыға қатынасу қатесі" басып шығарыңыз; fclose($smtp_conn); exit;) fputs($smtp_conn,base64_encode("".$config["smtp_password"].""). "rn" ); $code = substr(get_data($smtp_conn),0,3000); if($code != 235) («қате құпия сөзді» басып шығару; fclose($smtp_conn); exit;) fputs($smtp_conn,"POSTA FROM:".$config["smtp_email"]."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) ("сервер MAIL FROM командасынан бас тартты" басып шығару; fclose($smtp_conn); exit;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250 ЖӘНЕ $code != 251) («Сервер RCPT TO пәрменін қабылдамады» басып шығару; fclose($smtp_conn); exit;) fputs($smtp_conn, «DATArn»); $code = substr(get_data($smtp_conn),0,3000); if($code != 354) ("сервер ДЕРЕКТЕРДІ қабылдамады" басып шығару; fclose($smtp_conn); exit;) fputs($smtp_conn,$header."rn".$message."rn.rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) ("хат жіберу қатесін" басып шығару; fclose($smtp_conn); exit;) fputs($smtp_conn,"QUITrn"); fclose($smtp_conn); ) функциясы get_data($smtp_conn) ( $data=""; while($str = fgets($smtp_conn,515)) ( $data .= $str; if(substr($str,3,1) == " " ) (үзіліс; ) ) қайтару $деректер; ) $text_email = " Сіз жаңа ғана mashintop.ru сайтында хабарландыру қостыңыз. Сіз оны мына жерден көре аласыз
Сіздің кілтіңіз: ".$key."

Осы кілттің көмегімен сіз жарнамаңызды басқара аласыз.

"; $text_email .= " "; smtpmail(" [электрондық пошта қорғалған]", "Mashintop.ru сайтындағы жарнаманың кілті", $text_email, "yandex"); //Yandex smtpmail(" [электрондық пошта қорғалған]", "Mashintop.ru сайтындағы жарнаманың кілті", $text_email, "mail"); // smtpmail(" электрондық поштасын пайдаланыңыз. [электрондық пошта қорғалған]", "Mashintop.ru сайтындағы жарнаманың кілті", $text_email, "rambler"); //rambler smtpmail(" [электрондық пошта қорғалған]", "Mashintop.ru сайтындағы жарнаманың кілті", $text_email, "gmail"); // бірақ gmail жұмыс істемейді :(

Барлығы, дайын сценарий сіздің қолыңызда, оны көшіріп алыңыз, $config массивінің мәндерін өзгертіңіз және бәрі жақсы жұмыс істейді.

Енді мен назар аударғым келетін кейбір элементтерді қарастырайық.

Мысалы, Google-ге SMTP арқылы жіберуге тырысқанда біз алатын қате. Бастапқыда біз бұл қате мәтінін көреміз:

Нақтырақ нәрсені көру үшін кодты сәл өзгертейік

Fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0,3000); echo $code; if($code != 334) («сервер авторизацияны бастауға рұқсат бермеді» басып шығару; fclose($smtp_conn); exit;)

Соңында біз өте нақты қатені аламыз

530 5.7.0 Алдымен STARTTLS пәрменін шығару керек. x4sm16408296lbn.2 - gsmtp

Мен бұл нені білдіретінін білмеймін, бірақ оның қауіпсіз, қорғалмаған қосылымға қатысы бар деп ойлаймын. Мен одан қалай арылуға болатынын әлі білмеймін, сондықтан Gmail қазіргі уақытта жеңілмеген.



2019-08-05

Сәлеметсіз бе, құрметті қонақ!

Блогты жаңартуды кешіктіргенім үшін кешіріңіз. Бірақ бұл үшін толық түсінікті түсініктеме бар. Өйткені, бұл жаз болды, саяжай, қонақтар, орман, су және тағы басқалар, бұл маған веб-сайт құру мәселелерін шешуге мүмкіндік бермеді. Бірақ қазір мен аздап босадым, қонақтар кетті, енді мен бұған міндетті түрде назар аудара аламын деп ойлаймын.

Сонымен, соңғы мақалада біз доменнің поштасын пошта қызметтерінің біріне қостық, енді сайттан электрондық поштаны қалай жіберуге болатынын көрейік. Сонымен қатар, біздің хаттарымыз СПАМ-ға түспейді, бірақ біздің алушыларға сенімді түрде, жоғары ықтималдықпен жеткізіледі.

Жалпы, РНР тілінде хаттарды жіберуге арналған кірістірілген mail() функциясы бар. Бірақ айта кету керек, бұл әдістің қарапайымдылығына қарамастан (бұл жағдайда хаттарды жіберу үшін белгілі бір параметрлері бар кодтың бір жолын көрсету жеткілікті), бұл опцияны пайдалану СПАМ мәселесімен байланысты айтарлықтай кемшілікке ие. .

Мәселе мынада, алушы жағындағы пошта серверлерінің СПАМ-ға қарсы сүзгілері mail() функциясы арқылы жіберілген хаттарды шынымен қолдамайды. Ал көп жағдайда мұндай хабарламалар адресатқа жеткенше сүзіледі немесе тіпті жойылады.

Мұндай жағдайларды мүмкіндігінше жою үшін әдетте басқа опция қолданылады, онда хаттар үшінші тарап пошта қызметі жасағандай жіберіледі.

Бұл әдіс авторизациясы бар SMTP арқылы поштаны жіберу деп аталады. Оны біз бүгін кері байланыс формасын жіберу мысалы арқылы қарастырамыз. Сонымен қатар, бұл үшін біз SMTP арқылы хаттарды жіберуді оңай ұйымдастыруға мүмкіндік беретін өте танымал және танымал PHPMailer кітапханасын қолданамыз.

  • Біз кері байланыс хаттарын қалай жібереміз
  • Кері байланыс формасын құру
  • PHPMailer кітапханасын орнату
  • Біз SMTP арқылы хат жіберуге арналған сценарий жасаймыз
  • Электрондық пошта жіберу тексерілуде
  • Сайттың бастапқы файлдары

Біз кері байланыс хаттарын қалай жібереміз

Кері байланыс хаттарын жіберудің практикалық жұмысын бастамас бұрын, алдымен мұны қалай жасайтынымызды шешейік.

Кері байланыс нысаны пайдаланушыға өз хабарламасын жеткізу үшін сайт әкімшісімен байланысуға мүмкіндік беру үшін жасалған. Әдетте, бұл пішін бірнеше өрістерден және «Жіберу» түймешігінен тұрады.

Негізінде, электрондық поштаны жіберу үшін пайдаланушы және хабарламаның мазмұны туралы жеткілікті ақпаратты беретін бірнеше өрістерді ғана пайдалану жеткілікті, мысалы:

  • «Аты» – хабарлама жіберушінің атын енгізу;
  • «Электрондық пошта» - жіберушінің электрондық пошта мекенжайы үшін;
  • «Хабар тақырыбы»;
  • «Хабар мәтіні».

Басқаларды қосуға болады. Мысалы, телефон нөмірі, егер бұл шынымен қажет болса.

Біздің жағдайда мұндай хаттар сайт әкімшісінің мекенжайына біздің домен қосылған пошта қызметіне авторизациясы бар нақты пошта жәшігінен жіберіледі.

Алдыңғы мақалада біз домендік поштаның Yandex.Mail қызметіне қосылуын тексеруге назар аударғандықтан, біз осы опция үшін поштаны жібереміз. Бұл маңызды емес болса да. Төменде сіз өзгертілген кезде Mail.ru пошта сервері арқылы электрондық поштаны жіберуге мүмкіндік беретін опцияларды көресіз.

Хаттар жіберілетін нақты пошта жәшігі ретінде біз жаңадан құрылған домендік пошта пайдаланушысының тіркелгісін пайдаланамыз, мысалы мекенжайы бар [электрондық пошта қорғалған]. Ал біз бұл хаттарды әкімшінің пошта жәшігіне жібереміз [электрондық пошта қорғалған], біз оны алдыңғы мақалада жасағанбыз.

Осылайша, кері байланыс формасынан хатты жіберуші пошта жәшігі болады [электрондық пошта қорғалған]., және алушы - [электрондық пошта қорғалған]. Бұл жағдайда хабарламаны мазмұнымен бірге жіберген пайдаланушы туралы барлық ақпарат жіберілген хаттың мәтінінде жіберіледі.

Кері байланыс формасын құру

Біз хаттарды жіберу тәртібін шешкеннен кейін, біз мұны жасайтын кері байланыс формасын жасаймыз.

Төменде осы пішіннің HTML коды берілген, оны біз «Контактілер» бетіне орналастырамыз (мақалалар каталогындағы kontakty.php файлы).

    «мақала» >

    Контактілер

    кері байланыс

    «байланыс»әрекет = "#" әдісі = "пост" >

    Кері байланыс формасы

    Барлық сұрақтар, сұраныстар және іскерлік ұсыныстар бойынша төмендегі кері байланыс формасы арқылы бізбен байланыса аласыз.

    «байланыс блогы» >

    «контакт енгізу» >

    «мәтін» id = «байланыс атауы»аты = «байланыс атауы»тақырып = «Аты орыс тілінде және кемінде 3 таңбадан тұруы керек» үлгі = "{3,}" қажет >

  1. «бос контакт» >

    «контакт енгізу» >

    «электрондық пошта» id = «байланыс электрондық поштасы»аты = «байланыс электрондық поштасы»қажет >

  2. «байланыс тақырыбы» >

  3. «байланыс-түсініктеме» >

  4. «байланыс түймесі» >

    «жіберу»аты = «байланыс түймесі»мәні = «Жіберу» >

Сурет.1 Кері байланыс формасының HTML коды

Мұнда көрсетілген кері байланыс пішінінің ақырында келесі скриншотта қалай көрінетінін көре аласыз.

Осылайша, қажетті пішін жасалады. Ал енді электрондық пошта хабарламасы түрінде деректерді өңдеу және жіберу мәселелеріне көшуге болады.

PHPMailer кітапханасын орнату

Бұрын атап өтілгендей, поштаны жіберу үшін біз PHPMailer кітапханасын қолданамыз, ол үшінші тарап пошта қызметіне авторизацияланған SMTP протоколы арқылы электрондық поштаны жіберуді айтарлықтай жеңілдетеді.

Оны орнату үшін сізге қажетті файлдарды жүктеп алу керек. Мұны GitHub веб-қызметінен Composer (PHP үшін пакеттік тәуелділік менеджері) арқылы жасауға болады. Немесе қарапайым жолмен қажетті файлдарды жүктеп алыңыз.

скриншот 73

Төменде GitHub веб-қызметінің беті берілген, онда PHPMailer кітапханасын тұрақты жүктеп алуға сілтеме белгіленген.

Сонымен қатар, осы мақаланы жазу кезінде сақталған соңғы 6.0.7 нұсқасын қоса берілген материалдардан жүктеп алуға болады.

Кез келген жағдайда алынған мұрағаттық файлды орамнан шығару керек, содан кейін шығарылған PHPMailer-мастер қалтасы оның барлық мазмұнымен сайттың түбірінде орналастырылуы керек. Сонымен қатар, қарапайымдылық үшін оның атын PHPMailer деп өзгертуге болады. Төменде сайттың түбірлік каталогында орналасқан PHPMailer қалтасының мазмұны берілген.

Осылайша біз PHPMailer кітапханасын орнаттық. Осыдан кейін біз веб-сайтымыздан электрондық пошта хабарламаларын жіберетін сценарий құруды бастай аламыз.

Біз SMTP арқылы хат жіберуге арналған сценарий жасаймыз

Сценарийді құрастыру үшін GitHub бетінде берілген PHPMailer пайдалану бойынша ұсыныстарды пайдалану жеткілікті, біз бұрын кітапхананы жүктеп алу үшін пайдаландық.

Олар, атап айтқанда, сценарийдің басында PHPMailer сыныптарын жаһандық аттар кеңістігіне импорттау қажет екенін көрсетеді. Және сәйкес кодтың нақты жолдары берілген. Сондай-ақ PHPMailer қасиеттері мен әдістерін, соның ішінде SMTP арқылы хат жіберу опциясын пайдалану мысалдары бар.

Бірақ егер бұл жеткіліксіз болса, онда сіз осы кітапхананың барлық қасиеттері мен әдістерінің сипаттамасын қамтитын құжаттаманы пайдалана аласыз.

скриншот 74

Төменде авторизациясы бар SMTP арқылы кері байланыс пішінінен поштаны жіберуге арналған сценарий коды берілген. Мұнда PHPMailer-ге қатысты барлық жолдар түсіндірмесі бар және жеңіл фонмен бөлектелген.

Қалған бөліктер, соның ішінде пішіннен деректерді қабылдауға және өңдеуге қатысты фрагменттерді, біз бұрын басқа процессорларда қолдануымыз керек еді, қараңғы фонмен көрсетілген. Олар PHP-дегі пішіннен деректерді алу және тексеру мәселелеріне арнайы арналған мақалада бұрын егжей-тегжейлі талқыланды. Мұнда біз пішін деректерін тексеру және өңдеу үшін әмбебап пайдаланушы функциясы туралы да айттық check_symbol().

Біз бұл сценарийді кері байланыс пішінін бұрын жасаған kontakty.php файлына орналастырамыз.

    //----PHPMailer көмегімен SMTP арқылы хат жіберуге арналған сценарий----

    //PHPMailer сыныптарын жаһандық аттар кеңістігіне импорттау. Олар функцияның ішінде емес, сценарийдің жоғарғы жағында болуы керек

    пайдалану PHPMailer\PHPMailer\PHPMailer ;

    пайдалану PHPMailer\PHPMailer\Exception ;

    егер (!бос($_POST["байланыс түймесі" ])) (

    $name = $_POST["контакт аты" ];

    $name = check_symbol ($name, "Name" , "1" , "/^+\z/iu" );

    $email = $_POST["контакт-электрондық пошта" ];

    $email = check_symbol ($email, "E-mail" , "1" , "/^+@(+\.)+(2,6)\z/i");

    $тақырып = $_POST["контакт-тақырып" ];

    $тақырып = check_symbol ($тақырып, "Хабар тақырыбы" , "1" , "0" );

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

    $comment = check_symbol ($comment, «Хабар мәтіні», "1" , "0" );

    егер (!бос($GLOBALS["alert" ])) (

    $alert = "Пішін деректері жіберілмеді. Келесі қателер табылды:\n".$ alert;

    қамтиды"alert.php" ;

    басқа {

    //Кітапхананы қосу

    талап етеді"PHPMailer/src/PHPMailer.php" ;

    талап етеді"PHPMailer/src/Exception.php" ;

    талап етеді"PHPMailer/src/SMTP.php" ;

    $mail = жаңа PHPMailer(); //Кластың инициализациясы

    $-дан = " [электрондық пошта қорғалған]" ; //Хат жіберілетін электрондық пошта мекенжайы

    $ - = " [электрондық пошта қорғалған]" ; //Алушының мекен-жайы

    $mail -> isSMTP(); //SMTP протоколын пайдаланыңыз

    $mail -> Хост = "smtp.yandex.ru" ; //Пошта серверінің мекенжайы

    $mail -> SMTPAuth = рас ; // Авторизация режимін қосыңыз

    $mail -> Пайдаланушы аты = " [электрондық пошта қорғалған]" ; //Үшінші тараптың электрондық пошта қызметіне қосылған домендік электрондық поштадан кіру (бұл жағдайда Yandex.Mail)

    $mail -> Құпия сөз = "27MrDon89" ; //Домен поштасының құпия сөзі

    $mail -> SMTPSecure = "ssl" ; //Шифрлау протоколы

    $mail -> Порт = "465" ; //SMTP серверінің порты

    $mail -> CharSet = "UTF-8" ; //Кодтау

    $mail -> setFrom ($from, «Әкімші» ); //Жіберушінің мекенжайы мен аты

    $mail -> addAddress ($ to, "Әкімші" ); //Алушының мекен-жайы мен аты-жөні

    $mail -> isHTML ( рас ); //Электрондық пошта пішімін HTML етіп орнату

    $mail -> Тақырып = «Кері байланыс нысаны жіберілді»; //Электрондық пошта тақырыбы (тақырып)

    $mail -> Дене = "

    Жіберушінің аты: $атауы

    Жіберушінің мекенжайы: $электрондық пошта

    Хабардың тақырыбы: $тақырып

    Хабарлама мазмұны: $пікір



    " ; //Хабардың мазмұны

    $mail -> AltBody = «Балама әріп мәтіні»; //Электрондық пошта клиенті HTML пішімін қолдамаса, балама электрондық пошта

    $mail -> SMTPDebug = 0 ; //SMTP жөндеуді қосу: 0 - өшіру (қалыпты пайдалану үшін), 1 = клиент хабарлары, 2 - клиент және сервер хабарлары

    егер($mail -> send()) (

    $alert = «Хабар жіберілді»; //Шолғыштың диалогтық терезесінде хаттың сәтті жіберілгені туралы хабарламаны шығарыңыз

    басқа {

    $alert = "Қате, электрондық поштаны жіберу мүмкін емес:".$mail -> ErrorInfo ; //Қате туралы хабарды шығару

    қамтиды"alert.php" ;

Сурет 5 Авторизациясы бар SMTP арқылы электрондық поштаны жіберуге арналған сценарий

Көріп отырғаныңыздай, қажетті әдістер мен сипаттар көрсетілген электрондық пошта хабарын жіберуге тікелей қатысты барлық жолдар түсініктемелермен бірге жүреді. Сондықтан, өзімізді қайталаудың мағынасы жоқ, бірақ біз олардың кейбіреулеріне ғана тоқтала аламыз, олар шынымен де қосымша түсініктемелерді қажет етеді, атап айтқанда:

1. Хат үшінші тарап пошта қызметінен жіберілгендіктен, мұнда нақты SMTP серверіне сәйкес параметрлер қолданылады. Бұл жағдайда Yandex.Mail серверін пайдалану жағдайында келесі сипат мәндері қолданылады:

  • Меншік Хост(pos.28) - smtp.yandex.ru мәні бар пошта серверінің мекенжайы;
  • Меншік SMTPSecure
  • Меншік Порт

Бұл сипат мәндері келесі скриншотта көрсетілген Yandex.Анықтама бетінен алынды.

Бірақ мұндай ақпаратты басқа ресурстардан да алуға болады. Мұны істеу үшін іздеу жүйесіне сәйкес сұрауды енгізіңіз, мысалы: «Yandex smtp сервері». Бұл мәселе бойынша көптеген сілтемелерді қайдан табуға болады.

Сол сияқты параметрлер мәндерін басқа SMTP серверлерінен алуға болады. Төменде Mail.ru пошта қызметінің SMTP серверінің параметрлерін көрсететін Mail.ru анықтама бетінің скриншоты берілген.

Осылайша, Mail.ru-ны үшінші тарап SMTP сервері ретінде пайдаланған жағдайда, PHPMailer класы сипаттарының келесі мәндері қолданылуы керек:

  • Меншік Хост(pos.28) - Пошта серверінің мекенжайы (smtp.mail.ru);
  • Меншік SMTPSecure(pos.32) - Шифрлау протоколы (ssl);
  • Меншік Порт(33-позиция) - SMTP серверінің порты (465).

Осыған ұқсас тәсіл басқа электрондық пошта қызметтеріне де қолданылуы керек.

2. Меншікте Пайдаланушы аты(30-позиция) домендік пошта жәшігінің толық мекенжайын көрсету қажет. Бұл жағдайда, » [электрондық пошта қорғалған]".

Дегенмен, хаттарды жіберу үшін домендік пошта тіркелгісінен басқа тіркелгіні, бірақ пошта қызметіне тікелей қатысты мекенжайды пайдалансаңыз, мысалы " [электрондық пошта қорғалған]", онда логин мекенжайдың "@" белгісіне дейінгі бөлігі ғана болуы керек. Бұл жағдайда логиннің "кері байланыс" мәні болады.

3. PHPMailer сипатты қамтамасыз етеді SMTPDebug(поз. 50), бұл браузер экранында әртүрлі деңгейдегі қателерді көрсетуге мүмкіндік береді. Бұл мүмкіндік сценарийді жөндеу кезінде ақауларды табуды айтарлықтай жеңілдетеді.

Әдетте, қалыпты режимде мән 0-ге орнатылғанда, қате туралы егжей-тегжейлі ақпараттың шығуы өшіріледі. Бірақ егер поштаны жіберу немесе жөндеу кезінде проблемалар туындаса, қате туралы маңызды ақпаратты көрсету үшін басқа мәндерді пайдалануға болады.

Мұның іс жүзінде қалай көрінетінін көру үшін параметрлерге біраз қатені уақытша енгізейік. Мысалы, домендік пошта құпия сөзі (қасиет Құпия сөз, позиция 31). Сондай-ақ қате туралы егжей-тегжейлі ақпаратты көрсету үшін, сипатқа уақытша орнатылған SMTPDebug(поз.50) мән 1. Барлығы жөнделіп, тексерілгеннен кейін SMTP жөндеу режимін өшіреміз, 1-ді 0-ге ауыстырамыз.

Сценарийдің соңғы бөлігінде барлық қажетті қасиеттер мен әдістерді көрсеткеннен кейін хатты жіберу әдісі қолданылады. жіберу()) (51-позиция). Ал егер хат жіберілсе, және әдісі жіберу()нысан үшін $mail true мәнін қайтарады, содан кейін браузер диалогында айнымалы арқылы $дабылСәтті хат жіберу туралы хабарлама көрсетіледі (52-позиция).

Егер қандай да бір себептермен поштаны жіберу мүмкін болмаса және тиісінше әдіс «true» мәнін қайтара алмаса, онда бұл күй сәйкес қате туралы хабармен (поз. 55) сүйемелденеді.

Электрондық пошта жіберу тексерілуде

Біз поштаны жіберу сценарийін жасағаннан кейін, әрине, біздің «шығармашылықтың» нәтижесіне қарауымыз керек. Біз бұл жерде барлығын ескердік және қателескен жоқпыз ба?

Мұны істеу үшін, пайдаланушыдан сайт әкімшісіне кері байланыс пішінінен хабарлама жіберуге тырысайық. Төменде жіберілгенге дейін толтырылған өрістері бар кері байланыс пішінінің скриншоты берілген.

Міне, пішінді жіберудің нәтижесі.

Браузер тілқатысу терезесіндегі хабарламадан SMTP қосылымындағы ақауға байланысты хатты жіберу мүмкін емес екені анық.

Бірақ, қазірден бері мүлік SMTPDebug(поз. 50) 1 мәні беріледі, содан кейін біз орын алған қате туралы толық ақпаратты көре аламыз және оның пайда болу себебін біле аламыз.

Келесі скриншот қосылу әрекеті кезінде аутентификация қатесі анықталғанын көрсетеді, яғни қате логин немесе құпия сөзді пайдалану.

Құпия сөздің сәйкессіздігін жойғаннан кейін (бұрын қате туралы қосымша ақпараттың шығуын тексеру үшін қате құпия сөз қолданылған), біз хатты қайтадан жіберуге тырысамыз.

Бұл жолы бәрі ойдағыдай болып, хаттың сәтті жіберілгені туралы хабарлама алдық. Шамасы, домен поштасының құпия сөзінде әдейі енгізілген уақытша қатені қоспағанда, біз басқа қателіктер жіберген жоқпыз.

Бірақ хаттың адресатқа жеткізілгеніне көз жеткізу үшін мекенжайы бар поштаны енгізейік. [электрондық пошта қорғалған]және нәтижеге қараңыз.

Көріп отырғаныңыздай, мекенжайдан хат [электрондық пошта қорғалған], одан біз «Кері байланыс» атты электрондық пошта хабарын жібердік, сайт әкімшісіне сәтті жетті. Бұл ретте хаттың негізгі бөлігінде кері байланыс пішінінен алынған деректерді пайдаланып сценарийде жасаған барлық мазмұн бар, атап айтқанда:

  • Жіберушінің аты-жөні: Николай;
  • Жіберушінің мекенжайы: [электрондық пошта қорғалған];
  • Хабардың тақырыбы: пошта жөнелтілімін тексеру;
  • Хабарлама мазмұны: сынақ хабарламасы.

Енді пошта жөнелтілімін сәтті тексергеннен кейін сипатты тағайындау арқылы SMTP жөндеу режимін өшіруге болады. SMTPDebug(поз.50) мәні 0.

Осылайша, біз үшінші тарап пошта сервері арқылы авторизациясы бар SMTP арқылы поштаны жіберу құралын құру тапсырмасын аяқтадық.

Мысалы, келесі мақалада тіркелген пайдаланушы тіркелгісінің деректерін қалпына келтіру үшін растау хаттарын жіберу жолын қарастырамыз.

Сайттың бастапқы файлдары

Осы мақалада жасалған жаңартулары бар сайттың бастапқы файлдарын қоса берілген қосымша материалдардан жүктеп алуға болады:

  • www каталог файлдары
  • MySQL деректер қорының кестелері

РНР тілінде хаттарды жіберу процесін автоматтандыратын сценарийлерді қолдану өте танымал. Бұл мақалада біз SMTP арқылы алушыларға хат жіберетін қарапайым сценарийді қарастырамыз( Қарапайым поштаны тасымалдау протоколы ). Тек осы функциямен шектелу өте оңай болар еді; сценарий сонымен қатар тіркемелерді қолдайды, яғни хатыңызға pdf, txt немесе doc файлын қоса аласыз.

Сценарийді орнату өте қарапайым, сізге тек хаттар жіберілетін электрондық поштаның жіберушінің логині мен құпия сөзі қажет.

Сценарий km_smtp_class.php сыныбымен жұмыс істейді, сыныптың жақсы жағы ол деректерді қауіпсіз тасымалдауды қамтамасыз ететін әртүрлі SSL және TLS протоколдарын қолдайды.

Міне сценарийдің өзі:

"smtp.mail.ru", "SMTP_port" => "25", "SMTP_email" => " [электрондық пошта қорғалған]", "SMTP_pass" => "1111111", "SMTP_type" => "null"); // Алушының электрондық поштасы $Receiver = " [электрондық пошта қорғалған]"; // Хабар тақырыбы $Subject = "PHP-ден электрондық хат жіберу"; // Хабар мәтіні (HTML тілінде) $Text = "Сәлеметсіз бе!
Хабар сценарийден жіберілді МоушонВеб-сайт: http://site"; // Хаттағы қосымша - файлдың мекенжайы $Attachment = ""; /* $mail = new KM_Mailer(сервер, порт, пайдаланушы, құпия сөз, түрі); */ /* Түрі болуы мүмкін: null, tls немесе ssl */ $mail = new KM_Mailer($SenderConfig["SMTP_server"], $SenderConfig["SMTP_port"], $SenderConfig["SMTP_email"], $SenderConfig["SMTP_pass"], $ SenderConfig[" SMTP_type"]); if($mail->isLogin) ( // Файлды тіркеңіз if($Attachment) ($mail->addAttachment($Attachment);) // Қосымша алушыларды қосу $mail->addRecipient( " [электрондық пошта қорғалған]"); $mail->addRecipient(" [электрондық пошта қорғалған]"); /* $mail->send(Кімнен, үшін, тақырып, мәтін, тақырып = міндетті емес) */ $SendMail = $mail->send($SenderConfig["SMTP_email"], $Receiver, $Subject, $Text ); // Алушылар тізімін өшіру $mail->clearRecipients(); $mail->clearCC(); $mail->clearBCC(); $mail->clearAttachments(); ) else ( echo "Қате орын алды. SMTP серверіне қосылу"; ) ?>

Сценарийді орнату негізінен $SenderConfig массивіне негізделген, мұнда SMTP:сервер, порт, логин және электрондық пошта құпия сөзін көрсету керек. Әрбір массив кілтін сипаттайық:

SMTP_server - SMTP серверінің мекенжайы (әртүрлі электрондық пошталар үшін жеке мекенжай)

Mail.ru поштасы: smtp.mail.ru порты: 25, 587 және 465 (SSL шифрлауымен)

Яндекс поштасы: smtp.yandex.ru порты: 25, 587 465 (SSL порты)

Rambler поштасы: mail.rambler.ru порты: 25, 587 465 (SSL порты)

Yahoo поштасы: smtp.mail.yahoo.com SSL порты: 465

(Егер сізге тізімде жоқ smtp серверлерінің мекенжайы қажет болса, түсініктемелерде жазыңыз)

SMTP_port - Біз оны жоғарыда әрбір smtp сервері үшін сипаттадық.

SMTP_email - пайдаланушы дәлірек болар еді, бірақ түсінікті болу үшін мен электрондық поштаны жаздым, біз электрондық пошта мекенжайын көрсетеміз.

SMTP_pass - SMTP_email кілтінде мән ретінде көрсетілген электрондық поштаның құпия сөзі


SMTP_type - Әдепкі NULL. Хаттар жіберілетін хаттама. Протоколдар: SSL және TLS

Файлдың толық мекенжайын $Attachment айнымалысында (/var/patch/to/file/File.pdf) көрсету арқылы хатқа тіркемелерді қосуға болады.

Егер сізде сұрақтар болса, оларды төмендегі түсініктемелерде жазыңыз.

PHP поштасы

Бұл функция әдепкі бойынша электрондық поштаны жіберу ретінде жүзеге асырылады. Бұл функция электрондық поштаны қайта жіберу үшін үшінші тарап серверін қажет етпейді. Бұл функцияның дұрыстығын тексеру үшін сайты бар қалтада test.php файлын жасап, сол жерге келесі кодты орналастырыңыз:

Оның орнына қайда "ЭЛЕКТРОНДЫҚ ПОШТААЛушы» Хат жіберілетін электрондық поштаны енгізіңіз.

Бұл файлды сайтыңыздың түбіне орналастырыңыз.

Содан кейін мекенжай жолағына www.YourDomain/test.php енгізіңіз. Егер көрсетілген электрондық поштаға хат келсе, сіздің хостинг хаттарды жіберу функциясымен дұрыс жұмыс істейді » PHP поштасы». Хат спамға түсуі мүмкін, сондықтан оны да тексеру керек.

Егер хат түсініксіз кодтаумен келсе, жолды өзгертіңіз: "пошта жөнелтімі тексерілуде»қосулы "Хатты жөнелтуді тексеру", "Мазмұн түрі: мәтін/html; charset=utf-8".

Браузердің мекенжай жолағы арқылы хатты жіберуді қайталаңыз.

Егер жоғарыда көрсетілген манипуляциялардан кейін сынақ хаты соңғы алушыға жетпесе, сіз хостингтің техникалық қолдауына хабарласуыңыз керек.

Бұл әдістің кемшіліктері арасында бұл әдіс тұрақты жұмыс істемейтінін атап өткен жөн. Хостинг жағында электрондық хаттарды жіберуде үзілістер болуы мүмкін.

Бұл әдістің негізгі кемшілігі - клиенттердің электрондық пошталарына жіберілген барлық хаттар сіздің веб-сайтыңыздан тікелей жіберілгендіктен, пошта қызметтері (gmail, mail.ru, yandex.ru) арқылы танылмайды.

Gmail пошта қызметі бұл хаттарды сұрақ белгісімен және қолтаңбасымен көрсетеді: "Gmail жүйесі бұл хаттың YourDomain доменінен жіберілгенін растай алмады. Бұл спам болуы мүмкін."

Бұл жағдайды болдырмау үшін .

SMTP (қарапайым поштаны тасымалдау протоколы)

SMTP – поштаны жіберу протоколы. Жалпы алғанда, осы протоколды пайдаланып поштаны жіберуді орнату үшін сізге SMTP серверінің өзі қажет. yandex.ru корпоративтік (домендік) поштасын SMTP сервері ретінде пайдаланудың ең көп тараған нұсқасы https://pdd.yandex.ru/ болып табылады.

Ең алдымен бұл қажет шот (пошта) yandex, соның негізінде сіздің доменіңіз үшін электрондық пошталар жасалады: “order@YourDomain” “info@YourDomain”... Негізгі тіркелгі еш жерде көрінбейді және тек болашақта оның негізінде домендік электрондық хаттарды жасау үшін пайдаланылады.

Жеке Yandex тіркелгіңізде авторизациядан кейін https://pdd.yandex.ru/ сілтемесі бойынша домендік пошта жасалады. Бұл пайдаланушылар «Жіберуші» өрісінде көретін домендік электрондық пошта.

Электрондық хаттарды SMTP арқылы жіберу кезінде «Жіберуші» өрісі қажет. Хаттарды жіберу үшін SMTP пайдалану, " комбинациясы Домен" - "Электрондық пошта», осылайша хаттар пошта қызметтері арқылы танылады.


Бұл әдістің кемшіліктерінің арасында домендік пошта портретін «жүктеу» мүмкін еместігін атап өткен жөн, өйткені пошта қызметтерінің өзі бұл функцияны әлі қамтамасыз етпейді.




Жоғарғы