رمز ترخيص 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" ; رؤوس $ .= "من: اسم المرسل " ; // البريد ($to، $subject، $message، $headers)؛ require_once "smtpauth.php" ؛ MailSmtp ($to، $subject، $message، $headers)؛ ) ؟>
إلى من: موضوع: نص: 
 
 

بغرض هذا منبعد العمل بدون وظيفة 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 domain.tld>" "بيان اسم وعنوان المرسل smtpMssg.To = "المشرف @ 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سمتبميل.إرسال (سمتبمسج) " ارسال رسالة %>

كيفية إرسال رسائل البريد الإلكتروني باستخدام 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 = "اختبار المستخدم domain.tld>" .إلى = "المستخدم " .Subject = "مرحبًا، المستخدم" .TextBody = "أكتب هذه الرسالة من برنامج ASP النصي." .إرسال نهاية مع مجموعة cdoMessage = لا شيء محدد iConfig = لا شيء %>

تحتوي بعض أنظمة إدارة المحتوى (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

قد تكون مهتمًا بمعرفة سبب كون النص الخاص بي أفضل من النصوص الأخرى الموجودة في العلن؟! سوف أجيب

  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; // إذا كنت تريد لرؤية رسائل الخطأ، حدد 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 في دليل المقالات).

    "شرط" >

    جهات الاتصال

    تعليق

    "اتصال"العمل = "#" الطريقة = "بريد" >

    نموذج الملاحظات

    لجميع الأسئلة والطلبات ومقترحات الأعمال، يمكنك الاتصال بنا باستخدام نموذج الملاحظات أدناه.

    "كتلة اتصال" >

    "إدخال جهة الاتصال" >

    "نص"المعرف = "اسم جهة الاتصال"الاسم = "اسم جهة الاتصال"عنوان = "يجب أن يكون الاسم باللغة الروسية ويحتوي على 3 أحرف على الأقل" نمط = "{3,}" مطلوب >

  1. "جهة اتصال فارغة" >

    "إدخال جهة الاتصال" >

    "بريد إلكتروني"المعرف = "تواصل بالبريد الاكتروني"الاسم = "تواصل بالبريد الاكتروني"مطلوب >

  2. "موضوع الاتصال" >

  3. "تعليق جهة الاتصال" >

  4. "زر الاتصال" >

    "يُقدِّم"الاسم = "زر الاتصال"القيمة = "يرسل" >

الشكل 1: كود HTML لنموذج الملاحظات

يمكنك رؤية الشكل الذي يبدو عليه نموذج التعليقات الموضح هنا في لقطة الشاشة التالية.

وهكذا يتم إنشاء النموذج المطلوب. والآن يمكنك الانتقال إلى قضايا معالجة البيانات وإرسالها في شكل رسالة بريد إلكتروني.

تثبيت مكتبة PHPMailer

كما ذكرنا سابقًا، لإرسال البريد، سنستخدم مكتبة PHPMailer، والتي ستعمل على تبسيط إرسال البريد الإلكتروني بشكل كبير عبر بروتوكول SMTP مع ترخيص خدمة بريد تابعة لجهة خارجية.

لتثبيته تحتاج إلى تنزيل الملفات الضرورية. يمكن القيام بذلك من خدمة الويب GitHub باستخدام Composer (مدير تبعيات الحزمة لـ PHP). أو ببساطة قم بتنزيل الملفات الضرورية بالطريقة المعتادة.

لقطة الشاشة 73

يوجد أدناه صفحة خدمة الويب GitHub، حيث يتم وضع علامة على رابط التنزيل العادي لمكتبة PHPMailer.

بالإضافة إلى ذلك، يمكن تنزيل أحدث إصدار 6.0.7، الذي تم حفظه وقت كتابة هذا المقال، من المواد المرفقة.

على أية حال، يجب فك ضغط ملف الأرشيف الناتج، وبعد ذلك يجب وضع مجلد PHPMailer-master المستخرج بكل محتوياته في جذر الموقع. وفي الوقت نفسه، من أجل البساطة، يمكنك إعادة تسميته PHPMailer. يوجد أدناه محتويات مجلد PHPMailer الموجود في الدليل الجذر للموقع.

وهكذا قمنا بتثبيت مكتبة PHPMailer. وبعد ذلك يمكننا البدء في إنشاء برنامج نصي سنرسل به رسائل بريد إلكتروني من موقعنا.

نقوم بإنشاء برنامج نصي لإرسال البريد عبر SMTP

لإنشاء البرنامج النصي، يكفي استخدام التوصيات الخاصة باستخدام PHPMailer المقدمة على صفحة GitHub، والتي استخدمناها سابقًا لتنزيل المكتبة.

يشيرون، على وجه الخصوص، إلى أنه في بداية البرنامج النصي، يلزم استيراد فئات PHPMailer إلى مساحة الاسم العالمية. ويتم إعطاء أسطر محددة من التعليمات البرمجية المقابلة. هناك أيضًا أمثلة لاستخدام خصائص وأساليب PHPMailer، بما في ذلك خيار إرسال البريد عبر SMTP.

ولكن إذا لم يكن هذا كافيًا، فيمكنك أيضًا استخدام الوثائق التي تحتوي على وصف لجميع خصائص وأساليب هذه المكتبة.

لقطة الشاشة 74

يوجد أدناه رمز البرنامج النصي لإرسال البريد من نموذج الملاحظات عبر SMTP مع التفويض. حيث يتم إعطاء جميع الأسطر المتعلقة بـ PHPMailer مع الشرح وإبرازها بخلفية فاتحة.

تتم الإشارة إلى باقي الجزء، بما في ذلك الأجزاء المتعلقة بتلقي ومعالجة البيانات من النموذج، والتي كان علينا استخدامها سابقًا في معالجات أخرى، بخلفية داكنة. لقد تمت مناقشتها بشيء من التفصيل سابقًا في مقالة مخصصة خصيصًا لقضايا الحصول على البيانات والتحقق منها من نموذج في PHP. حيث تحدثنا أيضًا عن وظيفة المستخدم العالمية للتحقق من صحة بيانات النموذج ومعالجتها check_symbol().

سنضع هذا البرنامج النصي في نفس ملف kontakty.php الذي أنشأنا فيه نموذج الملاحظات مسبقًا.

    //----برنامج نصي لإرسال البريد عبر SMTP باستخدام PHPMailer----

    // استيراد فئات PHPMailer إلى مساحة الاسم العالمية. يجب أن تكون في الجزء العلوي من البرنامج النصي، وليس داخل الوظيفة

    يستخدم PHPMailer\PHPMailer\PHPMailer ;

    يستخدم PHPMailer\PHPMailer\Exception ;

    لو (!فارغ($_POST["زر الاتصال" ])) (

    $name = $_POST["اسم جهة الاتصال" ];

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

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

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

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

    $subject = check_symbol ($subject, "Message Subject" , "1" , "0" );

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

    تعليق $ = check_symbol (تعليق $، "رسالة نصية", "1" , "0" );

    لو (!فارغ($GLOBALS["تنبيه" ])) (

    تنبيه $= "لم يتم إرسال بيانات النموذج. تم العثور على الأخطاء التالية:\n".$تنبيه؛

    يشمل"alert.php" ;

    آخر {

    // توصيل المكتبة

    يتطلب"PHPMailer/src/PHPMailer.php" ؛

    يتطلب"PHPMailer/src/Exception.php" ؛

    يتطلب"PHPMailer/src/SMTP.php" ؛

    البريد $ = جديد PHPMailer(); // تهيئة الفصل

    $من = " [البريد الإلكتروني محمي]" ; // عنوان البريد الإلكتروني الذي يتم إرسال الرسالة منه

    $ إلى = " [البريد الإلكتروني محمي]" ; // عنوان المستلم

    $البريد -> isSMTP(); // استخدم بروتوكول SMTP

    $mail -> المضيف = "smtp.yandex.ru" ; // عنوان خادم البريد

    البريد $ -> SMTPAuth = حقيقي ; // تمكين وضع التفويض

    البريد $ -> اسم المستخدم = " [البريد الإلكتروني محمي]" ; // تسجيل الدخول من بريد إلكتروني خاص بالمجال متصل بخدمة بريد إلكتروني تابعة لجهة خارجية (في هذه الحالة، Yandex.Mail)

    $البريد -> كلمة المرور = "27MrDon89" ؛ // كلمة المرور لبريد المجال

    $mail -> SMTPSecure = "ssl" ; //بروتوكول التشفير

    $mail -> المنفذ = "465" ؛ // منفذ خادم SMTP

    $mail -> CharSet = "UTF-8" ; //التشفير

    $mail -> setFrom ($from, "Administrator" ); // عنوان واسم المرسل

    $mail -> addAddress ($to, "Administrator" ); // عنوان المستلم واسمه

    البريد $ -> isHTML ( حقيقي ); // قم بتعيين تنسيق البريد الإلكتروني على HTML

    البريد $ -> الموضوع = "تم إرسال نموذج الملاحظات"; // موضوع البريد الإلكتروني (العنوان)

    البريد $ -> الجسم = "

    اسم المرسل: اسم $

    عنوان المرسل: البريد الإلكتروني $

    موضوع الرسالة: $الموضوع

    محتوى الرسالة: تعليق $



    " ; // محتويات الرسالة

    البريد $ -> AltBody = "نص الرسالة البديل"; // بريد إلكتروني بديل إذا كان عميل البريد الإلكتروني لا يدعم تنسيق HTML

    $mail -> SMTPDebug = 0 ; // تمكين تصحيح SMTP: 0 - إيقاف (للاستخدام العادي)، 1 = رسائل العميل، 2 - رسائل العميل والخادم

    لو($البريد -> إرسال()) (

    تنبيه $= "تم الارسال"; // إخراج رسالة في مربع حوار المتصفح حول إرسال الرسالة بنجاح

    آخر {

    تنبيه $= "خطأ، لا يمكن إرسال البريد الإلكتروني:".$البريد -> معلومات الخطأ ; // إخراج رسالة خطأ

    يشمل"alert.php" ;

الشكل 5: البرنامج النصي لإرسال البريد الإلكتروني عبر SMTP بترخيص

كما ترون، فإن جميع الأسطر المرتبطة مباشرة بإرسال رسالة بريد إلكتروني، والتي يتم فيها تحديد الطرق والخصائص اللازمة، تكون مصحوبة بالتعليقات. لذلك، ليس من المنطقي أن نكرر أنفسنا، لكن لا يمكننا أن نتوقف إلا عند بعضها، الأمر الذي يتطلب بالفعل تفسيرات إضافية، وهي:

1. نظرًا لأن الرسالة يتم إرسالها من خدمة بريد تابعة لجهة خارجية، يتم هنا تطبيق الإعدادات المقابلة لخادم SMTP المحدد. في هذه الحالة، بالنسبة لحالة استخدام خادم Yandex.Mail، يتم تطبيق قيم الخصائص التالية:

  • ملكية يستضيف(pos.28) - عنوان خادم البريد بالقيمة smtp.yandex.ru؛
  • ملكية smtpsecure
  • ملكية ميناء

تم أخذ قيم الخصائص هذه من صفحة Yandex.Help الموضحة في لقطة الشاشة التالية.

ولكن يمكن أيضًا الحصول على هذه المعلومات من مصادر أخرى. للقيام بذلك، ما عليك سوى إدخال الاستعلام المناسب في محرك البحث، على سبيل المثال: "خادم Yandex smtp". أين يمكنك العثور على عدد كبير من المراجع حول هذه المسألة.

وبطريقة مماثلة، يمكن الحصول على قيم الإعدادات من خوادم SMTP الأخرى. يوجد أدناه لقطة شاشة لصفحة تعليمات Mail.ru، والتي تعرض إعدادات خادم SMTP لخدمة بريد Mail.ru.

وبالتالي، في حالة استخدام Mail.ru كخادم SMTP لجهة خارجية، يجب تطبيق القيم التالية لخصائص فئة PHPMailer:

  • ملكية يستضيف(pos.28) - عنوان خادم البريد (smtp.mail.ru)؛
  • ملكية smtpsecure(مفتاح 32) - بروتوكول التشفير (SSL)؛
  • ملكية ميناء(مفتاح 33) - منفذ خادم SMTP (465).

وينبغي تطبيق نهج مماثل على خدمات البريد الإلكتروني الأخرى.

2. في الممتلكات اسم المستخدم(الموضع 30) من الضروري الإشارة إلى العنوان الكامل لصندوق بريد المجال. في هذه الحالة، " [البريد الإلكتروني محمي]".

ومع ذلك، إذا كنت تستخدم حسابًا آخر غير حساب بريد المجال لإرسال الرسائل، ولكن عنوانًا مرتبطًا مباشرة بخدمة البريد، على سبيل المثال " [البريد الإلكتروني محمي]"، فيجب أن يكون تسجيل الدخول فقط جزء من العنوان حتى علامة "@". وفي هذه الحالة، سيكون لتسجيل الدخول القيمة "تعليقات".

3. يوفر PHPMailer خاصية SMTPDebug(مفتاح 50)، والذي يسمح لك بعرض مستويات مختلفة من الأخطاء على شاشة المتصفح. تعمل هذه الميزة على تبسيط عملية البحث عن المشكلات بشكل كبير عند تصحيح أخطاء البرنامج النصي.

عادةً، في الوضع العادي، مع تعيين القيمة على 0، يتم تعطيل إخراج معلومات الخطأ التفصيلية. ولكن إذا ظهرت مشاكل عند إرسال البريد، أو أثناء تصحيح الأخطاء، فمن الممكن استخدام قيم أخرى لعرض معلومات أكثر وضوحًا حول الخطأ.

لكي نرى كيف يبدو هذا عمليًا، دعنا ندخل مؤقتًا بعض الأخطاء في الإعدادات. على سبيل المثال، في كلمة مرور بريد المجال (property كلمة المرور، موضع 31). وأيضًا لعرض معلومات تفصيلية حول الخطأ المحدد مؤقتًا في الخاصية SMTPDebug(pos.50) القيمة 1. بعد ذلك، عندما يتم تصحيح كل شيء والتحقق منه، سنقوم بتعطيل وضع تصحيح أخطاء SMTP، واستبدال 1 بـ 0.

في الجزء الأخير من البرنامج النصي، بعد تحديد جميع الخصائص والأساليب الضرورية، يتم استخدام الطريقة لإرسال الرسالة يرسل()) (الموضع 51). وإذا تم إرسال الرسالة، والطريقة يرسل()للكائن بريد $يعود صحيحا، ثم في مربع حوار المتصفح من خلال المتغير $ تنبيهسيتم عرض رسالة حول إرسال البريد الناجح (مفتاح 52).

إذا تعذر إرسال البريد لسبب ما، وبالتالي لا يمكن للطريقة إرجاع صحيح، فستكون هذه الحالة مصحوبة برسالة خطأ مقابلة (مفتاح 55).

التحقق من إرسال البريد الإلكتروني

بعد أن قمنا بإنشاء برنامج نصي لإرسال البريد، بطبيعة الحال، نحتاج إلى إلقاء نظرة على نتيجة "إبداعنا". هل أخذنا كل شيء بعين الاعتبار هنا، ولم نرتكب أي أخطاء؟

للقيام بذلك، دعونا نحاول، على النحو المنشود، إرسال رسالة من المستخدم إلى مسؤول الموقع من نموذج الملاحظات. يوجد أدناه لقطة شاشة لنموذج التعليقات مع ملء الحقول قبل إرسالها.

وهذه هي نتيجة تقديم النموذج.

حيث يتضح من الرسالة الموجودة في مربع حوار المتصفح أنه لا يمكن إرسال الرسالة بسبب مشكلة في اتصال SMTP.

ولكن منذ الآن الملكية SMTPDebug(وضع 50) تم تعيين القيمة 1، ثم يمكننا الاطلاع على معلومات مفصلة عن الخطأ الذي حدث ومعرفة سبب حدوثه.

توضح لقطة الشاشة التالية أنه عند محاولة الاتصال، تم اكتشاف خطأ في المصادقة، مما يعني استخدام معلومات تسجيل دخول أو كلمة مرور غير صحيحة.

بعد إزالة عدم تطابق كلمة المرور (تم استخدام كلمة مرور غير صحيحة سابقًا لتتمكن من التحقق من إخراج معلومات إضافية حول الخطأ)، سنحاول إرسال البريد مرة أخرى.

هذه المرة يبدو أن كل شيء يسير على ما يرام وتلقينا رسالة تفيد بأنه تم إرسال البريد بنجاح. على ما يبدو، باستثناء الخطأ المؤقت الذي تم إدخاله عمدا في كلمة مرور بريد المجال، لم نرتكب أي أخطاء أخرى.

ولكن للتأكد من أن الرسالة قد تم تسليمها بالفعل إلى المرسل إليه، فلندخل البريد بالعنوان [البريد الإلكتروني محمي]وانظر إلى النتيجة.

كما ترون، الرسالة من العنوان [البريد الإلكتروني محمي]والتي أرسلنا منها رسالة بريد إلكتروني باسم "ملاحظات" وصلت بنجاح إلى مسؤول الموقع. وفي الوقت نفسه، يحتوي نص الرسالة على كل المحتوى الذي أنشأناه في البرنامج النصي باستخدام البيانات الواردة من نموذج الملاحظات، وهي:

  • اسم المرسل: نيكولاي؛
  • عنوان المرسل: [البريد الإلكتروني محمي];
  • موضوع الرسالة: التحقق من إرسال البريد.
  • محتوى الرسالة: رسالة تجريبية.

الآن، بعد التحقق من إرسال البريد بنجاح، يمكنك تعطيل وضع تصحيح أخطاء SMTP عن طريق تعيين الخاصية SMTPDebug(pos.50) القيمة 0.

وهكذا، أكملنا مهمة إنشاء أداة لإرسال البريد عبر SMTP بترخيص باستخدام خادم بريد تابع لجهة خارجية.

على سبيل المثال، في المقالة التالية، سننظر في كيفية إرسال رسائل تأكيد بالبريد الإلكتروني لاستعادة بيانات حساب المستخدم المسجل.

ملفات مصدر الموقع

يمكن تنزيل الملفات المصدر للموقع مع التحديثات التي تم إجراؤها في هذه المقالة من المواد الإضافية المرفقة:

  • ملفات الدليل www
  • جداول قاعدة بيانات MySQL

من الشائع جدًا في PHP استخدام البرامج النصية التي تعمل على أتمتة عملية إرسال الرسائل. في هذه المقالة سنلقي نظرة على برنامج نصي بسيط يرسل رسائل إلى المستلمين عبر 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(server, port, user, pass, type); */ /* يمكن أن يكون النوع: 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(From, For, Subject, Text, Subject = اختياري) */ $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)

بريد المتسكع: منفذ mail.rambler.ru: 25، 587 465 (منفذ SSL)

بريد ياهو: smtp.mail.yahoo.com منفذ SSL: 465

(إذا كنت بحاجة إلى عنوان خوادم SMTP غير الموجودة في القائمة، فاكتب في التعليقات)

SMTP_port - لقد وصفناه بالفعل أعلاه لكل خادم SMTP.

SMTP_email - سيكون المستخدم أكثر دقة، ولكن من أجل الوضوح، كتبت بريدًا إلكترونيًا، ونشير إلى عنوان البريد الإلكتروني.

SMTP_pass - كلمة المرور للبريد الإلكتروني الذي تم تحديده كقيمة في مفتاح SMTP_email


SMTP_type - القيمة الافتراضية فارغة. البروتوكول الذي سيتم من خلاله إرسال الرسائل. البروتوكولات: SSL وTLS

يمكنك إضافة مرفقات إلى خطاب ببساطة عن طريق تحديد العنوان الكامل للملف في متغير $Attachment (/var/patch/to/file/File.pdf)

إذا كان لديك أي أسئلة، فاكتبها في التعليقات أدناه.

البريد PHP

يتم تنفيذ هذه الوظيفة بشكل افتراضي كإرسال البريد الإلكتروني. لا تتطلب هذه الوظيفة خادمًا تابعًا لجهة خارجية لإعادة توجيه البريد الإلكتروني. من أجل التحقق من صحة هذه الوظيفة، ما عليك سوى إنشاء ملف test.php في مجلد الموقع ووضع الكود التالي هناك:

حيث بدلا من ذلك "بريد إلكترونيمتلقي" أدخل البريد الإلكتروني الذي سيتم إرسال الرسالة إليه.

ضع هذا الملف في جذر موقعك.

بعد ذلك، أدخل www.YourDomain/test.php في شريط العناوين. إذا تم استلام خطاب على البريد الإلكتروني المحدد، فإن استضافتك تعمل بشكل صحيح مع وظيفة إرسال الرسائل " بريد PHP". من الممكن أن تكون الرسالة قد وصلت إلى البريد العشوائي، لذا يجب التحقق منها أيضًا.

إذا وصلت الرسالة بترميز غير مفهوم، قم بتغيير السطر: "التحقق من إرسال البريد"على "التحقق من إرسال البريد"، "نوع المحتوى: نص/html؛ مجموعة الأحرف = utf-8".

وكرر إرسال الرسالة من خلال شريط العناوين في متصفحك.

إذا لم تصل رسالة الاختبار إلى المستلم النهائي بعد التلاعبات المذكورة أعلاه، فيجب عليك الاتصال بالدعم الفني للاستضافة.

ومن عيوب هذه الطريقة تجدر الإشارة إلى أن هذه الطريقة لا تعمل بشكل متسق. قد تكون هناك انقطاعات في إرسال رسائل البريد الإلكتروني من جانب الاستضافة.

العيب الرئيسي لهذه الطريقة هو أن جميع الرسائل المرسلة إلى رسائل البريد الإلكتروني للعملاء لن تتعرف عليها خدمات البريد (gmail، mail.ru، yandex.ru) حيث تم إرسالها مباشرة من موقع الويب الخاص بك.

تعرض خدمة بريد Gmail هذه الرسائل مع علامة استفهام وتوقيع: "لم يتمكن نظام Gmail من تأكيد إرسال هذه الرسالة من النطاق YourDomain. قد يكون هذا بريدًا عشوائيًا".

لتجنب هذا الوضع .

SMTP (بروتوكول نقل البريد البسيط)

SMTP - بروتوكول نقل البريد. في المجمل، لإعداد إرسال البريد باستخدام هذا البروتوكول، فأنت بحاجة إلى خادم SMTP نفسه. الخيار الأكثر شيوعًا لاستخدام بريد الشركة (المجال) yandex.ru كخادم SMTP هو https://pdd.yandex.ru/.

أولا وقبل كل شيء من الضروري الحساب (البريد) ياندكس، والتي على أساسها سيتم إنشاء رسائل البريد الإلكتروني للمجال الخاص بك: “order@YourDomain” “info@YourDomain”... لن يكون الحساب الرئيسي مرئيًا في أي مكان وسيتم استخدامه فقط لإنشاء رسائل بريد إلكتروني للنطاق بناءً عليه في المستقبل.

بعد التخويل في حساب Yandex الشخصي الخاص بك، يتم إنشاء بريد المجال على الرابط https://pdd.yandex.ru/. هذا هو البريد الإلكتروني للمجال الذي سيراه المستخدمون في حقل "المرسل".

حقل "المرسل" مطلوب عند إرسال رسائل البريد الإلكتروني عبر SMTP. استخدام SMTP لإرسال الرسائل، مزيج من " اِختِصاص" - "بريد إلكتروني"وبالتالي يتم التعرف على الرسائل عن طريق خدمات البريد.


من بين عيوب هذه الطريقة، تجدر الإشارة إلى استحالة "تحميل" صورة بريد المجال، لأن خدمات البريد نفسها لا توفر هذه الوظيفة بعد.




قمة