رمز ترخيص SMTP. إرسال رسائل البريد الإلكتروني (SMTP مقابل بريد PHP). كيفية إرسال رسائل البريد الإلكتروني باستخدام ASP
نظرًا لأن إرسال رسائل مجهولة المصدر من خوادم استضافة Windows الافتراضية محظور، فيجب أن يتم إرسال الرسائل عبر خادم SMTP، والذي من الممكن أيضًا استخدام نظام البريد الخاص بنا من أجله.
كيفية إرسال رسائل البريد الإلكتروني باستخدام PHP؟
استخدام أي فئة PHP تدعم التفويض على خادم SMTP. على سبيل المثال، يمكنك استخدام مجموعة فئات PHPMailer.
يمكنك أيضًا استخدام مثالنا الذي ينفذ إرسال الرسائل باستخدام خادم SMTP، والذي يتطلب إذنًا. لذلك، لا تنس إضافة تفاصيل الوصول المناسبة إلى البرنامج النصي، على سبيل المثال:
// إذا كنت تريد إظهار سجل جلسة SMTP، فيمكنك إلغاء التعليق على السطر التالي. // $_SERVER["debug"] = 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); if (! $sock ) ( printf ("لم يتم إنشاء المقبس\n" ); exit(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SERVER_NAME" ]); smtp_msg($sock, "تسجيل الدخول التلقائي"); 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: " . $subject . "\r\n" . $headers ; $data = $headers . "\r\n\r\n" . $content . "\r\n." ; smtp_msg ($sock , $data ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) الدالة smtp_msg ($sock , $msg ) ( if ( ! $sock ) ( printf ("مقبس مكسور!\n" ); خروج(1 ); ) if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("أرسل منا : ٪س" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf (" المقبس هو down\n" );exit(1); ) else ( if (isset($_SERVER [ "debug" ]) && $_SERVER [ "debug" ]) ( printf ("تم الحصول عليه من الخادم: %s
" , nl2br (htmlspecialchars ($str )); ) $e = انفجار (" " , $str ); $code = array_shift ($e ); $str = Iplode ( " " , $e ); if ($code > 499 ) ( طبعة ( "مشاكل في محادثة SMTP.
الكود %د.
رسائل
" ، $code ، $str ); خروج (1)؛ ) ) ) ؟>
قم بتنزيل مثال لبرنامج نصي جاهز باستخدام وظيفة MailSmtp(): smtpauth.php.sample
يمكنك استخدام الدالة MailSmtp() الموضحة أعلاه لتحل محل الدالة mail() مباشرة؛ فكر في مثال لأبسط نموذج في PHP:
// رؤوس الرسائل، تحدد ترميز الرسالة، والحقول من، إلى، وما إلى ذلك.$headers = "إصدار MIME: 1.0\r\n" ; رؤوس $ .= "نوع المحتوى: نص/html؛ مجموعة الأحرف=windows-1251\r\n"; $headers .= "إلى: $to \r\n" ; رؤوس $ .= "من: اسم المرسلبغرض هذا منبعد العمل بدون وظيفة 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 = false; // تحديد تنسيق الرسالة (صحيح - HTML، خطأ - وليس HTML) message.Body = "نص الرسالة"; // تحديد نص (نص) الرسالة SmtpClient client = new SmtpClient("smtp.site",25); // إنشاء اتصال جديد بالخادم "smtp.site" client.DeliveryMethod = SmtpDeliveryMethod.Network; // يحدد طريقة إرسال الرسائل Client.EnableSsl = false; // يعطل الحاجة إلى استخدام اتصال آمن بالخادم client.UseDefaultCredentials = false; // تعطيل استخدام تفاصيل الترخيص الافتراضية Client.Credentials = NetworkCredential جديد("postmaster@" domain.tld"، "***كلمة المرور***")؛ // تحديد التفاصيل الضرورية (اسم المستخدم وكلمة المرور) للترخيص على خادم SMTP client.Send(message); // أرسل رسالة %>قم بتنزيل مثال لنموذج مكتمل يوضح الاستخدام هذه الطريقة: 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 = false "" الإشارة إلى تنسيق الرسالة (صحيح - HTML، خطأ - وليس HTML)تعتيم SmtpMail كـ SmtpClient جديد("smtp.site"، 25) "الإعلان عن كائن جديد من النوع "SmtpClient" SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "إشارة إلى طريقة تسليم الرسالة SmtpMail.UseDefaultCredentials = خطأ "تعطيل استخدام بيانات اعتماد الترخيص بشكل افتراضي" SmtpMail.EnableSsl = خطأ " يعطل الحاجة إلى استخدام اتصال آمن بالخادم SmtpMail.Credentials = NetworkCredential جديد("postmaster@" domain.tld"، "***كلمة المرور***") "مع الإشارة إلى التفاصيل الضرورية (اسم المستخدم وكلمة المرور) للترخيص على خادم SMTPسمتبميل.إرسال (سمتبمسج) " ارسال رسالة %>هناك أيضًا فئة 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 = "Sender_nameكيفية إرسال رسائل البريد الإلكتروني باستخدام 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") = "كلمة المرور" .انتهى التحديث مع المجموعة cdoMessage = CreateObject("CDO.Message") مع مجموعة cdoMessage .Configuration = iConfig .From = "اختبار المستخدمتحتوي بعض أنظمة إدارة المحتوى (CMS) بالفعل على أدوات مدمجة لإرسال المراسلات أو الوحدات المقابلة؛ دعنا نلقي نظرة على أكثرها شيوعًا.
وورد
بالنسبة لنظام إدارة المحتوى هذا، توجد وحدة نمطية خاصة "WP Mail SMTP"، ويتم وصف مثال لتكوينها في صفحة الوحدة.
انتبه إلى الرسم التوضيحي في المثال؛ في نظام البريد الخاص بنا، من الضروري استخدام المنفذ 25 وتشفير SSL غير مطلوب.
جملة
في لوحة الإدارة، انتقل إلى قسم "الإعدادات العامة"، وحدد علامة التبويب "الخادم". في حقل "البريد"، تحتاج إلى تحديد طريقة الإرسال كـ "خادم SMTP"، وفي الحقول "عنوان خادم SMTP" و"تسجيل الدخول إلى SMTP" و"كلمة مرور SMTP"، حدد التفاصيل المناسبة لنظام البريد، على سبيل المثال: موقع smtp, box@your_domainوالمقابلة كلمة المرور.
دروبال
يحتوي نظام إدارة المحتوى هذا أيضًا على وحدة خاصة به للعمل مع خادم SMTP، استنادًا إلى PHP ميلر.يمكنك تنزيل هذه الوحدة على صفحتها على موقع CMS Drupal، ويتوفر وصف تثبيت الوحدة في الأرشيف معها.
NetCat
لا يحتوي نظام إدارة المحتوى هذا على وظائف مضمنة للعمل مع خادم SMTP. لإرسال البريد باستخدام البرامج النصية للموقع، يمكننا أن نعرض استخدام الحل الخاص بنا؛ لتوصيله، يلزمك تنفيذ الخطوات التالية:
- قم بتنزيل أرشيف بالملفات الضرورية من موقعنا ( send_auth_mail.phpو mail.inc.php) وفك ضغطه على جهاز الكمبيوتر الخاص بك؛
تعديل ملف send_auth_mail.phpمن الأرشيف، مع الإشارة فيه إلى تفاصيل الاتصال بخادم SMTP المطلوب:
- $mail_smtpServer = "موقع smtp"; (عنوان خادم 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يجب استبداله باسم النطاق الخاص بك.
يعمل الحل المقترح مع جميع وحدات NetCat التي تستخدم الوظائف القياسية لنظام إدارة المحتوى هذا لإرسال البريد.
كنت أبحث لفترة طويلة عن حل لإرسال رسائل إلى المستخدمين ليس من خلال وظيفة mail() في 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"; // اسمك - أو اسم موقعك. سيظهر عند القراءة في الحقل "من" $config["smtp_debug"] = false; // إذا كنت تريد لرؤية رسائل الخطأ، حدد true بدلاً من 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: ".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: الخفاش! (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.="To: =?windows-1251?Q؟".str_replace("+"،_"،str_replace("%"،=",urlencode(""))"؟"? =<$mail_to>rn"; $header.="Subject: =?windows-1251?Q؟".str_replace("+"،_"،str_replace("%"،=",urlencode("".$subject."" )))."?=rn"; $header.="MIME-Version: 1.0rn"; $header.="Content-Type: text/html; charset=windows-1251rn"; $header.="Content-Transfer-Encoding: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) (طباعة "فشل الاتصال من الخوادم"; f Close($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"; f Close($smtp_conn) ; Exit; ) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 334) (طباعة "لم يسمح الخادم ببدء التفويض"); fclus ($ smtp_conn); خروج;) fputs($smtp_conn,base64_encode("".$config["smtp_username"].""."rn"); $code = substr(get_data($smtp_conn),0,3000) ؛ إذا ($code!= 334) (اطبع "خطأ في الوصول إلى هذا المستخدم"; f Close($smtp_conn); خروج;) 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,"MAIL FROM:".$config["smtp_email"]."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) (اطبع "رفض الخادم أمر البريد من"; f Close($smtp_conn);exit;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250 AND $code != 251) (اطبع "لم يقبل الخادم أمر RCPT TO"; f Close($smtp_conn);exit;) fputs($smtp_conn,"DATArn"); $code = substr(get_data($smtp_conn),0.3000); if($code!= 354) (اطبع "لم يقبل الخادم البيانات"; f Close($smtp_conn);exit;) fputs($smtp_conn,$header."rn".$message."rn.rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) (اطبع "خطأ في إرسال الرسالة"; f Close($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 لا يعمل :(
هذا كل شيء، النص النهائي بين يديك، ما عليك سوى نسخه وتغيير قيم مصفوفة التكوين $ وسيعمل كل شيء بشكل جيد.
والآن دعونا نلقي نظرة على بعض العناصر التي أود التركيز عليها.
على سبيل المثال، الخطأ الذي نحصل عليه عندما نحاول الإرسال عبر SMTP إلى Google. في البداية نرى نص الخطأ هذا:
لرؤية شيء أكثر تحديدًا، دعنا نعدل الكود قليلاً
Fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); صدى رمز $؛ إذا($code!= 334) (اطبع "لم يسمح الخادم ببدء التفويض"؛ f Close($smtp_conn); خروج;)
وفي النهاية حصلنا على خطأ محدد للغاية
530 5.7.0 يجب إصدار أمر STARTTLS أولاً. x4sm16408296lbn.2-gsmtp
لا أعرف ما يعنيه بالضبط، ولكن أعتقد أن له علاقة بالاتصال الآمن وغير الآمن. لا أعرف كيفية التخلص منه حتى الآن، لذلك يظل Gmail غير مهزوم في الوقت الحالي.
2019-08-05
مرحبا عزيزي الزائر!
أرجو أن تسامحوني على التأخير في تحديث المدونة. ولكن هناك تفسيرا مفهوما تماما لهذا. بعد كل شيء، كان الصيف، والداشا، والضيوف، والغابات، والمياه، وأكثر من ذلك بكثير، وهو ما لم يسمح لي بمعالجة قضايا إنشاء موقع على شبكة الإنترنت. لكنني الآن تحررت قليلا، وقد غادر الضيوف، وأعتقد أنني الآن سأكون بالتأكيد قادرا على إيلاء الاهتمام الواجب لهذا.
لذلك، بعد أن قمنا في المقالة الأخيرة بربط بريد مجالنا بإحدى خدمات البريد، فلنرى الآن كيف يمكنك إرسال بريد إلكتروني من الموقع. علاوة على ذلك، وبطريقة لا تنتهي رسائلنا في الرسائل الاقتحامية (SPAM)، ولكن يتم تسليمها بشكل موثوق وبدرجة عالية من الاحتمال إلى مستلمينا.
بشكل عام، هناك وظيفة mail() مدمجة لإرسال الرسائل بلغة PHP. ولكن تجدر الإشارة إلى أنه على الرغم من بساطة هذه الطريقة (في هذه الحالة، لإرسال رسائل يكفي تحديد سطر واحد فقط من التعليمات البرمجية مع معلمات معينة)، فإن استخدام هذا الخيار له عيب كبير يتعلق بمشكلة الرسائل الاقتحامية (SPAM) .
الحقيقة هي أن مرشحات مكافحة البريد العشوائي لخوادم البريد من جانب المستلم لا تفضل الرسائل المرسلة عبر وظيفة mail(). وفي معظم الحالات، تتم تصفية هذه الرسائل أو حتى حذفها قبل وصولها إلى المرسل إليه.
ومن أجل القضاء على مثل هذه الحالات قدر الإمكان، عادة ما يتم استخدام خيار آخر، حيث يتم إرسال الرسائل كما لو تم ذلك عن طريق خدمة بريد تابعة لجهة خارجية.
تسمى هذه الطريقة بإرسال البريد عبر SMTP بتفويض. وهو ما سنلقي نظرة عليه اليوم باستخدام مثال إرسال نموذج الملاحظات. علاوة على ذلك، لهذا سوف نستخدم مكتبة PHPMailer المعروفة والشائعة إلى حد ما، والتي تتيح لك تنظيم إرسال الرسائل عبر SMTP بكل بساطة.
- كيف سنرسل رسائل التعليقات
- إنشاء نموذج الملاحظات
- تثبيت مكتبة PHPMailer
- نقوم بإنشاء برنامج نصي لإرسال البريد عبر SMTP
- التحقق من إرسال البريد الإلكتروني
- ملفات مصدر الموقع
كيف سنرسل رسائل التعليقات
قبل أن نبدأ العمل العملي لإرسال رسائل الملاحظات، دعونا أولاً نقرر كيف سنفعل ذلك.
تم تصميم نموذج الملاحظات ليتيح للمستخدم التواصل مع مدير الموقع لتوصيل رسالته. عادةً ما يتكون هذا النموذج من عدة حقول وزر "إرسال".
من حيث المبدأ، لإرسال بريد إلكتروني يكفي استخدام عدد قليل من الحقول التي توفر معلومات كافية عن المستخدم ومحتوى الرسالة، مثل:
- "الاسم" - لإدخال اسم مرسل الرسالة؛
- "البريد الإلكتروني" - لعنوان البريد الإلكتروني للمرسل؛
- "موضوع الرسالة"؛
- "رسالة نصية".
على الرغم من أنه يمكنك إضافة الآخرين. على سبيل المثال، رقم الهاتف، إذا كان ذلك ضروريًا حقًا.
في حالتنا، سيتم إرسال هذه الرسائل إلى عنوان مسؤول الموقع من صندوق بريد حقيقي مع تفويض من خدمة البريد التي يتصل بها نطاقنا.
نظرًا لأننا ركزنا في المقالة السابقة على التحقق من اتصال بريد المجال بخدمة Yandex.Mail، فسنرسل بريدًا لهذا الخيار. على الرغم من أن هذا ليس مهما. سترى أدناه تلك الخيارات التي ستسمح لك، عند تغييرها، بإرسال بريد إلكتروني عبر خادم البريد Mail.ru.
كصندوق بريد حقيقي سيتم إرسال الرسائل منه، سنستخدم حساب مستخدم بريد المجال الذي تم إنشاؤه حديثًا، على سبيل المثال مع العنوان [البريد الإلكتروني محمي]. وسنرسل هذه الرسائل إلى صندوق بريد المسؤول [البريد الإلكتروني محمي]والتي قمنا بإنشائها مسبقًا في المقالة السابقة.
وبالتالي، فإن مرسل الرسالة من نموذج الملاحظات سيكون صندوق البريد [البريد الإلكتروني محمي].، والمتلقي - [البريد الإلكتروني محمي]. في هذه الحالة، سيتم نقل جميع المعلومات المتعلقة بالمستخدم الذي أرسل الرسالة بمحتوياتها في نص الرسالة المرسلة.
إنشاء نموذج الملاحظات
بعد أن اتخذنا قرارًا بشأن إجراءات إرسال الرسائل، سنقوم الآن بإنشاء نموذج ملاحظات يمكننا من خلاله القيام بذلك.
يوجد أدناه كود HTML الخاص بهذا النموذج، والذي سنضعه في صفحة "جهات الاتصال" (ملف kontakty.php في دليل المقالات).