العمل مع البريد الإلكتروني. إرسال بريد إلكتروني آليًا باستخدام خدمات متنوعة أرسل رسالة إلى البريد ج

قائد السفينة 14 أكتوبر 2013 الساعة 07:29 مساءً

برمجيا إرسال البريد الإلكتروني باستخدام خدمات متنوعة

  • .صافي،

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

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

أول شيء لا يجب فعله بهذه الأمثلة هو استخدام System.Web.Mail ، الذي تم إهماله لفترة طويلة ، والبدء بـ استوديو مرئي 2010 مكتبة System.Web حتى لا تضيف ، دون معرفة المسار الكامل لمكتبة الارتباط الديناميكي المقابلة.
بدلاً من ذلك ، يُقترح استخدام مكتبة System.Net.
باستخدام System.Net ؛ باستخدام System.Net.Mail ؛
لذلك ، أبسط ، هو الأكثر أهمية وغالبًا ما يتم استخدامه هو إرسال رسالة من ملف خادم البريدالذي تم تكوين عميل SMTP عليه. كما تفهم ، يمكن أن يكون الخادم إما هو الخادم الذي يعمل عليه التطبيق ، أو الخادم البعيد ، والذي يحق لك إرسال رسائل بدون إذن إضافي عليه.

نموذج رمز لإرسال رسالة من جهاز محلي:
", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" 127.0.0.1 ")) (// يجب أن يكون العنوان هنا خادم البريد والمنفذ إذا لزم الأمر sc.Send (مم) ؛))

استخدام خدمات بريديةمثل Gmail و Yandex و Mail.ru وما إلى ذلك. كل شيء هو نفسه ، تتم إضافة المعلمات فقط مع الإذن.

خادم SMTP: smtp.gmail.com
المنفذ: 587
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.gmail.com "، 587)) (sc. EnableSsl = true ؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network ؛ sc.UseDefaultCredentials = false ؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" GmailPassword ") ؛ sc.Send (مم) ؛))

خادم SMTP: smtp.yandex.ru
المنفذ: 25
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.yandex.ru "، 25)) (sc. EnableSsl = true؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network؛ sc.UseDefaultCredentials = false؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" YandexPassword ") ؛ sc.Send (مم) ؛))

خادم SMTP: smtp.mail.ru
المنفذ: 25
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.mail.ru "، 25)) (sc. EnableSsl = true ؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network ؛ sc.UseDefaultCredentials = false ؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" MailRuPassword ") ؛ sc.Send (مم) ؛))
اذا كنت تمتلك صندوق بريدعلى خدمة mail.ru تنتهي بـ inbox.ru أو list.ru أو bk.ru ، ثم يتغير عنوان خادم SMTP وفقًا لذلك (smtp.inbox.ru ، smtp.list.ru و smtp.bk.ru).

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

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

العلامات: بريد إلكتروني ، إرسال رسائل بريد إلكتروني ، بروتوكول smtp

واحدة من أكثر الوظائف المطلوبة على الموقع هي نموذج الطلب أو الطلب ، حيث يتم إرسال البيانات من خلال البريد إلى مالك الموقع. كقاعدة عامة ، تكون هذه النماذج بسيطة وتتكون من حقلين أو ثلاثة حقول لإدخال البيانات. كيف تنشئ نموذج الطلب هذا؟ سيتطلب هذا استخدام اللغة ترميز HTMLولغة برمجة PHP.

لغة ترميز HTML نفسها بسيطة ، ما عليك سوى معرفة كيفية ومكان وضع علامات معينة. مع لغة برمجة PHP ، تصبح الأمور أكثر تعقيدًا بعض الشيء.

لن يكون من الصعب على المبرمج إنشاء مثل هذا النموذج ، ولكن بالنسبة لمبرمج HTML ، قد تبدو بعض الإجراءات صعبة.

قم بإنشاء نموذج لإرسال البيانات بتنسيق html

السطر الأول سيكون التالي

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

دعنا نعود إلى النموذج. سيحتوي السطر الثاني على حقل لإدخال اسمك الكامل. لديه الكود التالي:

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

السطر التالي:

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

السطر التالي سيكون زر "إرسال":

وسيكون السطر الأخير في النموذج هو العلامة

الآن دعونا نجمع كل ذلك معًا.





الآن سنجعل الحقول في النموذج إلزامية. لدينا الكود التالي:





قم بإنشاء ملف يقبل البيانات من نموذج HTML

سيكون هذا ملفًا باسم send.php

في الملف ، في المرحلة الأولى ، تحتاج إلى قبول البيانات من مصفوفة النشر. للقيام بذلك ، نقوم بإنشاء متغيرين:

$ fio = $ _POST ["fio"] ؛
$ email = $ _POST ["البريد الإلكتروني"] ؛

تُسبَق أسماء متغيرات PHP بعلامة $ وفاصلة منقوطة في نهاية كل سطر. $ _POST هو مصفوفة يتم تمرير البيانات من النموذج إليها. في نموذج html ، يتم تحديد طريقة الإرسال على أنها method = "post". لذلك ، تم أخذ متغيرين من أشكال أتش تي أم أل... لغرض حماية موقعك ، تحتاج إلى تمرير هذه المتغيرات من خلال عدة عوامل تصفية - وظائف php.

تقوم الوظيفة الأولى بتحويل جميع الأحرف التي يحاول المستخدم إضافتها إلى النموذج:

في هذه الحالة ، لا يتم إنشاء متغيرات جديدة في php ، ولكن يتم استخدام المتغيرات الموجودة. ما سيفعله الفلتر هو تحويل الحرف "<" в "<". Также он поступить с другими символами, встречающимися в html коде.

ستقوم الوظيفة الثانية بفك تشفير عنوان url إذا حاول المستخدم إضافته إلى النموذج.

$ fio = urldecode ($ fio) ؛
$ email = urldecode ($ email) ؛

في الوظيفة الثالثة ، سنزيل المسافات من بداية السلسلة ونهايتها ، إن وجدت:

$ fio = تقليم ($ fio) ؛
$ email = تقليم ($ email) ؛

هناك وظائف أخرى لتصفية متغيرات php أيضًا. يعتمد استخدامها على مدى خوفك من أن يحاول المهاجم إضافة رمز إلى هذا النموذج من إرسال البيانات إلى بريد html.

التحقق من صحة البيانات التي تم تمريرها من نموذج HTML إلى ملف PHP

للتحقق مما إذا كان هذا الرمز يعمل ، وما إذا كان يتم نقل البيانات ، يمكنك ببساطة عرضه على الشاشة باستخدام وظيفة echo:

صدى $ fio؛
صدى صوت "
";
صدى $ البريد الإلكتروني؛

السطر الثاني هنا لتقسيم ناتج متغيرات php إلى أسطر مختلفة.

إرسال البيانات المستلمة من نموذج HTML إلى البريد باستخدام PHP

لإرسال البيانات إلى البريد ، تحتاج إلى استخدام وظيفة البريد في PHP.

mail ("العنوان المراد الإرسال إليه" ، "موضوع الحرف" ، "الرسالة (نص الرسالة)" ، "من: البريد الإلكتروني الذي تم إرسال الرسالة منه \ r \ n") ؛

على سبيل المثال ، تحتاج إلى إرسال البيانات إلى البريد الإلكتروني لمالك الموقع أو المدير [البريد الإلكتروني محمي]

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

بريد (" [البريد الإلكتروني محمي]"،" تطبيق من الموقع "،" الاسم الكامل: ". $ Fio.". البريد الإلكتروني: ". Email،" من: [البريد الإلكتروني محمي]\ r \ n ")؛

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

إذا (بريد (" [البريد الإلكتروني محمي]"،" Order from the site "،" Full name: ". $ Fio.". البريد الإلكتروني: ". Email،" من: [البريد الإلكتروني محمي]\ r \ n "))
{
صدى "تم إرسال الرسالة بنجاح" ؛
) آخر (
}

وبالتالي ، سيبدو كود البرنامج الخاص بملف send.php الذي سيرسل بيانات نموذج HTML إلى البريد كما يلي:

$ fio = $ _POST ["fio"] ؛
$ email = $ _POST ["البريد الإلكتروني"] ؛
$ fio = htmlspecialchars ($ fio) ؛
$ email = htmlspecialchars ($ email) ؛
$ fio = urldecode ($ fio) ؛
$ email = urldecode ($ email) ؛
$ fio = تقليم ($ fio) ؛
$ email = تقليم ($ email) ؛
// echo $ fio؛
// صدى صوت "
";
// echo $ email؛
إذا (بريد (" [البريد الإلكتروني محمي]"،" تطبيق من الموقع "،" الاسم الكامل: ". $ Fio.". البريد الإلكتروني: ". Email،" من: [البريد الإلكتروني محمي]\ r \ n "))
(صدى "تم إرسال الرسالة بنجاح" ؛
) آخر (
صدى "حدثت أخطاء أثناء إرسال الرسالة" ؛
}?>

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

وضع كود HTML و PHP لإرسال النموذج في ملف واحد

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

لتنفيذ مثل هذا العمل ، تحتاج إلى وضع كود HTML للنموذج في ملف send.php وإضافة شرط يتحقق من وجود متغيرات في مصفوفة POST (يتم تمرير هذه المصفوفة من النموذج). بمعنى ، إذا كانت المتغيرات في المصفوفة غير موجودة ، فأنت بحاجة إلى إظهار النموذج للمستخدم. خلاف ذلك ، تحتاج إلى قبول البيانات من المصفوفة وإرسالها إلى المرسل إليه.

دعونا نرى كيفية تغيير كود PHP في ملف send.php:



استمارة طلب من الموقع


// تحقق مما إذا كانت المتغيرات موجودة في صفيف POST
if (! isset ($ _ POST ["fio"]) و! isset ($ _ POST ["email"])) (
?>





) آخر (
// إظهار الشكل
$ fio = $ _POST ["fio"] ؛
$ email = $ _POST ["البريد الإلكتروني"] ؛
$ fio = htmlspecialchars ($ fio) ؛
$ email = htmlspecialchars ($ email) ؛
$ fio = urldecode ($ fio) ؛
$ email = urldecode ($ email) ؛
$ fio = تقليم ($ fio) ؛
$ email = تقليم ($ email) ؛
إذا (بريد (" [البريد الإلكتروني محمي]"،" تطبيق من الموقع "،" الاسم الكامل: ". $ Fio.". البريد الإلكتروني: ". Email،" من: [البريد الإلكتروني محمي]\ r \ n ")) (
صدى "تم إرسال الرسالة بنجاح" ؛
) آخر (
صدى "كانت هناك أخطاء في إرسال الرسالة" ؛
}
}
?>

نتحقق من وجود متغير في مصفوفة POST باستخدام الدالة PHP isset (). علامة التعجب قبل هذه الوظيفة في حالة ما تعني النفي. بمعنى ، إذا كان المتغير غير موجود ، فعلينا إظهار الشكل. إذا لم أضع علامة تعجب ، فإن الشرط يعني حرفياً - "إذا كان موجودًا ، فقم بإظهار النموذج". وهذا خطأ في حالتنا. وبطبيعة الحال ، يمكنك إعادة تسميته إلى index.php. إذا قمت بإعادة تسمية الملف ، فلا تنس إعادة تسمية اسم الملف وفي السطر

... يجب أن يرتبط النموذج بنفس الصفحة ، على سبيل المثال index.php. أضفت عنوان الصفحة إلى الكود.

الأخطاء الشائعة التي تحدث عند إرسال نموذج PHP من أحد المواقع

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

ini_set ("display_errors"، "On")؛
error_reporting ("E_ALL") ؛

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

وبالتالي ، من أجل التشغيل الصحيح ، أوصي بوضع ملف send.php على موقع الاستضافة. هناك ، كقاعدة عامة ، تم إعداد كل شيء بالفعل.

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

إذا (بريد (" [البريد الإلكتروني محمي]"،" Order from the site "،" Full name: ". $ Fio.". البريد الإلكتروني: ". Email،" من: [البريد الإلكتروني محمي]\ r \ n "))

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

آخر تحديث: 31.10.2015

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

تم تصميم فئة SmtpClient من مساحة الاسم System.Net.Mail للعمل مع بروتوكول SMTP وإرسال البريد الإلكتروني في .NET.

تحدد هذه الفئة عددًا من الخصائص التي تسمح لك بتخصيص الإرسال:

    المضيف: خادم smtp الذي يتم إرسال البريد منه. على سبيل المثال ، smtp.yandex.ru

    المنفذ: المنفذ المستخدم بواسطة خادم smp. إذا لم يتم تحديده ، فسيتم استخدام المنفذ 25 بشكل افتراضي.

    أوراق الاعتماد: بيانات اعتماد المرسل

    EnableSsl: يشير إلى ما إذا كان سيتم استخدام SSL عند الإرسال

فئة رئيسية أخرى تستخدم عند الإرسال هي MailMessage. يمثل هذا الفصل الرسالة المراد إرسالها. من بين خصائصه ما يلي:

    المرفقات: تحتوي على جميع مرفقات الخطاب

    النص الأساسي: نص الرسالة مباشرة

    من: عنوان المرسل. يمثل كائن MailAddress

    إلى: عنوان المستلم. يمثل أيضًا كائن MailAddress

    الموضوع: يحدد موضوع البريد الإلكتروني

    IsBodyHtml: يشير إلى ما إذا كان البريد الإلكتروني يمثل محتوى برمز html

دعنا نستخدم هذه الفئات ونرسل الرسالة:

باستخدام النظام ؛ باستخدام System.Net ؛ باستخدام System.IO ؛ باستخدام System.Threading.Tasks ؛ باستخدام System.Net.Mail ؛ مساحة الاسم NetConsoleApp (فئة البرنامج (ثابت باطل رئيسي (سلسلة args) (// المرسل - قم بتعيين العنوان والاسم المعروض في الحرف MailAddress from = new MailAddress (" [البريد الإلكتروني محمي]"،" Tom ")؛ // لمن نرسل MailAddress إلى = new MailAddress (" [البريد الإلكتروني محمي]") ؛ // إنشاء كائن رسالة MailMessage m = new MailMessage (من ، إلى) ؛ // موضوع الرسالة m.Subject =" اختبار "؛ // message text m.Body ="

خطاب اختبار لعميل SMTP

"؛ // يمثل الحرف كود html m.IsBodyHtml = صحيح ؛ // عنوان خادم smtp والمنفذ الذي سنرسل منه الحرف SmtpClient smtp = new SmtpClient (" smtp.gmail.com "، 587) ؛ // تسجيل الدخول وكلمة المرور smtp.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" mypassword ") ؛ smtp.EnableSsl = صحيح ؛ smtp.Send (m) ؛ Console.Read () ؛)))

للإرسال ، يتم استخدام طريقة Send () ، والتي تمرر كائن MailMessage.

يمكننا أيضًا استخدام الإصدار غير المتزامن للإرسال باستخدام طريقة SendMailAsync:

باستخدام النظام ؛ باستخدام System.Net ؛ باستخدام System.IO ؛ باستخدام System.hreading.Tasks ؛ باستخدام System.Net.Mail ؛ مساحة الاسم NetConsoleApp (برنامج فئة (ثابت باطل رئيسي (سلسلة args) (SendEmailAsync (). GetAwaiter () ؛ Console.Read () ؛) مهمة غير متزامنة خاصة ثابتة SendEmailAsync () (MailAddress from = new MailAddress (" [البريد الإلكتروني محمي]"،" Tom ")؛ MailAddress to = new MailAddress (" [البريد الإلكتروني محمي]") ؛ MailMessage m = new MailMessage (من ، إلى) ؛ m.Subject =" اختبار "؛ m.Body =" حرف الاختبار 2 من عملية عميل smtp "؛ SmtpClient smtp = جديد SmtpClient (" smtp.gmail.com "، 587) ؛ smtp.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" mypassword ")؛ smtp.EnableSsl = صحيح ؛ انتظار smtp.SendMailAsync (m)؛ Console.WriteLine (" تم إرسال البريد ") ؛)))

إضافة المرفقات

يمكننا إرفاق المرفقات بالرسالة باستخدام خاصية المرفقات. يمثل كل مرفق كائن System.Net.Mail.Attachment:

MailAddress من = new MailAddress (" [البريد الإلكتروني محمي]"،" Tom ")؛ MailAddress to = new MailAddress (" [البريد الإلكتروني محمي]") ؛ MailMessage m = new MailMessage (من ، إلى) ؛ m.Attachments.Add (مرفق جديد (" D: //temlog.txt ")) ؛

إرسال الرسائل إلى البريد في Visual Studio 2013 C ++


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

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

إذن ، هذا هو نص البرنامج.

# تضمين "stdafx.h" # استخدام باستخدام نظام مساحة الاسم ؛ باستخدام نظام مساحة الاسم :: نت ؛ باستخدام نظام مساحة الاسم :: Net :: Mail ؛ باستخدام نظام مساحة الاسم :: Net :: Mime ؛ باستخدام نظام مساحة الاسم :: Threading ؛ باستخدام نظام مساحة الاسم :: ComponentModel ؛ int main () (SmtpClient ^ Smtp = gcnew SmtpClient ("smtp.mail.ru"، 25)؛ Smtp-> Credentials = gcnew NetworkCredential ("[email protected]"، "your_password") ؛ Smtp-> EnableSsl = true ؛ MailMessage ^ Message = gcnew MailMessage () ؛ رسالة-> من = gcnew MailAddress ("[email protected]") ؛ رسالة-> إلى-> إضافة (gcnew MailAddress ("المستلمين[email protected]")) ؛ رسالة- > الموضوع = "العنوان" ؛ الرسالة-> النص = "الرسالة" ؛ Smtp-> إرسال (رسالة) ؛) تجدر الإشارة على الفور إلى الشروط التي يجب الوفاء بها: تم إنشاء مشروع في Visual Studio 2013 ليس فقط لـ C + + ، يجب أن تظل وحدة التحكم ، ودعم بيئة CLR. دعنا نلقي نظرة فاحصة على ما يحدث وفي أي سطر في برنامج C ++ هذا الذي يرسل رسالة إلى مربع البريد الإلكتروني المحدد.

من الأسطر الأولى إلى الثامنة ، يتم توصيل ملفات الرأس ومساحات الأسماء. يقوم السطر 13 بتهيئة خادم smpt. يستخدم كل من Yandex و Google موقعهما الخاص: smtp.yandex.ru و smtp.google.ru ، على التوالي. الرقم 25 على هذا الخط هو المنفذ. في حالة قيام الموفر الخاص بك بحظر هذا المنفذ أو عدم إمكانية الاتصال به ، يمكنك تجربة هذين الخيارين 465 أو 587. في السطر 14 ، يجب إدخال صندوق البريد الإلكتروني الخاص بك (الذي سيتم إرسال الرسالة منه) و كلمة المرور لهذا المربع.

انتبه بشكل خاص إلى السطر 15 - هذا الخط يربط بروتوكول SSL الآمن. هذا إلزامي لـ Yandex و Mail. السطر 17 ينشئ رسالة ؛ في 18 - عنوان المرسل ؛ في 19 - عنوان المستلم ؛ 20 - رأس الرسالة ؛ 21 - رسالة ؛ في السطر الثاني والعشرين ، يتم الإرسال. إذا لم تظهر أي أخطاء بعد بدء البرنامج ، ولم يحدث شيء ، فكل شيء على ما يرام - تحقق من صندوق بريد المستلم.

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

أي أسئلة حول البرامج في C ++ ، و java ، والبرامج النصية في java script و php ، وإنشاء مواقع الويب وتخطيطها ، يمكنك طرحها عن طريق البريد [البريد الإلكتروني محمي]أو اضغط على سكايب up777up2. مقابل رسوم معقولة جدًا ، سأكون سعيدًا بمساعدتك.

إضافة

طرح أحد زوار المدونة سؤالاً: كيف يتم إرفاق ملف في هذا البرنامج؟ الجواب بسيط: تحتاج إلى إضافة بضعة أسطر من التعليمات البرمجية إلى التطبيق الخاص بك:

سلسلة ^ att = L "att.xls" ؛ Attachment ^ dan = gcnew Attachment (att، MediaTypeNames :: Application :: Octet)؛ الرسالة-> المرفقات-> إضافة (dan) ؛ في السطر الأول نحدد الملف المرفق ، وفي السطر الثاني نحدد البيانات ونطلب عدم تفسيرها (رأس نوع المحتوى لبروتوكول MIME) وفي السطر الثالث نضيفه إلى الرسالة. هذا كل شئ.

قائد السفينة 14 أكتوبر 2013 الساعة 07:29 مساءً

إرسال بريد إلكتروني آليًا باستخدام خدمات متنوعة

غالبًا ما يتعين عليك التعامل مع إرسال رسائل البريد الإلكتروني من رمز البرنامج. ليس عليك أن تذهب بعيدًا للحصول على أمثلة.

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

أول شيء لا يجب عليك فعله في هذه الأمثلة هو استخدام System.Web.Mail ، الذي عفا عليه الزمن منذ فترة طويلة ، ومنذ Visual Studio 2010 ، لم تتم إضافة مكتبة System.Web حتى دون معرفة المسار الكامل إلى المقابل. DLL.
بدلاً من ذلك ، يُقترح استخدام مكتبة System.Net.
باستخدام System.Net ؛ باستخدام System.Net.Mail ؛
لذا ، فإن أبسط شيء ، وهو الأهم والأكثر استخدامًا ، هو إرسال رسالة من خادم البريد الخاص بك ، حيث يتم تكوين عميل SMTP. كما تعلم ، يمكن أن يكون الخادم إما هو الخادم الذي يعمل عليه التطبيق ، أو الخادم البعيد ، والذي يحق لك إرسال رسائل بدون إذن إضافي عليه.

نموذج رمز لإرسال رسالة من جهاز محلي:
", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" 127.0.0.1 ")) (// يجب أن يكون العنوان هنا خادم البريد والمنفذ إذا لزم الأمر sc.Send (مم) ؛))

استخدام خدمات البريد الإلكتروني مثل Gmail و Yandex و Mail.ru وما إلى ذلك. كل شيء هو نفسه ، تتم إضافة المعلمات فقط مع الإذن.

خادم SMTP: smtp.gmail.com
المنفذ: 587
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.gmail.com "، 587)) (sc. EnableSsl = true ؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network ؛ sc.UseDefaultCredentials = false ؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" GmailPassword ") ؛ sc.Send (مم) ؛))

خادم SMTP: smtp.yandex.ru
المنفذ: 25
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.yandex.ru "، 25)) (sc. EnableSsl = true؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network؛ sc.UseDefaultCredentials = false؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" YandexPassword ") ؛ sc.Send (مم) ؛))

خادم SMTP: smtp.mail.ru
المنفذ: 25
باستخدام (MailMessage mm = new MailMessage ("Name ", "[البريد الإلكتروني محمي]")) (mm.Subject =" موضوع البريد "؛ mm.Body =" نص البريد "؛ mm.IsBodyHtml = false ؛ باستخدام (SmtpClient sc = new SmtpClient (" smtp.mail.ru "، 25)) (sc. EnableSsl = true ؛ sc.DeliveryMethod = SmtpDeliveryMethod.Network ؛ sc.UseDefaultCredentials = false ؛ sc.Credentials = new NetworkCredential (" [البريد الإلكتروني محمي]"،" MailRuPassword ") ؛ sc.Send (مم) ؛))
إذا كان صندوق البريد الخاص بك على خدمة mail.ru ينتهي بـ inbox.ru أو list.ru أو bk.ru ، فإن عنوان خادم SMTP يتغير وفقًا لذلك (smtp.inbox.ru و smtp.list.ru و smtp.bk.ru ).

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

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

العلامات: بريد إلكتروني ، إرسال رسائل بريد إلكتروني ، بروتوكول smtp