Smtp අවසර කේතය. ඊමේල් යැවීම (SMTP එදිරිව තැපැල් PHP). ASP භාවිතයෙන් ඊමේල් යවන්නේ කෙසේද
අතථ්ය වින්ඩෝස් සත්කාරක සේවාදායකයන්ගෙන් නිර්නාමික පණිවිඩ යැවීම තහනම් බැවින්, ලිපි යැවීම SMTP සේවාදායකයක් හරහා සිදු කළ යුතු අතර, ඒ සඳහා අපගේ තැපැල් පද්ධතිය භාවිතා කිරීමට ද හැකිය.
PHP භාවිතයෙන් ඊමේල් යවන්නේ කෙසේද?
smtp සේවාදායකයේ අවසරය සඳහා සහාය දක්වන ඕනෑම PHP පන්තියක් භාවිතා කිරීම. උදාහරණයක් ලෙස, ඔබට PHPMailer පන්ති කට්ටලය භාවිතා කළ හැකිය.
ඔබට අවසරය අවශ්ය smtp සේවාදායකයක් භාවිතයෙන් ලිපි යැවීම ක්රියාත්මක කරන අපගේ උදාහරණය ද භාවිතා කළ හැකිය. එමනිසා, ස්ක්රිප්ටයට සුදුසු ප්රවේශ විස්තර එක් කිරීමට අමතක නොකරන්න, උදාහරණයක් ලෙස:
// ඔබට SMTP සැසි ලොගය පෙන්වීමට අවශ්ය නම්, ඔබට පහත පේළිය අදහස් දැක්වීමෙන් ඉවත් කළ හැක. // $_SERVER ["දෝෂ නිරාකරණය"] = true;ශ්රිතය MailSmtp ($reciever, $subject, $content, $headers, $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 ($sock, 512); නම් (! $sock ) ( printf ( "Socket is not නිර්මිත\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 = "විෂය: " . $subject . "\r\n" . $headers ; $data = $ශීර්ෂ . "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) ශ්රිතය smtp_msg ($sock , $msg ) ( නම් ( නම් ! $sock ) ( printf ("Broken socket!\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 පහළ\n" ); පිටවීම(1); ) වෙනත් (ඉසෙට්($_SERVER ["දෝෂ නිරාකරණය"]) && $_SERVER ["දෝෂ නිරාකරණය" ]) (printf ("සේවාදායකයෙන් ලබාගත්තේ: %s
" , nl2br (htmlspecialchars ($str)); ) $e = පිපිරවීම (" " , $str ); $code = array_shift ($e ); $str = implode ( " " , $e ); නම් ($code > 499) ( printf ( "SMTP සංවාදයේ ගැටළු.
කේතය %d.
පණිවිඩය %s
" , $කේතය , $str ); පිටවීම (1); )) ?>
MailSmtp() ශ්රිතය සමඟ සූදානම් කළ පිටපතක උදාහරණයක් බාගන්න: smtpauth.php.sample
තැපැල්() ශ්රිතය සෘජුවම ප්රතිස්ථාපනය කිරීමට ඔබට ඉහත විස්තර කර ඇති MailSmtp() ශ්රිතය භාවිතා කළ හැක; PHP හි ඇති සරලම ආකෘතියේ උදාහරණයක් සලකා බලන්න:
// පණිවිඩ ශීර්ෂයන්, ඔවුන් පණිවිඩ කේතනය, සිට, ක්ෂේත්ර වෙත, ආදිය අර්ථ දක්වයි.$headers = "MIME-අනුවාදය: 1.0\r\n" ; $ශීර්ෂ .= "අන්තර්ගත වර්ගය: පෙළ/html; charset=windows-1251\r\n"; $headers .= "වෙත: $to \r\n" ; $ශීර්ෂ .= "වෙතින්: යවන්නාගේ නමපිනිස මෙම පෝරමය mail() ශ්රිතය නොමැතිව ක්රියා කළෙමු, අපි smtpauth.php ගොනුව require_once හරහා ඇතුළත් කර එහි විස්තර කර ඇති MailSmtp() ශ්රිතය ලෙස හැඳින්වුවෙමු, 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.To.Add(" [ඊමේල් ආරක්ෂිත]"); // ලබන්නාගේ ලිපිනය එකතු කිරීම message.From = නව තැපැල් ලිපිනය("from@ domain.tld", "යවන්නාගේ නම"); // යවන්නාගේ නම සහ ලිපිනය සඳහන් කිරීම message.Subject = "පණිවිඩ විෂය"; // ලිපියේ විෂය සඳහන් කිරීම message.BodyEncoding = System.Text.Encoding.UTF8; // අක්ෂර කේතනය සඳහන් කිරීම message.IsBodyHtml = අසත්ය; // අකුරු ආකෘතිය සඳහන් කිරීම (සත්ය - HTML, අසත්ය - HTML නොවේ) message.Body = "පණිවිඩ පෙළ"; // ලිපියේ පෙළ (ශරීරය) සඳහන් කිරීම SmtpClient client = නව SmtpClient("smtp.site",25); // "smtp.site" සේවාදායකයට නව සම්බන්ධතාවයක් නිර්මාණය කිරීම client.DeliveryMethod = SmtpDeliveryMethod.Network; // පණිවිඩ යැවීමේ ක්රමය නිර්වචනය කරයි client.EnableSsl = අසත්ය; // සේවාදායකයට ආරක්ෂිත සම්බන්ධතාවයක් භාවිතා කිරීමේ අවශ්යතාවය අක්රීය කරයි client.UseDefaultCredentials = බොරු; // පෙරනිමි අවසර විස්තර භාවිතය අක්රීය කරන්න client.Credentials = නව NetworkCredential("postmaster@ domain.tld", "***මුරපදය***"); // SMTP සේවාදායකයේ අවසරය සඳහා අවශ්ය විස්තර (පරිශීලක නාමය සහ මුරපදය) සඳහන් කිරීමසේවාදායකයා.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", "Sender_name") smtpMssg.To.Add (" [ඊමේල් ආරක්ෂිත]") "ලබන්නාගේ ලිපිනය එකතු කිරීම smtpMssg.Subject = "ඊමේල් විෂය" "ලිපියේ විෂය පිළිබඳ ඇඟවීම smtpMssg.Body = "පණිවිඩ පෙළ" " ලිපියේ පෙළ (ශරීරය) පිළිබඳ ඇඟවීම smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 "අකුරු කේතනය කිරීමේ ඇඟවීම smtpMssg.IsBodyHtml = අසත්ය "අකුරු ආකෘතියේ ඇඟවීම (සත්ය - HTML, අසත්ය - HTML නොවේ)නව SmtpClient ලෙස SmtpMail අඳුරු කරන්න("smtp.site", 25) "SmtpClient" වර්ගයේ නව වස්තුවක් ප්රකාශ කිරීම SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "ලිපි භාරදීමේ ක්රමයේ ඇඟවීම SmtpMail.UseDefaultCredentials = False "පෙරනිමියෙන් අවසර අක්තපත්ර භාවිතය අක්රිය කිරීම" SmtpMail.EnableSsl = වැරදියි " සේවාදායකයට ආරක්ෂිත සම්බන්ධතාවයක් භාවිතා කිරීමේ අවශ්යතාවය අක්රීය කරයි 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 = "යවන්නා_නම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" .අයිතමය("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "මුරපදය" .Set සමඟ අවසානය යාවත්කාලීන කරන්න cdoMessage = CreateObject("CDO.Message") cdoMessage Set සමඟ .Configuration = iConfig . = "පරීක්ෂණ පරිශීලකසමහර CMS දැනටමත් ලිපි හුවමාරු කිරීම හෝ අනුරූප මොඩියුල යැවීම සඳහා ගොඩනඟන ලද මෙවලම් ඇත; අපි වඩාත් ජනප්රිය ඒවා දෙස බලමු.
Wordpress
මෙම CMS සඳහා "WP Mail SMTP" විශේෂ මොඩියුලයක් ඇත, එහි වින්යාසය පිළිබඳ උදාහරණයක් මොඩියුල පිටුවේ විස්තර කර ඇත.
උදාහරණයේ ඇති නිදර්ශනය කෙරෙහි අවධානය යොමු කරන්න; අපගේ තැපැල් පද්ධතියේ, වරාය 25 භාවිතා කිරීම අවශ්ය වන අතර SSL සංකේතනය අවශ්ය නොවේ.
ජූම්ලා
පරිපාලන පුවරුවේ, "සාමාන්ය සැකසුම්" කොටස වෙත යන්න, "සේවාදායක" ටැබය තෝරන්න. “තැපැල්” ක්ෂේත්රය තුළ, ඔබ යැවීමේ ක්රමය “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 හි තැපැල්() ක්රියාකාරිත්වය හරහා නොව SMTP තැපැල් සේවාදායකයන් හරහා පරිශීලකයින්ට ලිපි යැවීමට මම දිගු කලක් විසඳුමක් සොයමින් සිටියෙමි. අන්තර්ජාලයේ විවිධ තොරතුරු විශාල ප්රමාණයක් නොමැති අතර එහි ඇති දේ හරියටම ක්රියා නොකරයි, නැතහොත් කිසිසේත් ක්රියා නොකරයි. එමනිසා, මම වෙබ් අඩවියේ ඉදිරිපත් කර ඇති සූදානම් කළ ඒවා මත පදනම්ව සෑම දෙයක්ම එකට එකතු කර මගේම කේතය ලිව්වෙමි.
SMTP හරහා යවන්නේ ඇයි සහ තැපෑලෙන් ()
මගේ පිළිතුර ඉතා සරලයි - යම් කාලයක් සඳහා, වෛරස් මගේ සේවාදායකය හරහා ලිපි ටොන් ගණනක් යවා ඇති අතර, එමඟින් මගේ IP ලිපිනය බොහෝ තැපැල්කරුවන් විසින් තහනම් කිරීමට හේතු විය, විශේෂයෙන් gmail.com, සහ මේ සම්බන්ධයෙන් පරිශීලකයින්ට ලිපි ලැබිය හැකිය, එබැවින් මම විකල්පයක් සෙවීමට සිදු විය, මට එය හමු විය - මෙය SMTP වේ
මගේ පිටපත එළිමහනේ වැතිර සිටින අනෙක් ඒවාට වඩා හොඳ වන්නේ මන්දැයි ඔබ උනන්දු විය හැකිය?! මම උත්තර දෙන්නම්
- එය Yandex, Rambler, Mail සමඟ ක්රියා කරයි (gmail දිනා ගැනීමට නොහැකි විය)
- කේතය හිස් කරන්න. එය සැකසීමට, පේළි කිහිපයක් වෙනස් කරන්න
- HTML ආකෘතියෙන් ඊමේල් යවයි
මගේ පිටපතේ ඇති වාසි මෙන්න, මම අන්තර්ජාලයේ කොතැනකවත් සොයා නොගත් නමුත්, ඒ සෑම එකක්ම මම මට අවශ්ය සියල්ල ලබා ගත්තෙමි. ඉතින්, අපි කේතය දෙස බලමු.
කාර්යය smtpmail($mail_to, $subject, $message, $service="yandex") ( $config["smtp_charset"] = "windows-1251"; //පණිවිඩ කේතනය. (හෝ UTF-8, ආදිය) $config [ "smtp_from"] = "mashintop.ru"; //ඔබේ නම - හෝ ඔබේ වෙබ් අඩවියේ නම. "From" ක්ෂේත්රයෙන් කියවන විට පෙන්වනු ඇත $config["smtp_debug"] = අසත්ය; //ඔබට අවශ්ය නම් දෝෂ පණිවිඩ බැලීමට, අසත්ය $config["smtp_port"] = "25" වෙනුවට true යන්න සඳහන් කරන්න; // Work port. ඔබට විශ්වාස නැතිනම් වෙනස් නොකරන්න. 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 MY G:i:s")." +0700rn"; $header.="වෙතින්: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config[" smtp_from"]."")))"?=<".$config["smtp_email"].">rn"; $header.="X-Mailer: The Bat! (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.="පණිවිඩ-ID:<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"" ))). charset=windows-1251rn"; $header.="Content-Transfer-Encoding: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) (මුද්රණය "සේවාදායකයන්ගෙන් සම්බන්ධතාව අසාර්ථකයි"; fclose($smtp_conn); පිටවීම;) $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 hello error" මුද්රණය කරන්න; fclose($smtp_conn) ; පිටවීම; ) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 334) (මුද්රණය "සේවාදායකය අවසරය ආරම්භ කිරීමට අවසර දුන්නේ නැත"; fclose ($ smtp_conn); පිටවීම;) 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); පිටවීම;) fputs($smtp_conn,"තැපැල් වෙතින්:".$config["smtp_email"]."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) ("සේවාදායකය MAIL FROM විධානය ප්රතික්ෂේප කළේය"; fclose($smtp_conn); පිටවීම;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250 AND $code != 251) ("සේවාදායකය RCPT TO විධානය පිළිගත්තේ නැත" මුද්රණය කරන්න; fclose($smtp_conn); exit;) fputs($smtp_conn,"DATArn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 354) ("සේවාදායකය DATA පිළිගත්තේ නැත" මුද්රණය කරන්න; 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) == " " ) (බිඳීම;)) $data ආපසු දෙන්න;) $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 අරාවේ අගයන් වෙනස් කරන්න, එවිට සියල්ල හොඳින් ක්රියා කරයි.
දැන් මම අවධානය යොමු කිරීමට කැමති සමහර අංග දෙස බලමු.
උදාහරණයක් ලෙස, අපි SMTP හරහා Google වෙත යැවීමට උත්සාහ කරන විට අපට ලැබෙන දෝෂය. මුලදී අපට පෙනෙන්නේ මෙම දෝෂ පෙළ:
වඩාත් නිශ්චිත දෙයක් බැලීමට, අපි කේතය ටිකක් වෙනස් කරමු
Fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); echo $ කේතය; if($code != 334) ("සේවාදායකය අවසරය ආරම්භ කිරීමට ඉඩ නොදුන්" මුද්රණය කරන්න; fclose($smtp_conn); පිටවීම;)
අවසානයේදී අපට ඉතා නිශ්චිත දෝෂයක් ලැබේ
530 5.7.0 පළමුව STARTTLS විධානයක් නිකුත් කළ යුතුය. x4sm16408296lbn.2 - gsmtp
එහි තේරුම කුමක්දැයි මම හරියටම නොදනිමි, නමුත් එය ආරක්ෂිත, අනාරක්ෂිත සම්බන්ධතාවයක් සමඟ සම්බන්ධයක් ඇති බව මම විශ්වාස කරමි. මම තවමත් එයින් මිදෙන්නේ කෙසේදැයි නොදනිමි, එබැවින් gmail මේ මොහොතේ අපරාජිතව පවතී.
2019-08-05
ආයුබෝවන්, හිතවත් අමුත්තා!
බ්ලොගය යාවත්කාලීන කිරීම ප්රමාද වීම ගැන කරුණාකර මට සමාව දෙන්න. නමුත් මේ සඳහා සම්පූර්ණයෙන්ම තේරුම්ගත හැකි පැහැදිලි කිරීමක් තිබේ. සියල්ලට පසු, එය ගිම්හානය, dacha, අමුත්තන්, වනාන්තර, ජලය සහ තවත් බොහෝ දේ, වෙබ් අඩවියක් නිර්මාණය කිරීමේ ගැටළු විසඳීමට මට ඉඩ දුන්නේ නැත. නමුත් දැන් මම ටිකක් නිදහස් වී ඇත, අමුත්තන් පිටව ගොස් ඇත, මම හිතන්නේ දැන් මට මේ පිළිබඳව නිසි අවධානයක් යොමු කිරීමට හැකි වනු ඇත.
ඉතින් පහුගිය ලිපියෙන් අපි අපේ ඩොමේන් එකේ මේල් එක තැපැල් සේවා එකකට සම්බන්ධ කළාට පස්සේ දැන් බලමු කොහොමද සයිට් එකෙන් ඊමේල් යවන්නේ කියලා. එපමනක් නොව, අපගේ ලිපි SPAM වලින් අවසන් නොවන පරිදි, නමුත් විශ්වසනීයව, ඉහළ සම්භාවිතාවක් සහිතව, අපගේ ලබන්නන් වෙත ලබා දෙනු ලැබේ.
සාමාන්යයෙන්, PHP හි ලිපි යැවීම සඳහා බිල්ට්-ඉන් තැපැල්() ශ්රිතයක් ඇත. නමුත් මෙම ක්රමයේ සරල බව තිබියදීත් (මෙම අවස්ථාවෙහිදී, ලිපි යැවීමට යම් පරාමිතීන් සහිත එක් කේතයක් පමණක් සඳහන් කිරීම ප්රමාණවත් වේ), මෙම විකල්පය භාවිතා කිරීම SPAM හි ගැටළුව සමඟ සම්බන්ධ සැලකිය යුතු අඩුපාඩුවක් ඇති බව සැලකිල්ලට ගත යුතුය. .
කාරණය නම් ලබන්නාගේ පැත්තේ ඇති තැපැල් සේවාදායකයන්ගේ SPAM විරෝධී පෙරහන් තැපැල්() ශ්රිතය හරහා යවන ලිපි වලට සැබවින්ම අනුග්රහය නොදක්වයි. බොහෝ අවස්ථාවලදී, එවැනි පණිවිඩ ලිපිනකරු වෙත ළඟා වීමට පෙර පෙරීම හෝ මකා දමයි.
එවැනි අවස්ථා හැකිතාක් ඉවත් කිරීම සඳහා, වෙනත් විකල්පයක් සාමාන්යයෙන් භාවිතා කරනු ලැබේ, එය තෙවන පාර්ශවීය තැපැල් සේවාවක් විසින් සිදු කරන ලද පරිදි ලිපි යවනු ලැබේ.
මෙම ක්රමය SMTP හරහා අවසරය සහිතව තැපැල් යැවීම ලෙස හැඳින්වේ. ප්රතිපෝෂණ පෝරමයක් යැවීමේ උදාහරණය භාවිතා කරමින් අපි අද බලමු. එපමණක් නොව, මේ සඳහා අපි තරමක් ප්රසිද්ධ සහ ජනප්රිය PHPMailer පුස්තකාලය භාවිතා කරන්නෙමු, එමඟින් ඔබට SMTP හරහා ලිපි යැවීම සරලව සංවිධානය කිරීමට ඉඩ සලසයි.
- අපි ප්රතිපෝෂණ ලිපි යවන්නේ කෙසේද
- ප්රතිපෝෂණ පෝරමයක් නිර්මාණය කිරීම
- PHPMailer පුස්තකාලය ස්ථාපනය කිරීම
- අපි SMTP හරහා තැපැල් යැවීම සඳහා ස්ක්රිප්ට් එකක් සාදන්නෙමු
- ඊමේල් යැවීම පරීක්ෂා කිරීම
- අඩවි මූලාශ්ර ගොනු
අපි ප්රතිපෝෂණ ලිපි යවන්නේ කෙසේද
අපි ප්රතිපෝෂණ ලිපි යැවීමේ ප්රායෝගික වැඩ ආරම්භ කිරීමට පෙර, අපි එය කරන්නේ කෙසේදැයි මුලින්ම තීරණය කරමු.
ප්රතිපෝෂණ පෝරමය නිර්මාණය කර ඇත්තේ පරිශීලකයාට තම පණිවිඩය ප්රකාශ කිරීම සඳහා අඩවි පරිපාලකයා සමඟ සන්නිවේදනය කිරීමට ඉඩ සලසන ලෙසය. සාමාන්යයෙන්, මෙම පෝරමය ක්ෂේත්ර කිහිපයකින් සහ "ඉදිරිපත් කරන්න" බොත්තමකින් සමන්විත වේ.
ප්රතිපත්තිමය වශයෙන්, විද්යුත් තැපෑලක් යැවීම සඳහා, පරිශීලකයා සහ පණිවිඩයේ අන්තර්ගතය පිළිබඳ ප්රමාණවත් තොරතුරු සපයන ක්ෂේත්ර කිහිපයක් පමණක් භාවිතා කිරීම ප්රමාණවත් වේ:
- "නම" - පණිවිඩ යවන්නාගේ නම ඇතුළත් කිරීමට;
- "ඊමේල්" - යවන්නාගේ ඊමේල් ලිපිනය සඳහා;
- "හසුන් මාතෘකාව";
- "පණිවිඩ පෙළ".
ඔබට වෙනත් අය එකතු කළ හැකි වුවද. උදාහරණයක් ලෙස, දුරකථන අංකයක්, මෙය ඇත්ත වශයෙන්ම අවශ්ය නම්.
අපගේ නඩුවේදී, අපගේ වසම සම්බන්ධ කර ඇති තැපැල් සේවාවේ අවසරය ඇති සැබෑ තැපැල් පෙට්ටියකින් එවැනි ලිපි අඩවි පරිපාලකගේ ලිපිනයට යවනු ලැබේ.
පෙර ලිපියෙන් අපි Yandex.Mail සේවාව වෙත වසම් තැපැල් සම්බන්ධතාවය පරීක්ෂා කිරීම කෙරෙහි අවධානය යොමු කළ බැවින්, අපි මෙම විකල්පය සඳහා තැපැල් යවමු. මෙය වැදගත් නොවුනත්. වෙනස් වූ විට, Mail.ru තැපැල් සේවාදායකය හරහා විද්යුත් තැපෑල යැවීමට ඔබට ඉඩ සලසන එම විකල්ප ඔබට පහතින් පෙනෙනු ඇත.
ලිපි යවනු ලබන සැබෑ තැපැල් පෙට්ටියක් ලෙස, අපි අලුතින් සාදන ලද වසම් තැපැල් පරිශීලකයෙකුගේ ගිණුම භාවිතා කරන්නෙමු, ලිපිනය සමඟ කියන්න [ඊමේල් ආරක්ෂිත]. තවද අපි මෙම ලිපි පරිපාලකගේ තැපැල් පෙට්ටියට යවමු [ඊමේල් ආරක්ෂිත], අපි කලින් ලිපියේ කලින් නිර්මාණය කළෙමු.
මේ අනුව, ප්රතිපෝෂණ පෝරමයෙන් ලිපිය යවන්නා තැපැල් පෙට්ටිය වනු ඇත [ඊමේල් ආරක්ෂිත]., සහ ලබන්නා - [ඊමේල් ආරක්ෂිත]. මෙම අවස්ථාවෙහිදී, එහි අන්තර්ගතය සමඟ පණිවිඩය යැවූ පරිශීලකයා පිළිබඳ සියලු තොරතුරු යවන ලද ලිපියේ ශරීරය තුළ සම්ප්රේෂණය වේ.
ප්රතිපෝෂණ පෝරමයක් නිර්මාණය කිරීම
අපි ලිපි යැවීමේ ක්රියා පටිපාටිය තීරණය කළ පසු, අපි දැන් ප්රතිපෝෂණ පෝරමයක් සාදන්නෙමු, එය සමඟ අපි මෙය කරන්නෙමු.
පහත දැක්වෙන්නේ මෙම පෝරමය සඳහා වන HTML කේතය, අපි "සම්බන්ධතා" පිටුවෙහි (ලිපි නාමාවලියෙහි kontakty.php ගොනුව) තබනු ඇත.