PDA

View Full Version : ارسال e-mail با VB.NET 2005



vahidiran
دوشنبه 13 آذر 1385, 10:22 صبح
دوستان همان طور که می دونید کلاس ارسال ایمیل درVB.NET 2005 عوض شده ، من یک کد برای ارسال ایمیل نوشتم مشکل من اینجا است که خاصیت host را نمی تونم تنظیم کنم ، یعنی ERROR می ده در تعریفش هم گفته نا سرور SMTP است کسی می تونه راهنمایی کنه من این PROPERTY رو به چی SET کنم . در ضمن خود HELP هم یک SAMPLE داره ولی برای استفاده از اون کد باید IIS را روی سیستم نصب ، همچنین سرور SMTP رو هم نصب و پیکر بندی کنید :متفکر:


Imports System.net.Mail

Private 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



هما نطور که می بینید با هیچکدام از این سرور ها کار نمی کنه؟

problem
دوشنبه 13 آذر 1385, 12:28 عصر
گمانم این که اون سرور SMTP هر دو آدرس فرستنده و گیرنده رو Relay کنه مهم باشه. آدرس فرستنده و گیرنده رو هردو در yahoo.com@ بده، و این سرور رو استفاده کن: mx1.mail.yahoo.com اگر کار نکرد، متن پیغام خطا رو برای ما بفرست.

vahidiran
سه شنبه 14 آذر 1385, 11:41 صبح
با این سروری که شما معرفی کرده اید بدرستی کار می کنه فقط مشکلی که داد اینه که نامه رو به پوشه Bulk می فرسته نه به پوشه Inbox ؟ برای رفع این ایراد باید چکار کرد ؟

حالا اگه بخواهیم از دامین ها متفاوت بفرستیم باید چکار کنیم؟:متفکر:

problem
سه شنبه 14 آذر 1385, 13:33 عصر
جواب سوال دوم: باید آدرس درست سرور SMTP اون دامین رو بدونید. ضمن این که باید بدونید که همه دامین اجازهٔ این نوع ارسال ای-میل رو نمی‌دن!

جواب سوال اول: خوب حتما توجه کرده‌اید که با روشی که در بالا یاد گرفتید، می‌توانید از هر آدرسی در یاهو، به هر آدرسی در یاهو ای-میل بزنید!! خوب، حالا اگر آقایی در ای-میل یاهو اش، از نامزدش که آن هم در یاهو اکانت دارد، ای-میل بگیرد که «تو یک خاک بر سری و ... و ... و دیگه اسمم رو هم نیار!» چه احساسی پیدا می‌کند؟! اصلاً فکر می‌کند که شاید من یا شما یا کس دیگه‌ای که این روش بالایی را بلد است، نامردی کرده و بدون این که حتی پسورد اکانت دخترخانم را بداند، آقا را دست انداخته .....؟!!

بنابراین، یاهو (و Hotmail و خیلی از Mail Server های دیگر که سرشان به تنشان می‌ارزد) اگر با این روش بالا میلی دریافت کنند، به بالک می‌فرستند (که البته ۱۰۰٪ نیست، اما اغلب اتفاق می‌افتد.) ضمناً وقتی نامه را باز کنید، هم اخطار می‌کنند که حقیقت داشتن ارسال نامه از طرف کسی که ظاهراً آن را فرستاده تایید شده نیست!

اما هر مشکلی راه حلی هم دارد. شما بگویید دقیقا ای-میل‌ها را برای چه منظوری و به چه کسانی می‌فرستید تا بیشتر توضیح بدهم.

vahidiran
سه شنبه 14 آذر 1385, 15:22 عصر
صد البته شما درست می فرمایید دوست عزیز
ببینید من می خوام چکار کنم :
فرض کنید من توی یک شرکت اطلاع رسانی کار می کنم یه لیست از e-mail ها دارم ، می خوام وقتی که رئیسم به من دستور داد ( خدا از این رئیسا نصیبتون نکنه) یه پیغام برای همه افراد درون لیست بفرستم ، فرستنده هم می خوام خود شرکت باشه یعنی آدرس Info@CompanyName.com بعنوان آدرس دریافت کننده برای افراد ظاهر شه حالا باید چکار کنم ؟

سوال دوم این آدرس درست ایت سرور smtp رو چگونه به دست بیاریم ، راحت تر به شما بگم از کجای کنترل پنتل تنظیمات host و domain می تونم اونو پیدا کنم :متفکر: :لبخند:

problem
سه شنبه 14 آذر 1385, 16:07 عصر
خوب، این استفاده که شما گفتی یک استفاده معقول و قانونی از 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 نرن. خود من هم هنوز به تمام جوانب امر اشراف ندارم، و اینایی که گفتم حاصل کلی مطالعه و تجربیات شخصی‌مه.

یک توصیه دوستانه هم برای کسانی که این تاپیک رو می‌خونن: اگر از طرف دوستی، نامزدی، رئیسی، چیزی براتون ای-میل اساسی‌ای و سرنوشت‌سازی اومد، ترجیحاً یاد این مثالی که بالا زدم باشید، و با خود طرف به صورت تلفنی یا ... چک کنید که ای-میل واقعاً از طرف خودش بوده.

vahidiran
سه شنبه 14 آذر 1385, 17:36 عصر
دوست عزیز اولندش یه عالم تشکر ، حداقل برای وقتی که برای این موضوع می گذاری :لبخندساده:

من این کار رو کردم ولی هیچی ندیدم یعنی MX ندیدم


C:\>nslookup -type=mx yahoo.com
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 217.218.155.104: Timed out
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 192.9.9.3: Timed out
*** Default servers are not available
Server: UnKnown
Address: 217.218.155.104

Non-authoritative answer:
yahoo.com MX preference = 1, mail exchanger = a.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = b.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = c.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = d.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = e.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = f.mx.mail.yahoo.com
yahoo.com MX preference = 1, mail exchanger = g.mx.mail.yahoo.com

yahoo.com nameserver = ns3.yahoo.com
yahoo.com nameserver = ns4.yahoo.com
yahoo.com nameserver = ns5.yahoo.com
yahoo.com nameserver = ns1.yahoo.com
yahoo.com nameserver = ns2.yahoo.com
a.mx.mail.yahoo.com internet address = 209.191.118.103
b.mx.mail.yahoo.com internet address = 66.196.97.250
c.mx.mail.yahoo.com internet address = 68.142.237.182
c.mx.mail.yahoo.com internet address = 216.39.53.3
d.mx.mail.yahoo.com internet address = 216.39.53.2
e.mx.mail.yahoo.com internet address = 216.39.53.1
f.mx.mail.yahoo.com internet address = 68.142.202.247
f.mx.mail.yahoo.com internet address = 209.191.88.247
g.mx.mail.yahoo.com internet address = 206.190.53.191
g.mx.mail.yahoo.com internet address = 209.191.88.239
ns1.yahoo.com internet address = 66.218.71.63


اگر که IIS نصب کنم بعد سرویس smtp را روی IIS نصب و پیکر بندی متن آیا مشکل Bulk حل می شه یا نه ؟

در ضمن من ای پی 10.10,10,10 رو از توی یک سایت که یک نمونه برنامه مثل من نوشته بود پیدا کردم یعنی از این IP برای host استفاده کرده بود ولی برنامه من با این کار نکرد ، حالا وقتی داخل IE من این آدرس رو تایپ می کنم " عبارت مشتری گرامی دسترسی به و........... " می اد یعنی فیلتر شده ، می خواستم بپرسم که اینا ربطی به هم دارند یا نه؟

سپاس فراوان

problem
سه شنبه 14 آذر 1385, 19:33 عصر
منظورت چیه که MX‌ ندیدم برادر؟ اگر منظورت اینه که برای yahoo.com ندیدی، که خوب تو همون کدی که فرستادی بود:



MX preference = 1, mail exchanger = a.mx.mail.yahoo.com


یعنی چی؟ یعنی این که اولین Mail Server ِ یاهو، آدرسش a.mx.mail.yahoo.com هستش (که سابقاً اسمش mx1.mail.yahoo.com بود، و هنوز با اون اسم هم کار می‌کنه به گمانم. من هم اون اسم قبلی رو از حفظ گفته بودم.)

اما اگر منظورت اینه که مال yahoo.com رو کامل فهمیدی، اما برای دامین خودتون مشابه‌اش رو ندیدی، خوب اون وقت اوضاع بده. یعنی این که mail server دامین شما شناسایی نمی‌شه. باید با ادمین تماس بگیری و مطرحش کنی. یا DNS تون کنده، یا اصلا بد تنظیم شده، یا اصلا mail server ندارید و خبر ندارید!! ;)

دو این که نصب IIS و SMTP سرور همراهش کافی نیست. یک SMTP سرور، غیر از این که باید درست پیکربندی بشه (مثلاً درست Relay‌ کنه و ...) باید از بیرون هم شناسایی بشه. یعنی این که باید DNSی که دامین شما رو روش تعریف کردن، فیلدهای MX داشته باشه که به اون سرور اشاره می‌کنن. این فروم محل آموزش DNS‌ و این چیزا نیست، من هم ادعای حرفه‌ای بودن در این زمینه نمی‌کنم (اگر چه قبلا همه این کارها رو تجربه کردم، اما نه در حدی که به همه چم و خمش آگاه باشم.)

سوم این که اون برنامه که شما پیدا کردی، احتمالاً IP گفته شده (10.10.10.10) رو فقط به عنوان یک مثال فرضی گذاشته بوده (چون رند و خوشگله!) شما برای host باید از آدرس IP‌ یا domain name ِ دستگاهی استفاده کنی که می‌تونی بهش به عنوان SMTP Server اعتماد کنی (یعنی می‌دونی که پیکربندی مناسب تو رو داره، و نام دامنه سایت‌تون رو Relay می‌کنه و ...، که آخرش یعنی از SMTP Server خودتون استفاده کنی)

آخر این که اون IP مال کدوم سروره که فیلتر شده؟! راستش این قدری که من می‌دونم رنج IP هایی که با 10 شروع می‌شن صاحاب ندارن، بلکه رزرو هستن و دست IANA هستن. ( لینک (http://www.dnsstuff.com/tools/whois.ch?ip=10.10.10.10) )

vahidiran
چهارشنبه 15 آذر 1385, 08:05 صبح
حالا یه خورده تیکم خورد یعنی شما می گید در جای mx4.mail.yahoo.com می تونم از آدرس a.max.yahoo.com کنم -
اگه اینجوری باشه اون دامین خودم هم همچین چیزی داره ، باید تست کنم
بعدش می خواستم بدونم نرم افزار هایی مثل outlook و اینها چکار می کنند و در آخر هم می خواستم بدونم که آیا Control یا component ی وجود داره که بتونه کار ارسال میل رو برام انجام بده ؟
در ضمن ببخشید که سوال پیچ تون می کنم برنامه نویسی که بلند نیستسم هیچ دیگه شبکه و اینترنت ، سرور ، ..... اینا دیگه یوف :افسرده:

problem
چهارشنبه 15 آذر 1385, 09:23 صبح
نرم‌افزارهایی مثل Outlook و غیره، از SMTP استفاده نمی‌کنن. SMTP برای فرستادن ای-میل خوبه، اما برای دریافت ای-میل از Inbox شما مناسب نیست. برای این منظور پروتکل دیگه‌ای به نام POP وجود داره (و اون برنامه‌ها از POP3 استفاده می‌کنن) که با کمک اون، یه برنامهٔ خارجی می‌تونه به Mail Box‌ وصل بشه. فقط همین. Outlook هیچ وقت ای-میل رو خودش ارسال نمی‌کنه! به Mail Box وصل می‌شه می‌ده به اون، اون ارسال می‌کنه. واسه همین هم، اولین کامپیوتری که به SMTP Server وصل می‌شه همون کامپیوتر اصلی (مثلاً کامپیوتر خود Yahoo) هستش و در نتیجه مکانیسم‌های Validation ای-میل انجام می‌شه، و درستی ای-میل تائید می‌شه، و سر از Inbox گیرنده در می‌آره.

کامپوننت ارسال ای-میل خیلی هست. اعم از رایگان و پولی. اما غالبا هیچ کار محیرالعقولی نمی‌کنن که با خود دات نت نتونی انجام بدی. سرچ کردن نتیجه می‌ده! نمونه‌اش (http://www.google.com/search?client=opera&rls=en&q=send+mail+component+.net&sourceid=opera&num=25&ie=utf-8&oe=utf-8)

سوال کردن هم ایرادی نداره. من در حد توان و سوادم جواب می‌دم.

vahidiran
چهارشنبه 15 آذر 1385, 16:48 عصر
اگر من یکی از این Component ها استفاده کنم مشکل BUlk حل می شه
در ضمن من فقط نیاز به send دارم

vahidiran
چهارشنبه 15 آذر 1385, 16:55 عصر
در ضمن مشکل نام سرور چی ؟

problem
چهارشنبه 15 آذر 1385, 17:39 عصر
سلام
اول این که استفاده از کامپوننت*ها هیچ تاثیری در مساله Bulk نداره، مگر در یک صورت: فرستادن ای-میل با کامپوننت از طریق POP3، اون هم به احتمال خیلی خیلی کمی، ممکنه که شانس تشخیص ای-میل به عنوان Spam رو کم کنه (در مواردی که استفاده از روش POP3 باعث شه، آدرس سروری که ای-میل رو می*فرسته با آدرس سرور SMTP*یکی بشه... ر.ک. حرفای قبلی من.) این هم در مورد شما خیلی بعیده مطرح باشه.
دوم این که، منظور از مشکل نام سرور رو نفهمیدم؟ اگر ایرادی نداره، آدرس دامین خودتون رو برای من به صورت یک پیام در همین تاپیک (یا به صورت یک پیام خصوصی) بفرستید، تا من بتونم بررسی کنم ببینم چی از دستم بر می*آد. در همین حال، توضیح بدید که مشکل نام سرور چیه.

vahidiran
چهارشنبه 15 آذر 1385, 17:44 عصر
خوب من هم می تونم یه برنامه بنویسم که به mailbox وصل شده password بخواد و من ایمیل ها مون از اونجا ارسال کنم فکر کنم در این صورت مشکل Bulk را نداشته باشیم چون هر چه باشه از یک Mailbox فرستاده می شه درست مانند Outlook ولی من هدفمم فرستادن ایمیل است نه دریافت ایمیل چون می خوام یه ایمیل رو به یک لیست که شامل یک سری آدرس ایمیل هست ارسال شه .
اگه بشه خیلی توپه
راستی من روی وب سایت ها دیدم که مثلا نوشته "ارسال این صفحه به دوستتان " بعد که کلیک می کنی یه آدرس ایمیل می گیره و انو ارسال می کنه و هیچ کدوم از مشکلات ما رو نداره ، خوب اینا از کدوم سرور استفاده می کنند.:متفکر:

vahidiran
چهارشنبه 15 آذر 1385, 17:49 عصر
خوب دوست عزیز ممنون
آدرس دامین را به صورت خصوصی برای شما می فرستم

problem
چهارشنبه 15 آذر 1385, 18:11 عصر
اون سایت‌ها هم از سرور خودشون استفاده می‌کنن! شما هم همین کار رو بکن! من سایت شما رو چک کردم، فیلد MX داره. چند نکته داره که بهتون پیام خصوصی می‌زنم اما باهاش نتونستم ای-میل بزنم، یک errorی می‌داد (البته من کامل امتحان نکردم، اما ساده‌ترین روش که telnet هستش شکست خورد.)

vahidiran
پنج شنبه 16 آذر 1385, 08:20 صبح
دوست عزیز کد یرای ارسال e-mail پیدا کردم که از mailbox این کار رو می کنه ولی خوب من نتونستم ردیفش کنم به آدرس زیر مراجعه کنید :
http://www.codeproject.com/tips/CSMTPConnection2.asp
در قسمت
2) Using System.Net.Mail [ASP.NET 2.0]

کدشو من خوب می فهمم ولی قسمت The Web.config file رو نمی دونم مال این کد هست یا نه اگه هست کجا باید ردیفش کنم در ضمن من کدشو نوشتم ولی یک پیام Error از سمت سرور دریافت کرد کد من هم پایان است :


Dim message As New MailMessage("vahidshojaei@yahoo.com", _
"vahidshojaei@yahoo.com", "subject of the Message ", _
"body fo the message ")
'

Dim emailClient As New SmtpClient("mx4.mail.yahoo.com")
Dim SMTPUserInfo As New NetworkCredential("vahidshojaei", "mypassword", "yahoo.com")
emailClient.UseDefaultCredentials = False
emailClient.Credentials = SMTPUserInfo


emailClient.Send(Message)


در ضمن این ها رو هم باید اضافه کنید :

Imports System.Net
Imports System.Net.Mail

vahidiran
پنج شنبه 16 آذر 1385, 08:51 صبح
کد خودمو درست کردم یعنی نام سرور smtp رو این گذاشتم
b.mx.mail.yahoo.com
درست شد ولی باز این مشکل bulk لعنتی رو داره ، پسور و id رو هم چک می کنه ، یعنی یه بار پسورد رو اشتباهی دادم error داد نمی دونم چکار باید بکنم:عصبانی: :عصبانی: :ناراحت: :ناراحت:

problem
پنج شنبه 16 آذر 1385, 09:13 صبح
تاکید می*کنم، از سرور یاهو برای SMTP استفاده نکن! باید از سرور خودتون استفاده کنی تا به Bulk نری! می*شه یک آدرس ای-میل از همون سایت خودتون رو با پسوردش برای من پیام خصوصی کنی؟ (اگر نمی*شه بگو نه.)

vahidiran
پنج شنبه 16 آذر 1385, 09:20 صبح
الان این کار رو می کنم ، منتظر باش

problem
پنج شنبه 16 آذر 1385, 09:40 صبح
درباره کدی که پیدا کردی هم، چون مال وب بوده، همراهش یک web.config داره. فایل‌های ASP.NETی که روی یک سرور هستن، برخی تنظیمات کلی‌شون توی web.config ذخیره می‌شه. قابل تعمیم عینی به VB.NET نیست.

problem
پنج شنبه 16 آذر 1385, 09:43 صبح
من به هیچ عنوان نمی*تونم که به SMTP Server شما وصل شم. دیروز وصل می*شد، امروز نمی*شه. بد نیست این مساله رو طرف ادمین هاست حل کنی! به هر حال «باید» با SMTP Server خودتون ای-میل بفرستی.

vahidiran
جمعه 17 آذر 1385, 16:04 عصر
من هم 2 روز بود که نمی تونستم e-mail رو چک کنم حالا فهمیدم که domain من expire شده باور می شه وقتی با ادمین تماس گرفتم گفت 3 روز بیشتر نیست که expire شده حالا بهش گفتم که شارژ کنه ، میگه 2 روز طول می کشه

vahidiran
شنبه 16 دی 1385, 08:44 صبح
تقریبا بگم که این بحث داره به آخر می رسه فقط فکر کنم آخرین گام اون مونده :
از کد هایی که نوشته شد که برای ارسال ایمیل استفاده می شود برای بعضی از Host ها کار می کنه ولی برای بعضی دیگه این پیغام رو می ده


your E-mail must check for new mail first

کسی متونه بگه مشکلش چیه ؟

vahidiran
یک شنبه 17 دی 1385, 08:17 صبح
خدمت دوستان عزیز عرض کنم کد ارسال به هر بدبختی بود پیدا شد و مشکلات قبلی مثلا رفتن نامه در 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 هست بهمون نشون بده؟
هر کی هستش ما منتظریم

vahidiran
یک شنبه 17 دی 1385, 08:19 صبح
ببخشید اشتباه شد:
نام کلاس اینه:
System.Net.Mail

problem
یک شنبه 17 دی 1385, 18:43 عصر
بسیار عالی و ممنون
جالبه که ما همین دستورات رو برای ASP استفاده می‌کنیم، اما من اصلا فکر نمی‌کردم که اینجا به درد بخوره، واسه همین هیچ وقت پیشنهاد نکردمشون! به هر حال چیز خوبی یاد گرفتیم.
باز هم تشکر.

greenway
دوشنبه 18 دی 1385, 09:43 صبح
تقریبا بگم که این بحث داره به آخر می رسه فقط فکر کنم آخرین گام اون مونده :
از کد هایی که نوشته شد که برای ارسال ایمیل استفاده می شود برای بعضی از Host ها کار می کنه ولی برای بعضی دیگه این پیغام رو می ده

your E-mail must check for new mail first

کسی متونه بگه مشکلش چیه ؟

سلام
خوب دلیل اصلی اش شاید در روش های Login به SMTP Server باشه . یک سرور ممکنه که اصلا Login نخواد و یا به صورت Plain Login تنظیم شده باشه . ممکنه در حالت Authenticate تنظیم شده باشه و باید حتما برای فرستادن ایمیل توش Login کنی و نام کاربری و کلمه عبور Hash شده براش بفرستی . ممکن هم هست که Pop Before SMTP باشه ، یعنی اولش باید به POP وصل بشی ، بعد با SMTP ایمیل ارسال کنی . اینا تنظیمات خود Mail Server هست ، که بعضی از کدها اونا رو نادیده گرفته اند. حالا علاوه بر همه اینها ، سرورهای مختلف امکانات مختلفی رو برای ارسال Email در اختیارت قرار میدهند. مثلا سروری که روش PHP نصب نیست یا تنظیمات PhpMail انجام نشده ، نمیتونه از این گذرگاه ایمیل ارسال کنه . برای پیدا کردن مشکل هم باید بدونی هاست چی کار میکنه ، هم بدونی چیا داره ، هم کد رو داشته باشی و ببینی کد از چه روشی استفاده میکنه . پیامی که نوشتی مفهومش اینه که سرور مورد نظر شما از روش Pop Before SMTP استفاده میکنه ، یعنی اولش باید به POP3 Server وصل بشی ، بعد کانکشن رو ببندی و با SMTP ارسال کنی.

myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)

این روش در Net 2003 یک روش مستند سازی نشده بود ، اما قابلیت تغییر نوع Authentication سرور رو به شما میده ، این به شرطیه که سرور از CDO پشتیبانی بکنه . برای اطلاعات بیشتر به RFC2821 , RFC821 و اینجا رو ببینید :

http://dir.yahoo.com/Computers_and_Internet/Communications_and_Networking/Email/Protocols/

leG_big
دوشنبه 18 دی 1385, 21:18 عصر
دوست عزیز برو اینجا :www.codeproject.com
اول باید عضو بشی

nima.sh
شنبه 05 آذر 1390, 13:26 عصر
میشه برنامه ای نوشت که یه Inbox وصل بشه و ایمیل ها رو چک کنه...؟