صفحه 1 از 3 123 آخرآخر
نمایش نتایج 1 تا 40 از 125

نام تاپیک: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336

    مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    با سلام
    مقاله ای که ارائه داده شده است حاصل ساعتها جستجو،مطالعه و ترجمه میباشد
    و با توجه به نبود یک منبع کامل چه به صورت فارسی و چه به صورت انگلیسی در مورد ارسال ایمیل در دات نت 2 و استفاده برنامه نویسان از تکنیک های دات نت 1،امیدوارم این مجموعه حسن ختامی بر تمام سردرگمی های ارسال ایمیل در دات نت 2 باشد
    امیدوارم این مقاله به عنوان مرجعی کامل،مشکل گشای برنامه نویسان فارسی زبان باشد
    توجه:کلیه حقوق این مقاله متعلق به سایت DotNetSource.Com میباشد.استفاده از مطالب این مقاله با ذکر نام منبع و نویسنده بلامانع است
    _____________________________________
    کلمات کلیدی:

    ارسال ایمیل،دات نت 2،Email،Sending Email،.Net 2
    _____________________________________
    بخش اول


    مقدمه:

    فضای نام System.Net.Mail

    System.Net.Mail یک فضای نام که برای ارسال ایمیل در دات نت 2 استفاده میشود.بر خلاف system.web.mail که در دات نت 1 معرفی شده، System.Net.Mail بر پایه کتابخانه های CDO/CDOSYS ساخته نشده است.در عوض زمینه ساخت آن بر اساس عدم استفاده از Com Introp بوده،یعنی بر اساس هیچ نوع کتابخانه ی Com ساخته نشده است

    System.Net.Mail یک کلاس کاملا جدید برای ساخت و ارسال ایمیل معرفی کرده است
    گرچه بعضی از ویژگیهای system.web.mail حذف شده، اما فضای نام System.Net.Mail بسیار فراگیر تر و تطبیق پذیر تر از system.web.mail است که وابسته به کتابخانه CDO میباشد


    برای ارسال ایمیل در دات نت به چه چیزی نیازمندیم؟

    قبل از هر چیزی لازم است که دات نت فریم ورک را نصب کنید
    سپس system.dll را به عنوان مرجع (reference) به صفحه معرفی کنید(به صورت اتوماتیک به صفحات اضافه میشود).
    برای ایجاد و ارسال ایمیل از فضای نام System.Net.Mail استفاده میشود
    در این مرحله شما با برنامه نویسی ،به پیکربندی برنامه خود میپردازید
    شما نیازمند یک سرور واسط برای ارسال ایمیل هستید
    یک سرور واسط (Relay Server) که یک سرور ایمیل(Email Server) یا یک SMTP سرور /سرویس است که ارسال ایمیل را مدیریت میکند.(Handle)
    System.Net.Mail بسادگی ایمیل را برای سرور ارسال میکند و سرور ایمیل مسئول رساندن ایمیل به مقصد نهایی میباشد

    سرور واسط

    یک واسط یک سرویس است،که به شما اجازه میدهد ایمیل ارسال کنید
    واسط به طور معمول یک سرور ایمیل (Mail Server)کامل است یا برای سرویس SMTP پیکربندی شده است
    بطور مثال:

    ایمیل سرور ها(Mail Server):

    Microsoft Exchange
    IMail by IPSwitch
    Mail Enable by Mail Enable
    سرویس های SMTP:

    سرویس SMTP که بر روی IIS نصب میشود
    (System.Net.Mail) SNM ایمیل را برای سرور واسط ارسال میکند و سرور ایمیل مسئول رساندن ایمیل به مقصد نهایی میباشد
    زمانی که ایمیل برای سرور واسط ارسال میگردد،شما باید اجازه دسترسی به آن سرور را داشته باشید.دلیل این امر مسئله SPAM ها میباشد
    دسترسی به سرورهای واسط به طور طبیعی یا از طریق IP Address یا username/password امکان پذیر میباشد

    سرویس SMTP در IIS

    سرویس IIS SMTP یک سرویس برای ارسال ایمیل میباشد
    این سرویس تمام سرویس های زیر را مدیریت میکند


    MX Record (Mail server location) lookups
    SMTP connections to remote mail servers
    Retries
    Failures


    اطلاعات بیشتر را میتوانید از سایت مایکروسافت بخواهید
    http://www.microsoft.com/mind/1299/s...0/smtp2000.asp

    آیا با استفاده از System.Net.Mail میتوانیم ایمیل هایمان را بخوانیم؟

    جواب نه میباشد.با استفاده از SNM فقط میتوانید ایمیل ارسال کنید
    برای خواندن ایمیل میتوانید از Mime parsing component یا POP3 component استفاده کنید


    نگاهی به کلاس های فضای نام System.Net.Mail:

    MailMessage Class
    MailAddress Class
    Attachment Class
    SmtpClient Class
    AlternateView Class
    Linked Resource

    کلیه کلاس های فوق به طور کامل شرح داده خواهند شد

    کلاس MailMessage:

    کلاس MailMessage ساخت و مدیریت پیغام ایمیل را تامین میکند
    سایر کلاسها به نوعی با این کلاس در ارتباط هستند
    برخی از ویژگی های(Properties) کلاس MailMessage به شرح زیر میباشند


    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...ilmessage.aspx


    مثالی از نحوه استفاده از این کلاس:


    [C#‎]

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    [VB]

    Dim mail As New MailMessage()
    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")
    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."
    این نکته در کد بالا قابل توجه است که:
    به این نوع ایمیل که بدنه(Body) آن شامل متن ساده است در اصطلاح Plain Text گفته میشود
    اما بدنه (Body) میتواند شامل تگ های HTML نیز باشد
    جهت استفاده از این امکان باید خاصیت IsBodyHtml را برابر True کنیم
    به مثال زیر توجه کنید:

    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is a sample body with html in it. <b>This is
    bold</b> <font color=#336699>This is blue</font>";
    mail.IsBodyHtml = true;

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is a sample body with html in it. <b>This is
    bold</b> <font color=#336699>This is blue</font>"
    mail.IsBodyHtml = True

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)
    پایان بخش اول

  2. #2
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    بنظر شما ، این که با این روش میشه به راحتی با آدرس ایمیل دیگران اقدام به ارسال ایمیل نمود، یک ضعف فاحش نیست.

  3. #3
    نقل قول نوشته شده توسط habedijoo مشاهده تاپیک
    بنظر شما ، این که با این روش میشه به راحتی با آدرس ایمیل دیگران اقدام به ارسال ایمیل نمود، یک ضعف فاحش نیست.
    سلام
    این ضعفی هست که توی پروتکل SMTP موجود هست . از طرفی تحقیقات پلیس فدرال آمریکا نشون داده که 85% هرزنامه ها از این طریق ارسال میشن و به همین دلیل موارد رو به IEEE گزارش داده و قراره توی تعاریف جدیدشون برطرف بشه.البته ناگفته نمونه که اکثر ایمیل های جعلی به اینصورت Bulk میشن.
    ممنون از دوست خوبمون برای مقاله اش
    موفق باشید

  4. #4

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    نقل قول نوشته شده توسط habedijoo مشاهده تاپیک
    بنظر شما ، این که با این روش میشه به راحتی با آدرس ایمیل دیگران اقدام به ارسال ایمیل نمود، یک ضعف فاحش نیست.
    نه ابدا. شما مي توانيد قبل از اينكه به كاربر اجازه ي ارسال ايميل بدهيد، او را ملزم به ثبت نام كرده و يك كد فعالسازي براي او به آدرس ايميلي كه در فرم ثبت نام پر كرده است بفرستيد تا از صحت آدرس ايميل مطمئن شويد. سپس كاربر شما كه اينك
    IsAuthenticated هست مي توانيد از امكانات ارسال ايميل استفاده كند. بيش از اين كاري نمي توان كرد. آيا شما طالب طراحي سيستمي قوي تر از yahoo هستيد؟

  5. #5
    کاربر دائمی آواتار peymannaji
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تو یکی از صفرهای گوگل ...
    پست
    881
    سلام دوست عزیز با سپاس از زحمت جنابعالی بخاطر تهیه مقاله ارزشمندتون ...

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    بخش دوم

    کلاس MailAddress:

    از این کلاس برای ساختن آدرس ایمیل استفاده میشود
    از این کلاس میتوان در ویژگی های(Properties) :

    MailMessage.From
    MailMessage.To
    MailMessage.CC
    MailMessage.BCC

    استفاده کرد
    از بین این ویژگی ها ،ویژگی .From یک ایمیل حقیقی است(یعنی یک ایمیل را به عنوان فرستنده میتوان معرفی کرد)
    اما سایر ویژگی ها، کلکسیونی از ایمیل ها را دریافت میکنند
    برخی از ویژگی های(Properties) کلاس MailAddress به شرح زیر میباشند


    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...iladdress.aspx

    مثالی از نحوه استفاده از این کلاس:

    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com", "Steve James");

    mail.To.Add("you@yourcompany.com");
    mail.To.Add("you2@yourcompany.com");

    mail.CC.Add("cc1@yourcompany.com");
    mail.CC.Add("cc2@yourcompany.com");

    mail.Bcc.Add("blindcc1@yourcompany.com");
    mail.Bcc.Add("blindcc2@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com", "Steve James")

    mail.To.Add("you@yourcompany.com")
    mail.To.Add("you2@yourcompany.com")

    mail.CC.Add("cc1@yourcompany.com")
    mail.CC.Add("cc2@yourcompany.com")

    mail.Bcc.Add("blindcc1@yourcompany.com")
    mail.Bcc.Add("blindcc2@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."


    این نکات در کد بالا قابل توجه است که:

    1. اگر بخواهیم گیرنده ایمیل وقتی ایمیل را دریافت میکند به جای آدرس ایمیل، نام تعیین شده توسط ما برای آن نمایش داده شود به صورت زیر عمل میکنیم


    mail.From = new MailAddress("me@mycompany.com", "Steve James")


    2. اگر بخواهیم نام فرستنده به صورت فارسی یا هر زبان دیگر نمایش داده شود به صورت زیر عمل میکنیم


    mail.From = new MailAddress("me@mycompany.com", "فارسی",System.Text.Encoding.GetEncoding("win dows-1256"))


    3. از روش ذکر شده بالا میتوانید برای ویژگیهای To,Bcc,CC نیز استفاده کنید

    4. چون ویژگیهای To,Bcc,CC میتوانند کلکسیونی از ایمیل ها را دریافت کنند میتوانید با فراخوانی مکرر تابع ADD ایمیل های فراوانی را به آنها اضافه کنید


    آیا میدانید تفاوت Toو BCC و CC در چیست؟

    To به معنای گیرنده اصلی ایمیل میباشد
    CC مخفف Carbon Copy میباشد و زمانی از آن استفاده میشود که بخواهیم یک کپی از ایمیل را برای شخص دیگری بفرستیم
    Bcc مخفف Blind Carbon Copy میباشد.و زمانی از آن استفاده میشود که بخواهیم یک کپی از ایمیل را برای شخصی بفرستیم،به صورتی که CC و To متوجه ارسال ایمیل برای شخص سوم نشوند
    اما BCC متوجه ارسال ایمیل به To و BCC خواهد شد

    کلاس Attachment:

    از این کلاس جهت ساخت و مدیریت ضمائم متعلق به یک شی MailMessage استفاده میشود
    ضمیمه میتواند آدرس یک فایل یا یک Stream باشد.این قابلیت باعث میشود ما بتوانیم هر نوع داده ای را به ایمیل خود ضمیمه کنیم
    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...ttachment.aspx

    مثالی از نحوه استفاده از این کلاس:

    [C#‎]

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    mail.Subject = "This is an email";
    mail.Body = "this content is in the body";
    mail.Attachments.Add(new Attachment("c:\\temp\\example.txt"));
    mail.Attachments.Add(new Attachment("c:\\temp\\example2.txt"));
    mail.Attachments.Add(new Attachment("c:\\temp\\example3.txt"));

    [VB]

    Dim mail As New MailMessage()
    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")
    mail.Subject = "This is an email"
    mail.Body = "this content is in the body"
    mail.Attachments.Add(New Attachment("c:\temp\example.txt"))
    mail.Attachments.Add(New Attachment("c:\temp\example2.txt"))
    mail.Attachments.Add(New Attachment("c:\temp\example3.txt"))


    مثالی از نحوه استفاده از این کلاس در استفاده از Stream:

    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this content is in the body";

    string s = "this is some text";
    byte[] data = System.Text.Encoding.ASCII.GetBytes(s);


    System.IO.MemoryStream ms = new System.IO.MemoryStream(data);

    mail.Attachments.Add(new Attachment(ms, "example.txt","text/plain"));

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this content is in the body"

    Dim s As String = "this is some text"
    Dim data As Byte() = Encoding.ASCII.GetBytes(s)

    Dim ms As New IO.MemoryStream(data)

    mail.Attachments.Add(New Attachment(ms, "example.txt", "text/plain"))

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)

    پایان بخش دوم

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    بخش سوم

    کلاس SmtpClient:

    کلاس SmtpClient مسئولیت ارسال یا نقل و انتقال ایمیل را بر عهده دارد
    کلاس SmtpClient توانایی حمل محتویات ایمیل بر روی شبکه دارد،یا میتواند ایمیل را به صورت یک فایل سیستم در سرویس SMTP IIS در داخل پوشه
    Pickup Directory به شبیه به فرمت ذکر شده در RFC822 ذخیره کند
    (جهت مشاهد RFC میتوانی به سایت rfc-editor.org مراجعه کنید)
    کلاس SmtpClient میتواند ایمیل را هم به صورت هم زمان(Synchronously) و هم به صورت غیر هم زمان(Asynchronously) ارسال کند
    کلاس SmtpClient ارسال ایمیل به صورت SSL را هم جهت اهداف امنیتی پشتیبانی میکند


    برخی از ویژگی های(Properties) کلاس SmtpClient به شرح زیر میباشند


    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...mtpclient.aspx
    مثالی از نحوه استفاده از این کلاس:


    [C#‎]

    using System.Net;

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";
    SmtpClient smtp = new SmtpClient("127.0.0.1");

    smtp.Credentials = new NetworkCredential("username", "secret");

    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()
    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")
    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."
    Dim smtp As New SmtpClient("127.0.0.1")

    smtp.Credentials = New Net.NetworkCredential ("username", "secret")

    smtp.Send(mail)

    این نکات در کد بالا قابل توجه است که:

    1. زمانی که شما جهت استفاده از سرور واسط (ایمیل سرور) مجبور به تعیین هویت هستید و با ارائه نام کاربری و کلمه عبور امکان استفاده از سرویس سرور واسط محیا خواهد شد،ناچار به ارسال نام کاربری و کلمه عبور برای سرور واسط هستید.این امر با استفاده از دستود زیر امکان پذیر خواهد شد



    smtp.Credentials = new NetworkCredential("username", "secret")



    NetworkCredential در فضای نام System.Net قرار دارد و جهت استفاده از آن باید با این فضای نام به عنوان یکی از مراجع انتخاب شود

    2. حال سوالی که در اینجا در ذهن شما ایجاد میشود این است که این نام کاربری و کلمه عبور را از کجا بدست آوریم؟

    جواب این سوال بسیار ساده است،و اجازه دهید پرسشی دیگر جهت آشکار شدن موضوع بیان کنیم،و آن پرسش این است، که شما جهت استفاده از سرویس ایمیل Yahoo چطور عمل میکنید؟
    اگر دقت کرده باشید به طور معمول Yahoo هم جهت استفاده از سرویس ایمیل خود، به شما اجازه نخواهد داد به عنوان یک ناشناس ایمیل ارسال و یا دریافت کنید حتما باید دارای ایمیلی از این ایمیل سرور باشید

    توجه:امکان ارسال ایمیل به صورت ناشناس و با ایمیل جعلی توسط سرور Yahoo و دیگر سرور های مجانی و جود دارد که خارج از بحث ما میباشد

    و با ارائه نام کاربری (ایمیل) و کلمه عبور امکان بهره برداری از سرویس های این ایمیل سرور مقدور خواهد شد

    پس ما برای ارائه کلمه عبور به ایمیل سرور باید دارای یک ایمیل از آن ایمیل سرور باشیم
    ایجاد ایمیل بر روی هاست، از طریق ورود به قسمت کنترل (Control Panel) سایت و ورود به قسمت مدیریت ایمیل ها امکان پذیر است

    توجه: به هیچ عنوان از ایمیلی که اطلاعات داخل آن برای سایت حائز اهمیت میباشد جهت ارسال ایمیل استفاده نکنید
    ایمیل هایی همچون Info و Support و...

    توجه:هنگام استفاده از دستور زیر باید به جای username ، ایمیل را به صورت کامل و به جای Mypassword ، کلمه عبور ایمیل را وارد کنید.


    smtp.Credentials = new NetworkCredential("Send@Yoursite.com","Mypassword"  )



    3. نکته ای دیگر این که نام یا Ip Address سرور واسط (ایمیل سرور) سرویس دهنده خود را از کجا به دست بیاوریم؟

    در جواب این سوال باید گفت،عموما سرویس دهنده های هاست در ایمیل ارسالی برای شما که در آن اطلاعات هاست شما قرار دارد اطلاعات این سرور را ارسال میکنند اما تماس با واحد پشتیبانی سرویس دهنده هاست بهترین گزینه است

    حال اگر نخواستید از گزینه بالا استفاده کنید از روش زیر استفاده کنید

    با داشتن یک فایروال مناسب و آنتی ویروس بروز وارد سایت زیر شود


    http://www.mob.net/~ted/tools/mx.php3



    و در محل مشخص شده نام هاست خود را به طور کامل تایپ کنید
    اندکی تامل کنید تا پاسخ شما که نام سرور ایمیل هاست شما میباشد برای شما لیست گردد
    با دستور Telnet به صورت زیر میتوانید به ایمیل سرور خود متصل شوید
    در منوی Start گزینه Run را انتخاب کنید
    و در Run دستور CMD را تایپ کنید تا پنجره Command Prompt بازشود
    سپس دستور زیر را وارد کنید


    telnet mail.YourSite.Com 25



    بعد از دستور Telnet آدرسی را که به عنوان ایمیل سرور از طریق مرحله قبل به دست آوردیم را وارد میکنیم

    عدد 25 به مفهوم پورتی است که میخواهیم از طریق آن به سرور ایمیل متصل شویم
    توجه کنید که بین هر قسمت فاصله (Space) وجود دارد
    پس از این دستور با پیغامی شبیه پیغام زیر مواجه میشوید


    متوجه خواهید شد که در اکثرموارد بعد از عدد 220 نام ایمیل سرور دیگری نمایش داده میشود.بهتر است از این ایمیل سرور معرفی شده در این قسمت استفاده کنید
    پس از توضیحات متوجه میشوید که جهت ارسال ایمیل باید خط زیر را به این صورت تنظیم کنید(با توجه به مثال بالا و به دست آوردن ایمیل سرور از نام بدست آمده استفاده میکنیم)
      

    SmtpClient smtp = new SmtpClient("mailserver1.parsdata.com");
    یــا
    Dim smtp As New SmtpClient("mailserver1.parsdata.com")


    4. نکته ای دیگر این که از کجا بفهمیم که برای استفاده از امکانات یک سرور واسط،حتما باید به آن نام کاربری و کلمه عبور بدهیم؟

    برای فهمیدن این موضوع به صورت زیر عمل میکنیم
    بعد از استفاده از دستور telnet به همان شکل توضیح داده شده،در اولین خط دستور ،این دستور را وارد کنید.

    Auth login




    اگر بعد از دستور فوق جوابی شبیه پیغام زیر را بگیرید که با عدد 334 شروع میشود ،قطعا جهت استفاده از ایمیل سرور باید نام کاربری و کلمه عبور داشته باشیم


    پایان بخش سوم

  8. #8
    کاربر دائمی آواتار m.toosi
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    جامعه مجازی
    سن
    39
    پست
    215

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    دلیل استفاده از ip در این خط چیه؟
    Dim smtp As New SmtpClient("127.0.0.1")

    اگر یک توضیحی بدید که در سرور های مختلف این مقدار متفاوت هست و یا ثابته؟

  9. #9
    کاربر جدید
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    شیراز
    پست
    23

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    با سلام
    این آی پی یک مقدار ثابت بوده که سیستم را بصورت لوکال در نظر میگیرد

  10. #10
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    من برای این مقاله خیلی زحمت کشیدم
    از استقبال کم دوستان که نه نظر دادن نه تشکر کردن دل سرد شدم
    شاید به درد کسی نمیخوره؟!!
    یا به خاطر ...

  11. #11

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    نقل قول نوشته شده توسط babi_wd مشاهده تاپیک
    من برای این مقاله خیلی زحمت کشیدم
    از استقبال کم دوستان که نه نظر دادن نه تشکر کردن دل سرد شدم
    شاید به درد کسی نمیخوره؟!!
    یا به خاطر ...
    آقا تو خیلی مردی. خیلی با وجودی. هر کی خواست بدونه تو چقدر مردی کافیه یک لحظه احساس کنه که ازش خواستن که برنامه ای رو که ماهها براش زحمت کشیده در اختیار عموم بگذاره. واقعا دمت گرم.

  12. #12
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    نقل قول نوشته شده توسط babi_wd مشاهده تاپیک
    من برای این مقاله خیلی زحمت کشیدم
    از استقبال کم دوستان که نه نظر دادن نه تشکر کردن دل سرد شدم
    شاید به درد کسی نمیخوره؟!!
    یا به خاطر ...
    سلام
    بابت زحمات جنابعالی تشکر ویژه می کنم انشاالله همیشه موفق باشید.
    من همه کارهائی که در مقاله گفته اید را در سورس ذیل انجام داده ام ولی خطای غیر امن بودن ارتباط را میدهد بنظر شما مشکل کجاست :
    The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. q9sm9151655gve.5

    اینهم کد :

    MailAddress From = newMailAddress("A@gmail.Com", "Mr A");
    MailAddress To = newMailAddress("B@C.Com", "Mr B");
    MailMessage MM = newMailMessage(From, To);
    MM.Subject =
    "Subject ...";
    MM.Body =
    "Body ...";
    MM.Attachments.Add(
    newAttachment(@"C:\FileName.txt"));
    SmtpClient Smtp = newSmtpClient("Smtp.gmail.Com", 25);
    Smtp.Credentials =
    newNetworkCredential("A@gmail.Com", "******");
    Smtp.Send(MM);

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    تیر 1388
    محل زندگی
    4ji.ir
    پست
    63

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    سلام
    دوست عزیز ضمن تشکر خیلی زیاد از زحمت بسیار زیاد شما و اینکه مطمئن باش این مقاله شما راهگشای خیلی از دوستان قرار خواهد گرفت ، باید عرض کنم بعضی از اخلاقیات حاکم بر جامعه ما چندان خوش آیند نیست . مقایسه ای ما بین تعداد بازید های این تاپیک و نظرات و تشکرات داده شده بکن . بعد خواهی دید که ایرانی ها کلا بی تفاوت هستند . اصلا به مسائل رواشناسی این قضایا، که فشردن یه دکمه تشکر علاوه بر قدر دانی از کار شما براحتی میتونه شما رو برای نوشتن مقاله بعدی ترغیب کنه ، توجهی ندارند . پس به عنوان یه دوست پیشنهاد میکنم توی این مملکت در پی افکار تراکنشی نباش که بی تفاوتی از سر و پای مملکت می بارد .
    باز هم از رحمت شما تشکر میکنم و امیدوارم باز هم شاهد مقالات بعدی و مفید شما باشیم .

    هر چند برای تشکر نباید یه تاپیک ارسال کرد ولی این بار لازم دیدم که این کار رو کنم.

  14. #14
    کاربر دائمی آواتار ali.akhbary
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    سايت برنامه نويس
    سن
    39
    پست
    303

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

            MailMessage mail = new MailMessage();

    //set the addresses
    mail.From = new MailAddress("hadmin@mydomain.net.com");
    mail.To.Add("akhbari65@gmail.com");

    //set the content
    mail.Subject = "This is an email";

    //first we create the Plain Text part
    AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");

    //then we create the Html part
    //to embed images, we need to use the prefix 'cid' in the img src value
    //the cid value will map to the Content-Id of a Linked resource.
    //thus <img src='cid:companylogo'> will map to a LinkedResource with a ContentId of 'companylogo'
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", null, "text/html");

    //create the LinkedResource (embedded image)
    LinkedResource logo = new LinkedResource("http://www.asp.net/App_Themes/Standard/i/logo.png");

    کسی میتونه بگه که مشکل از کجاست؟

    به خط آخر که میرسم error میده.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    144

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    دوستان من در رابطه با ارسال ایمیل یه مشکل عجیب دارم
    ایمیل به یاهو ارسال میشه اما به gmail ارسال نمیشه
    کسی می تونه کمکم کنه
    کدا رو چندین بار بررسی کردم اما مشکلی نداره .اگه مشکل داشت یه یاهو هم نمی فرستاد

  16. #16
    کاربر دائمی آواتار ali.akhbary
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    سايت برنامه نويس
    سن
    39
    پست
    303

    Exclamation نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    نقل قول نوشته شده توسط armangara مشاهده تاپیک
    دوستان من در رابطه با ارسال ایمیل یه مشکل عجیب دارم
    ایمیل به یاهو ارسال میشه اما به gmail ارسال نمیشه
    کسی می تونه کمکم کنه
    کدا رو چندین بار بررسی کردم اما مشکلی نداره .اگه مشکل داشت یه یاهو هم نمی فرستاد
    پورت smtp یاهو با گوگل فرق داره.
    آخرین ویرایش به وسیله ali.akhbary : دوشنبه 02 شهریور 1388 در 10:21 صبح

  17. #17
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    بجنورد
    سن
    36
    پست
    39

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    بر عکس شما واسه من برای Gmail ارسال میشه ولی برای Yahoo ارسال نمی شه
    ;-)

  18. #18
    نه داداش ، خیلی ها از این مقاله شما استفاده می کنند و خواهند کرد
    دمت گرم ، ادامه بده

  19. #19
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    سلام
    دوست عزیز ضمن تشکر خیلی زیاد از زحمت بسیار زیاد شما و اینکه مطمئن باش این مقاله شما راهگشای خیلی از دوستان قرار خواهد گرفت ، باید عرض کنم بعضی از اخلاقیات حاکم بر جامعه ما چندان خوش آیند نیست . مقایسه ای ما بین تعداد بازید های این تاپیک و نظرات و تشکرات داده شده بکن . بعد خواهی دید که ایرانی ها کلا بی تفاوت هستند . اصلا به مسائل رواشناسی این قضایا، که فشردن یه دکمه تشکر علاوه بر قدر دانی از کار شما براحتی میتونه شما رو برای نوشتن مقاله بعدی ترغیب کنه ، توجهی ندارند . پس به عنوان یه دوست پیشنهاد میکنم توی این مملکت در پی افکار تراکنشی نباش که بی تفاوتی از سر و پای مملکت می بارد .
    باز هم از رحمت شما تشکر میکنم و امیدوارم باز هم شاهد مقالات بعدی و مفید شما باشیم .

    هر چند برای تشکر نباید یه تاپیک ارسال کرد ولی این بار لازم دیدم که این کار رو کنم.

  20. #20
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    بخش چهارم

    کلاس Alternate View:

    زمانی از این کلاس استفاده میکنیم که بخواهیم یک کپی از ایمیل را به فرمت دیگری تهیه کنیم.کاربرد این کپی در زمانی مشخص میشود که وقتی شخص از یک برنامه یا به طور کلی یک Reader برای دیدن ایمیل خود استفاده میکند،که این برنامه یا Reader قابلیت تفسیر تگ های HTML متن ایمیل را ندارد.پس نسخه دیگر از متن ایمیل که متن ساده است نمایش داده خواهد شد
    زمانی که از این روش استفاده میکنید به اصلاح گفته میشود که شما یک Multi-Part MIME (Multipurpose Internet Mail Extensions) message ساخته اید
    اصل پیشگیری از خطا و مدیریت استثنا ها حکم میکند که در ارسال ایمیل هایمان از این روش استفاده کنیم تا اطمینان حاصل کنیم که متن ایمیل در هر حالتی قابل خواندن است

    برخی از ویژگی های(Properties) کلاس Alternate View به شرح زیر میباشند


    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...rnateview.aspx

    مثالی از نحوه استفاده از این کلاس:


    [C#‎]

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    mail.Subject = "This is an email";

    AlternateView plainView =
    AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");

    AlternateView htmlView =
    AlternateView.CreateAlternateViewFromString("<b>th is is bold text, and viewable by those mail clients that support html</b>", null, "text/html");

    mail.AlternateViews.Add(plainView);
    mail.AlternateViews.Add(htmlView);

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);


    [VB]

    Dim mail As New MailMessage()
    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")
    mail.Subject = "This is an email"

    Dim plainView As AlternateView =
    AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", Nothing, "text/plain")

    Dim htmlView As AlternateView =
    AlternateView.CreateAlternateViewFromString("<b>th is is bold text, and viewable by those mail clients that support html</b>", Nothing, "text/html")

    mail.AlternateViews.Add(plainView)
    mail.AlternateViews.Add(htmlView)

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)


    این نکته در کد بالا قابل توجه است که:

    در کد زیر


    AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");


    به جای "text/plain" میتوانید از قطعه کد زیر ا ستفاده کنید

    System.Net.Mime.MediaTypeNames.Text.Plain


    سایر مقادیری که میتوانید برای این قسمت در نظر بگیرید به شرح ذیل میباشند که به ضرورت از آنها استفاده خواهد شد


    System.Net.Mime.MediaTypeNames.Text.Html
    System.Net.Mime.MediaTypeNames.Text.RichText
    System.Net.Mime.MediaTypeNames.Text.Xml


    کلاس Linked Resource:

    آخرین کلاس،کلاس Linked Resource میباشد.از این کلاس جهت گنجاندن عکس در ایمیل استفاده میشود
    برای گنجاندن عکس در ایمیل شما باید یک Alternate view با فرمت HTML بسازید و در این Alternate view از یک تگ <image> استفاده کنید که به یک
    ContentId )CID) از Linked Resource اشاره میکند
    ContentId )CID) میتواند نام یک فایل تصویری در آدرسی مشخص باشد

    توضیحات تکمیلی در
    http://msdn2.microsoft.com/en-us/lib...dresource.aspx
    مثالی از نحوه استفاده از این کلاس:


    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";

    AlternateView plainView =
    AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");

    AlternateView htmlView =
    AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", null,"text/html");

    LinkedResource logo = new LinkedResource( "c:\\temp\\logo.gif" );
    logo.ContentId = "companylogo";
    htmlView.LinkedResources.Add(logo);

    mail.AlternateViews.Add(plainView);
    mail.AlternateViews.Add(htmlView);


    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()
    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")
    mail.Subject = "This is an email"

    Dim plainView As AlternateView =
    AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", Nothing, "text/plain")

    Dim htmlView As AlternateView =
    AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", Nothing,"text/html")

    Dim logo As New LinkedResource("c:\temp\logo.gif")
    logo.ContentId = "companylogo"

    htmlView.LinkedResources.Add(logo)

    mail.AlternateViews.Add(plainView)
    mail.AlternateViews.Add(htmlView)


    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)

    پایان بخش چهارم

  21. #21
    دوست من همیشه سعی کن به خاطر خدا ودر راه اون علمتو در اختیار دیگران قرار بدی ...

    اینجوری دیگه از هیچ چی ناراحت نمیشی.....

    گرچه تشکر کردن همونطور که دوستمون گفتن باعث انگیزه میشه ولی......


    موفق باشی..

  22. #22
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    دوست من همیشه سعی کن به خاطر خدا ودر راه اون علمتو در اختیار دیگران قرار بدی ...
    اگه اینطور نبود و انگیزه ای جز کمک به بقیه نداشتم اینجا ارائه نمیدادم
    و مقاله رو برای خودم نگه میداشتم
    چون هدف اولیه من یاد گیری خودم بوده،و خواستم دیگران هم بهره ای ببرن

    اینجوری دیگه از هیچ چی ناراحت نمیشی.....
    ناراحت نشدم،چون بحث برای خودم خیلی سوال داشت،برام جالب بود که چرا کسی نظری نمیده
    و فکر کردم کار بیهوده ای انجام دادم

    گرچه تشکر کردن همونطور که دوستمون گفتن باعث انگیزه میشه ولی......
    برای جمع کردن تشکر اینجا فعالیت نمیکنم(چون اگه اینطوری باشه وقتم رو تلف کردم)

    اصل یاد بگیر و به دیگران هم یاد بده رو قبول دارم

    موفق باشی..
    ممنون از لطف شما

  23. #23
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    بخش پنجم

    تنظیم اولویت (Priority) ایمیل:

    گرچه تعیین اولویت ایمیل به وسیله هدر ها (Header) کنترل میشود،اما در فضای نام System.Net.Mail تعیین اولویت پیغام جزو ویژگی های شی ایجاد شده از کلاس MailMesseage میباشد
    ویژگی Priority میتواند مقادیر زیر را دریافت کند


    مثالی از نحوه استفاده از این ویژگی:


    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    mail.Priority = MailPriority.High;

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."

    mail.Priority = MailPriority.High

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)

    اضافه کردن Reply-To به هدر ایمیل :

    همانند ویژگی Priority ،هدر Reply-Toنیز توسط شی ایجاد شده از MailMesseage قابل تنظیم میباشد
    از این ویژگی جهت تعیین ایمیلی به عنوان گیرنده پاسخ استفاده میشود
    وقتی کاربر ایمیل را می بیند و قصد ارسال پاسخ آن را دارد،ایمیل تعیین شده با این ویژگی به عنوان دریافت کننده پاسخ میباشد

    مثالی از نحوه استفاده از این ویژگی:


    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    mail.ReplyTo = new MailAddress("SomeOtherAddress@mycompany.com");

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."

    mail.ReplyTo = New MailAddress("SomeOtherAddress@mycompany.com")

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)




    اضافه کرده header های دلخواه به ایمیل:

    آیا تا به حال به هدر هایی که همراه با ایمیلی که برای شما ارسال میگردد دقت کرده اید؟
    این هدرها دارای اطلاعات جالب و مفیدی از ارسال کننده ایمیل میباشند
    برخی از این هدر ها ثابت و برخی دیگر به وسیله فرستنده قابل تغییر میباشند
    حتی شما قادر خواهید بود اطلاعات دلخواه خود را در هدر ایمیل های ارسالی قرار دهید
    برای اضافه کردن هدر به ایمیل از کلاس MailMessage استفاده میکنیم

    مثالی از نحوه استفاده از این ویژگی:


    [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    mail.Headers.Add("Company", "My Company");
    mail.Headers.Add("Location", "Iran");

    SmtpClient smtp = new SmtpClient("127.0.0.1");
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."

    mail.Headers.Add("Company", "My Company")
    mail.Headers.Add("Location", "Iran")

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.Send(mail)


    نمونه ای از نمایش هدرهای ایمیل در Yahoo:


    یکی از هدرهای جالب،هدر Disposition-Notification-To میباشد
    با استفاده از این هدر و معرفی یک ایمیل به عنوان مقدار هدر میتوانید از خوانده شدن ایمیل توسط گیرنده آن باخبر شوید(البته استفاده از این هدر به صورت تضمین شده نمی باشد و درستی عملکرد آن دارای شرایط میباشد به همین جهت مورد بحث و برسی قرار نمیگیرد )

  24. #24
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    بخش پایانی


    پیکر بندی Web.Config جهت ارسال ایمیل:

    اگر تا کنون دقت کرده باشید،در هنگام ارسال ایمیل برخی از قسمتها مشترک میباشد.این قسمت ها به شرح ذیل میباشند

    MailMessage.From
    SmtpClient.Host
    SmtpClient.Port


    با تنظیم یک باره آنها در Web.Config از تنظیم این ویژگی ها در قسمت های مختلف جلوگیری خواهد شد

    <configuration>
    <system.net>
    <mailSettings>

    <smtp from="Me@MyCompany.com">
    <network host="Your Smtp Server" port="25" userName="send@MyCompany.com" password="PWd1"
    defaultCredentials="false" />
    </smtp>

    </mailSettings>
    </system.net>
    <connectionStrings/>
    <system.web>
    </configuration>



    نکته قابل توجه در مورد defaultCredentials میباشد که اگر مقدار true داشته باشد userNameو passwordدر نظر گرفته نمیشوند

    ارسال ایمیل به صورت غیر همزمان:

    SNM امکان ارسال ایمیل به صورت غیر همزمان را فراهم آورده است
    با استفاده از این روش،در زمان ارسال ایمیل به کار دیگری پرداخته میشود و با هندل کردن رخداد اتمام ارسال ایمیل،می توان از ارسال درست یا نادرست ایمیل آگاه شد.
    همانطور که اشاره شد،میتوانیم درستی ارسال ایمیل را تشخیص دهیم
    این امر توسط رخداد SendCompleted کنترل میشود
    در مثال زیر قصد داریم این رخداد را به دلخواه خود هندل کنیم و پیغام مناسب خود را به کاربر نمایش بدهیم

    مثالی از نحوه استفاده از این ویژگی:

      [C#‎]

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    SmtpClient smtp = new SmtpClient("127.0.0.1");

    /*1*/ object user_State = mail;

    /*2*/smtp.SendCompleted += new
    SendCompletedEventHandler(SmtpClient_OnCompleted);

    /*3*/smtp.SendAsync(mail, user_State);
    public static void SmtpClient_OnCompleted(object sender,AsyncCompletedEventArgs e)
    {

    /*4*/ MailMessage mail = (MailMessage)e.UserState;

    string subject = mail.Subject;

    if (e.Cancelled)
    {
    Console.WriteLine("Send canceled for mail with subject[{0}].", subject);
    }
    if (e.Error != null)
    {
    Console.WriteLine("Error {1} occurred when sending mail
    [{0}] ", subject, e.Error.ToString());
    }
    else
    {
    Console.WriteLine("Message [{0}] sent.", subject);
    }
    }
    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."

    Dim smtp As New SmtpClient("127.0.0.1")

    /*1*/ Dim user_State As Object = mail

    /*2*/ AddHandler smtp.SendCompleted, AddressOf SmtpClient_OnCompleted

    /*3*/ smtp.SendAsync(mail, user_State)


    Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As ComponentModel.AsyncCompletedEventArgs)

    /*4*/ Dim mail As MailMessage = CType(e.UserState, MailMessage)

    Dim subject As String = mail.Subject

    If e.Cancelled Then
    Console.WriteLine("Send canceled for mail with subject [{0}].",subject)
    End If
    If Not (e.Error Is Nothing) Then
    Console.WriteLine("Error {1} occurred when sending mail [{0}] ", subject, e.Error.ToString())
    Else
    Console.WriteLine("Message [{0}] sent.", subject)
    End If

    End Sub



    نکات قابل توجه:

    به خطوطی که با شماره 1 تا 3 شماره گذاری شده اند توجه کنید
    در خط 1 ،شی بنام user_State به شی ایجاد شده از کلاس Mailmessage منتسب شده است
    و در خط 3 این شی همرا با شی Mailmessage به عنوان ورودی تابع ارسال شده است
    دلیل این امر این است که ما اطلاعاتی از ایمیل را که نیازمندیم از آنها برای نمایش پیغام های مناسب استفاده کنیم در دسترس داشته باشیم

    این شی ارسالی به صورت یک ویژگی(Property) به نام UserSate قابل دسترس خواهد بود (خط 4)
    در خط 2 نیز تابع SmtpClient_OnCompleted را به عنوان تابعی اجرایی برای این رخداد معرفی میکینم


    نوشتن ایمیل در pickup directory:

    نوشتن ایمیل در pickup directory سرویس SMTP در IIS یکی دیگر از امکانات SNM میباشد. pickup directory یک دایرکتوری ویژه است سرویس Smtp مایکروسافت از آن برای ارسال ایمیل استفاده میکند
    تمام فایل های موجود در این دایرکتوری بر اساس سرویس Smtp پردازش و تحویل داده میشود
    اگر پروسس تحویل ایمیل شکست بخورد فایل در queue directory ذخیره میشود
    تا بعدا ارسال شوند
    اگر یک خطای مهلک (fatal error) زخ بدهد فایل به Badmail directory منتقل میشود
    با نوشتن در pickup directory سرعت پردازش بالا میرود چرا که تبادل ارتباط با یک ایمیل سرور دیگر از جریان ارسال ایمیل حذف خواهد شد

    مثالی از نحوه استفاده از این ویژگی:

     [C#‎]

    MailMessage mail = new MailMessage();

    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");

    mail.Subject = "This is an email";
    mail.Body = "this is the body content of the email.";

    SmtpClient smtp = new SmtpClient();
    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    smtp.Send(mail);

    [VB]

    Dim mail As New MailMessage()

    mail.From = New MailAddress("me@mycompany.com")
    mail.To.Add("you@yourcompany.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."

    Dim smtp As New SmtpClient()
    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis
    smtp.Send(mail)


    قابل ذکر است از این روش میتوانید مثال های فوق را بدون اتصال به اینترنت و داشتن سرور واسط و فقط با نصب سرویس SMTP بر روی IIS به صورت عملی انجام دهید
    نتایج کار خود را میتوانید در
    Inetpub\mailroot

    در داخل پوشه Pickup یا Queue مشاهده کنید

  25. #25

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    ازتون بابت مقاله كاملتون ممنونم
    يه سوال داشتم براي اينكه ايميل ارسالي حتما وارد اينباكس بشه كسي راه حلي نداره؟؟؟

  26. #26
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    تهران
    پست
    36

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    سلام
    خیلی ممنونم از مقاله ی بسیار ارزشمند شما
    من خیلی برنامه نویس خوبی نیستم لطفا کمکم کنین
    من از کد های شما در vb.net استفاده کردم اما در خط آخر به مشکل میخوره و Failure sending mail. رو میده:
    Dim mail As New MailMessage()

    mail.From = New MailAddress("yaali1990@yahoo.com")
    mail.To.Add("funali.z8709@yahoo.com")

    mail.Subject = "This is an email"
    mail.Body = "this is the body content of the email."
    Dim smtp As New SmtpClient("dns1.mci.com", 25)
    smtp.Credentials = New NetworkCredential("yaali1990@yahoo.com", "******")
    smtp.Send(mail)
    این کل دستوراتیه که من زدم،البته خط آخر در پرانتز گذاری درسته و اینجا پرانتز در اول خط رفته
    همه ی دستورات در یک button نوشته شده
    لطفا راهنماییم کنید دیوانم کرد!
    آخرین ویرایش به وسیله sali2010 : شنبه 02 مهر 1390 در 23:28 عصر

  27. #27
    کاربر تازه وارد
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    تهران
    پست
    36

    نقل قول: مقاله::مرجع کامل ارسال ایمیل در دات نت 2

    مشکل رو پیدا کردم،مشکل شرکت اینترنتی ای هست که از آن خدمات می گیرم.پورت های 25 و 587 رو بسته که ادعا میکنه کار ما نیست کار مخابراته! من دیال آپ هم نشد چون این پورت هارو این دفعه خود مخابرات بسته.اگر به این صریحی مطلبی برای دریافت ایمیل از طریق pop3 یا IMAP هست در جریانم بگذارید.
    پورت های کختلف اب سیستم های مختلف برای ارسال ایمیل:
    POP3 - port 110

    IMAP - port 143

    SMTP - port 25

    HTTP - port 80

    Secure SMTP (SSMTP) - port 465

    Secure IMAP (IMAP4-SSL) - port 585

    IMAP4 over SSL (IMAPS) - port 993

    Secure POP3 (SSL-POP) - port 995
    آخرین ویرایش به وسیله sali2010 : چهارشنبه 06 مهر 1390 در 16:41 عصر

  28. #28
    سلامخسته نباشید.دستون درد نکندمن میخواستم بدونم چگونه میشود این نمونه کدها را بر روی سیستم خودم امتحان کنم.مثلا میل ها به یک پوشه بر روی سیستم فرستاده شود.؟و نیاز نباشد که برنامه روی سرور امتحان شود.؟اگر با یک نمونه کد توضیح داده شود ممنون میشوم.

  29. #29
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    سلامخسته نباشید.دستون درد نکند
    ممنونم

    من میخواستم بدونم چگونه میشود این نمونه کدها را بر روی سیستم خودم امتحان کنم.مثلا میل ها به یک پوشه بر روی سیستم فرستاده شود.؟و نیاز نباشد که برنامه روی سرور امتحان شود.؟اگر با یک نمونه کد توضیح داده شود ممنون میشوم.
    به این شکل که شما می فرماید نمیشه
    میتونین با نصب کردن سرویس SMTP بر روی IIS خودتون (در مقاله هم ذکر شده که این سرویس وجود داره)
    و با استفاده از همین مثال ها،ایمیل هایی به ایمیل خودتون در Yahoo یا Gmail بفرستید و
    یا میتونین از ایمیل سرور های مجانی استفاده کنید
    مثل:
    MX1.mai.yahoo.com
    یا
    Smtp.gmail.com
    یا
    Mx.google.com

  30. #30
    توی iis یک Default SMTP Virtual Server وجود دارد.چیز دیگری باید نصب کنیم؟چگونه؟
    مثلا من کد زیر را امتحان میکنم

    ProtectedSub Button2_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles Button2.Click
    Dim mail AsNew MailMessage()
    mail.From =
    New MailAddress("f@yahoo.com")
    mail.To.Add(
    "b@yahoo.com")
    mail.Subject =
    "This is an email"
    Dim plainView As AlternateView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", Nothing, "text/plain")

    Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", Nothing, "text/html")

    Dim logo AsNew LinkedResource("c:\temp\logo.gif")
    logo.ContentId =
    "companylogo"
    htmlView.LinkedResources.Add(logo)
    mail.AlternateViews.Add(plainView)
    mail.AlternateViews.Add(htmlView)

    Dim smtp AsNew SmtpClient("127.0.0.1")
    smtp.Send(mail)
    EndSub


    غیر از تنظیم ایمیل های معتبر به تنظیم دیگری احتیاج نیست؟میل فرستاده میشود؟

  31. #31
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1384
    محل زندگی
    همدان
    پست
    336
    خوب پست قبلم رو تصحیح میکنم و فکر میکنم این بهتر باشه
    میتونید ایمیل ها رو به خود SMTP تحویل بدین.و اون ایمیل رو در دایرکتوری C:\Inetpub\mailroot\Pickup قرار میده و اگه موفق به ارسال نشه به C:\Inetpub\mailroot\Queue انتقال میده میتونی بری و ایمیل رو مشاهده کنی
    اینطوری درگیر ایمیل سرور ها هم نمیشی و جنبه آموزشی حفظ میشه
    این قسمت کد :

    Dim smtp AsNew SmtpClient("127.0.0.1")
    smtp.Send(mail)

    رو به این شکل تصحیح کن:

    Dim smtp As New SmtpClient("127.0.0.1")
    smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis
    Try
    smtp.Send(mail)
    Catch ex As Exception
    Response.Write(ex)
    End Try

  32. #32
    کاشکی علم اونقدر پیشرفت کرده بود که از تو اینترنت می تونستم بپرم و بغلت کنم و دستتو ببوسم که همچین مطلبی رو جمع آوری و ترجمه کردی. واقعا دستت درد نکنه. خسته نباشی عزیز

  33. #33
    آقا واقعا عالی بود دستت درد نکه
    خدا به وقتت برکت بده

  34. #34
    من لم یشکر الخالق لم یشکر المخلوق

    سلام
    من هم به نوبه خودم لازم می دونم از زحمتی که کشیدید تشکر و قدردانی کنم.
    موفق باشید

  35. #35
    واقعا جالب بود . تا به حال مقاله ای به این کاملی در مورد ارسال ایمیل ندیده بودم . خواهشا در پایان به صورت pdf قرار بدید چون به درد خیلی ها میخوره . بازم تشکر

  36. #36
    آقا خیلی عالی بود به قول دوستمون اگر pdf هم بکنید و قرا بدهید روی سایت برای دانلود که عالی میشود

  37. #37

    Bulk نشدن ایمیل

    سلام، خسته نباشید.

    وقتی ایمیل ارسال می شود فونت و اندازه آن زشت است ولی ایمیل حتی در یاهو نیز به inbox ارسال می شود.
    ولی وقتی کد <br> یا تگ هایی که مشخص میکند اسم و اندازه فونت چی باشه را در متن میل می نویسیم و حتی قسمت isbodyhtml=true هم میزاریم دیگه میل ها به bulk میره تو یاهو شما که تمام مباحث مربوط به میل را توضیح دادید راهی هم برای بر طرف کردن این مشکل دارید ؟

  38. #38
    نقل قول نوشته شده توسط JackJumper.Net مشاهده تاپیک
    سلام، خسته نباشید.

    وقتی ایمیل ارسال می شود فونت و اندازه آن زشت است ولی ایمیل حتی در یاهو نیز به inbox ارسال می شود.
    ولی وقتی کد <br> یا تگ هایی که مشخص میکند اسم و اندازه فونت چی باشه را در متن میل می نویسیم و حتی قسمت isbodyhtml=true هم میزاریم دیگه میل ها به bulk میره تو یاهو شما که تمام مباحث مربوط به میل را توضیح دادید راهی هم برای بر طرف کردن این مشکل دارید ؟
    آقای راد راجع به این موضوع توضیح کاملی نوشتند.
    می تونید به این آدرس رجوع کنید
    https://barnamenevis.org/showth...edicate&page=3
    متاسفانه ip dedicate می خواد که پولیه!!

  39. #39
    آیا این امکان وجود دارد که از کامپیوتر کاربر فایلی در ایمیل Attach شود بدون اینکه از کامپوننت (component) , انتخاب فایل<INPUT> استفاده شود؟

  40. #40
    قبل از هر چیز لازم می دونم بابت این مقاله تون از شما تشکر کنم. واقعا یه رفرنس بی نظیره!
    همچنین خدمت اون دوستانی که کم لطفی کردن باید عرض کنم! که تشکر اینترنتی اونقدر ارزش نداره که یه نفر این همه متن رو ترجمه کنه ! شما لطف داشتید که این مطالب رو، جمع آوری کردید و اینجا گذاشتید تا بقیه ازش استفاده کنند.

    نقل قول نوشته شده توسط babi_ww مشاهده تاپیک

    کلاس SmtpClient ارسال ایمیل به صورت SSL را هم جهت اهداف امنیتی پشتیبانی میکند
    ممنون میشم اگه راجع به این مورد هم یه مثال با کد بگذارید.

صفحه 1 از 3 123 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •