مقالات
2006/01/02 - i
ارسال MailMessage توسط SmtpMail.Send با امکان authentication
اول از همه ببخشید که خیلی عنوان مطلب عجیب قریب شد. بهتر از این به ذهنم نرسید.
ارسال ایمیل در ASP.NET پروسه بسیار ساده ای دارد که علاقه مندان همه می دانند و دوباره متذکر نمی شوم. اما اگر بخواهید که پارامترهای بیشتری را برای این عملکرد تنظیم کنید، راه حل چیست؟
به عنوان مثال اگر ارسال ایمیل مستلزم تعیین شناسه و رمز معتبر بروی شبکه باشد ، آنگاه دیگر کار به این راحتی نیست. مطمئنا اگر برنامه شما بروی شبکه ای با پیچیدگی کمتر ( مانند شبکه محلی ) قرار داشته باشد، با این محدودیتها برخورد نمی کنید ولی در شرایطی که Web Server که برنامه شما بروی آن نصب است با Mail Server که می خواهد ایمیل شمارا ارسال کند در یک Security Zone نباشد آنگاه نیاز به تنظیمات authentication برای ارسال ایمیل پیدا میکنید.
و اما راه حل: از آنجائی که ارسال ایمیل توسط SmtpMail.Send در ASP.NET از Microsoft CDO استفاده می کند، شما می توانید تمام پارامترهای مورد نیاز را در "Fields Property" یک MailMessage قرار دهید و سپس درخواست SmtpMail.Send را فراخوانی نمایید. فرض کنید که یک Object از نوع MailMessage با نام msg به ترتیب زیر ایجاد کرده ایم.
MailMessage msg = new MailMessage();
برای اینکه برنامه شما بتواند از روی Web Server درخواست ارسال ایمیل را در شبکه به Mail Server برساند باید sendusing رادر Fields مقدار دهی کنیم. برای مقدار دهی sendusing به ترتیب زیر عمل می کنیم
msg.Fields
 ["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;
مقدار این خصوصیت از CdoSendUsing Enum گرفته می شود. که عدد 2 به معنی ارسال از طریق شبکه و با SMTP است.
اگر بخواهید Port را برای SMTP Server تعیین کنید
msg.Fields
["http://schemas.microsoft.com/cdo/configuration/
smtpserverport"
] = 25;
برای اینکه درخواست شما دارای authentication شود باید به ترتیب زیر عمل کنید.
msg.Fields
["http://schemas.microsoft.com/cdo/configuration/
smtpauthenticate"
] = 1;
مقدار این خصوصیت از CdoProtocolsAuthentication Enum گرفته می شود.
در آخر باید userid و password کاربر معتبری که مجوز ارسال ایمیل را دارد تعیین کنید.
msg.Fields
["http://schemas.microsoft.com/cdo/configuration/
sendusername"
] = userid;
msg.Fields
["http://schemas.microsoft.com/cdo/configuration/
sendpassword"
] = password;
که در آن userid و password با مقادیر دلخواه شما جایگزین شده اند.
حال با دو خط زیر و با مقدار دهی smtpServer با آدرس SMTP Server می توانید msg را که شامل تنظیمات ایمیل شما است ( از جمله موضوع و بدنه ایمیل) ارسال کنید.
SmtpMail.SmtpServer = smtpServer;
SmtpMail.Send(msg); 
یک مثال در این خصوص در لینک زیر است.

SMTP Authentication using System.Web.Mail (CDOSYS)

نوشته شده در ساعت 08:08 ايميل به دوستان نظر خوانندگان

مقالات من
آخرين مطالب

نقل از مطالب اين سايت با ذكر منبع مجاز ميباشد

( Summery )