ارسال e-mail با VB.NET 2005
دوستان همان طور که می دونید کلاس ارسال ایمیل درVB.NET 2005 عوض شده ، من یک کد برای ارسال ایمیل نوشتم مشکل من اینجا است که خاصیت host را نمی تونم تنظیم کنم ، یعنی ERROR می ده در تعریفش هم گفته نا سرور SMTP است کسی می تونه راهنمایی کنه من این PROPERTY رو به چی SET کنم . در ضمن خود HELP هم یک SAMPLE داره ولی برای استفاده از اون کد باید IIS را روی سیستم نصب ، همچنین سرور SMTP رو هم نصب و پیکر بندی کنید :متفکر:
Imports System.net.MailPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MailMsg As New MailMessage(New MailAddress(strFrom.Trim()), New MailAddress(item))
MailMsg.BodyEncoding = Encoding.Unicode
MailMsg.Subject ="saLAM"
MailMsg.Body = "THIS IS A TESTING E-MAIL BODY"
MailMsg.Priority = MailPriority.High
MailMsg.IsBodyHtml = True
Next
Dim SmtpMail As New SmtpClient
SmtpMail.Host = "192.192.192.192"
' SmtpMail.Host = "10.10.10.10"
'SmtpMail.Host = "mail.cantv.net"
' SmtpMail.Host = "SMTP.HOTMAIL.COM"
' SmtpMail.Host = "SMTP.YAHOO.CO.UK"
SmtpMail.Send(MailMsg)
End Sub
هما نطور که می بینید با هیچکدام از این سرور ها کار نمی کنه؟
فرستادن میل از طریق smtp سرور خودتان
خوب، این استفاده که شما گفتی یک استفاده معقول و قانونی از SMTP Server هستش، ولی از سرور خودتون. حالا چهجوری؟ مفصل شرح میدم که به درد آیندگان هم بخوره.
۱) باید توی تنظیمات DNS تون چک کنید که فیلد MX برای دامین شما، به چه سروری نشونه میره. مثلأ برای یاهو، این فیلد به چهار سرور mx1.mail.yahoo.com تا mx4.mail.yahoo.com اشاره میکنه. برای شما شاید آدرسش smtp.domain.com یا mx.domain.com باشه.
اگر به DNS دسترسی ندارید، چند تا راه حل دارید.
الف) برید به Start بعد Run بعد بنویسید CMD و Enter کنید. حالا بنویسید:
nslookup -type=mx domain.com
البته به جای domain.com آدرس دامین خودتون رو (بدون www) بنویسید. (میگم بدون www چون فرض میکنم که آدرس ای-میلهای ارسالی از دامین شما برای دیگران foo@domain.com هستش، نه foo@www.domain.com)
این دستور قاعدتا باید لیست سرورهای smtp دامین شما رو بر گردونه. میتونید همین رو برای yahoo.com امتحان کنید، تا متوجه بشید که من mx1.mail.yahoo.com رو از کجا آوردم!
ب) از ادمین شرکتی که Hosting سایت شما رو عهده گرفته بخواید به شما آدرس SMTP سرورتون رو بگه.
ج) اگر کنترل پنلی برای تنظیمات هاست در اختیار شما گذاشته شده (مثلاً CPanel) از منوهای اون استفاده کنید، تا تنظیمات SMTP Server رو پیدا کنید.
۲) حالا که آدرس SMTP Server رو دارید، با کدی مثل همون کد قبل بهش وصل شید، و مطمئن هم بشید که آدرس فرستنده از همون دامین خودتون هستش (مثلاً info@domain.com) و نه از دامین دیگهای (مثلا yahoo.com) آدرس گیرنده هرچیزی میتونه باشه. حالا ای-میلها رو بفرستید. قاعدتا نباید از Bulk سر در بیاره. اما چند تا نکته مهم هم روی این که از Bulk سر در نیاره اثر میذارن:
۱) SMTP Server شما نباید توی Black Listها باشه. این که از کجا بفهمیم که هست رو فعلا نمیرسیم سرش بحث کنیم، مفصله. اما این که چه کار کنیم توی Black List نریم، خیلی مهمه. اگر شما برای اولین بار هست که از این SMTP Server استفاده میکنید، باید از همون اول دقت کنید که ای-میلهای الکی و تبلیغاتی نزنید، چون اگر گیرندههای شما، مثلا در یاهو، ببینن ای-میل چرت میزنید، و Send To Bulk بکننش (یا همون Mark As Spam خودمان) اون وقت، کم کم به لیست سیاه میرید و ای-میلهای به درد بخورتون هم به Bulk منتهی میشن!
۲) نباید بذارید هیچ کس دیگهای از SMTP Server شما استفاده کنه! دیدید که همه میتونن از سرورهای یاهو استفاده کنن! و دیدید که یاهو و بقیه مکانیسمی دارن که ای-میلهای مشکوک به جعلی بودن رو سوا کنن. حالا اگر من بدون دونستن شما، از سرور شما یک عالمه ای-میل تبلیغاتی به این و اون بزنم، چون یاهو و بقیه، راهی ندارن که بفهمن این ای-میلها توسط صاحب قانونی سایت زده شده یا نه، همه رو به چشم این میبینن که کار شما (صاحب قانونی سرور) بوده، و همه اونها و همه ای-میلهای بعدی شما به Bulk سرازیر میشن!
برای این منظور باید SMTP Serverتون رو طوری تنظیم کنید که فقط از طریق کامپیوتری که شما باهاش بهش وصل میشید ای-میل قبول کنه (یا اصطلاحاً فقط IP کامپیوتر شما رو Relay کنه.) اگر نمیدونید چهطوری، یا اصلا به سرور دسترسی ندارید، از ادمین کمک بگیرید.
۳) حتیالامکان سعی کنید IP کامپیوتری که ای-میل ها رو از اون شروع میکنید (همون که برنامه VB.Net روشه) با IP سرور SMTP یکی باشه. این باعث میشه که سرورهای گیرنده، کمتر به Spamming از طریق سرور شما شک کنن، و شما رو فرتی Black Listed نکنن.
یه کاری که بعضیها توصیه میکنن اینه که در تمام ای-میلهایی که میزیند، از گیرندههای خودتون بخواید که آدرس شما رو به Address Bookشون اضافه کنن (یا در مورد Hotmail به Safe Listشون اضافه کنن.) این روش باعث میشه حتی اگر به دلیلی که در کنترل شما نیست، سرور شما رفت تو لیست سیاه، باز هم اون گیرنده ای-میل شما رو در Inbox دریافت کنن، و نه در Bulk یا مشابه اون.
باز خیلی توصیه میشه که اگر میتونید از SMTP Server اشتراکی استفاده نکنید. میدونید که خیلی از سایتها و دامینها هستن که چندتایی یک IP دارن. در مورد وبسایت این تقریباً هیچ مشکلی ایجاد نمیکنه. اما در مورد SMTP Server گاهی میگن دردسرساز میشه، و اون هم وقتیه که یک نفر دیگه که از همون SMTP Server استفاده میکنه اما آدرس دامینش چیز دیگهاس، شروع کنه به Spamming و بره تو لیست سیاه. اگر فقط آدرس دامین اون بابا میرفت تو لیست سیاه برای شما ایرادی نداشت، اما گاهی IP اون سرور رو کلاً به لیست سیاه اضافه میکنن، که در اون صورت، چون SMTP Server شما و ایشون یک IP داره، دخل شما هم اومده!!
و دست آخر این که همه اینهایی که گفتم، قسمت عمده «اما نه تمام» چیزایی رو شامل میشد که باید در نظر گرفت تا ای-میلها به Bulk نرن. خود من هم هنوز به تمام جوانب امر اشراف ندارم، و اینایی که گفتم حاصل کلی مطالعه و تجربیات شخصیمه.
یک توصیه دوستانه هم برای کسانی که این تاپیک رو میخونن: اگر از طرف دوستی، نامزدی، رئیسی، چیزی براتون ای-میل اساسیای و سرنوشتسازی اومد، ترجیحاً یاد این مثالی که بالا زدم باشید، و با خود طرف به صورت تلفنی یا ... چک کنید که ای-میل واقعاً از طرف خودش بوده.
ارسال ایمیل با vb.net 2005 قسمت یکی به آخر مانده
خدمت دوستان عزیز عرض کنم کد ارسال به هر بدبختی بود پیدا شد و مشکلات قبلی مثلا رفتن نامه در bulk دریافت کننده ویا error ها ی عجیب و غریب سرور ها خبری نیست .
مشکل اینجا است این کد در VB.net 2005 استفاده می شه و در حقیقت کلاسی که برای ارسال استفاده شده منسوخ شده ولی چاره نیست و پیش کامپایلر VB.net 2005 کد هایی که زده شده را بعنوان Warning می شناسه ولی برنامه کامپایل شده و کار می کنه ؟
به کد های قبلی یه قسمت اضافه شده که صحت و وجود ارسال کننده رو تایید می کنه که یک سرور هستش مال شرکت ماکروسافت ناراحت نباشید این سرور حالا حالا داون شدن نداره کد ر. ببینید و حالو ببرید :
در ضمن با vb.net 2003 اصلا مشکل نداره بچه های asp.net کار هم می تون ازش استفاده کنن
کد به زبان VB.NEt
Dim myMail As New MailMessage
Dim SmtpMail As SmtpMail
myMail.From = "name@yourdomain.com"
myMail.To = "name@doamin.com"
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "mail.yourdomain.com")
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25)
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "name@yourdomain.com")
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "youremailpassword")
myMail.Subject = "salam "
myMail.BodyFormat = MailFormat.Html
myMail.BodyEncoding = System.Text.UTF8Encoding.UTF8
myMail.Body = " و نوشته شده برای تست ارسال این یک نامه تستی است"
myMail.Priority = MailPriority.High
SmtpMail.SmtpServer = "localhost"
'
SmtpMail.Send(myMail)
کد به زبان #C:
'MailMessage myMail = new MailMessage();
Dim myMail As New MailMessage
myMail.From = "name@yourdoamin.com"
myMail.To="toAddress@domain.com";
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver","mail.yourdoamin.com");
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport",25) ;
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing",2) ;
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) ;
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername","name@yourdoamin.com") ;
myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","youremailpassword") ;
myMail.Subject = "Email Subject";
myMail.BodyFormat=MailFormat.Html;
myMail.BodyEncoding=System.Text.UTF8Encoding.UTF8;
myMail.Body=" This is Email Body.";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(myMail);
در ضمن قسمت آخر این تاپیک مال اونیی که میخواد همین کد رو با کلاس
System.Net.Web
که کلاس خود پیشنهادی ماکروسافت برای ارسال mail هست بهمون نشون بده؟
هر کی هستش ما منتظریم
نقل قول: ارسال e-mail با VB.NET 2005
میشه برنامه ای نوشت که یه Inbox وصل بشه و ایمیل ها رو چک کنه...؟