مقالات
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 ايميل به دوستان نظر خوانندگان

2006/01/01 - i
کد کردن Connection String
اطلاعات Connection String در پروژه های Web Based از مهمترین مواردی است که برای مخفی ماندن آن از دید دیگران باید اهتمام ویژه ای به خرج داد. برای حفظ امنیت این اطلاع در ASP.NET راه کارهای مختلفی وجود دارد که در اینجا به یکی از آنها اشاره می کنم که کد کردن Connection String و سپس قرار دادن آن در web.config و یا متن برنامه است. . شاید این روش در نگاه اول روش بسیار امنی به نظر بیاید اما در واقع این طور نیست زیرا به راحتی Decode می شود ولی به هر حال مسکنی موقت است.
برای کد کردن یک رشته کاراکتری ابتدا لازم است System.Text را using کنید.
using System.Text;
سپس میتوانید به وسیله چند خط زیر یک رشته کاراکتری را که می تواند همان Connection String باشد کد کنید
string strConnectionString =
    "server=127.0.0.1;database=db;uid=user;pwd=pass";
string strToEncode = 
    Convert.ToBase64String 
    (ASCIIEncoding.ASCII.GetBytes(strConnectionString));
مقدار کد شده در متغییر strToEncode قرار گرفته است . این مقدار کد شده را در جائی مثل web.config قرار دهید. حال زمانی که در برنامه می خواهید Connection String را به یک SqlConnection بدهید تا آن را Open کند، باید آن را Decode کنید. برای این کار می توان تابع زیر را نوشت که مقدار کد شده را به عنوان پارامتر می گیرد و مقدار Decode شده را بر می گرداند
string Decoder(string strToEncode)
{
    return 
        ASCIIEncoding.ASCII.GetString
            (Convert.FromBase64String(strToEncode));
}
نوشته شده در ساعت 08:11 ايميل به دوستان نظر خوانندگان

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

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

( Summery )