PDA

View Full Version : سوال: ایراد درانتخاب Encryption فرستادن ایمیل توسط Gmail (ولی نرم افزار Outlook به راحتی ارسال میکند.)



Arash.M
دوشنبه 24 خرداد 1389, 20:49 عصر
با سلام خدمت دوستان عزیز

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

من تصمیم دارم که یک برنامه بنویسم که باید به صورت خودکار برای کاربر ایمیل ارسال کند. ( البته به تعداد محدود یعنی کمتر از 50 ایمیل در طول یک روز). تصمیم دارم این ایمیل ها توسط یکی از آدرس های Gmail خودم فرستاده شود. به سایت گوگل که رفتم smtp.gmail.com را با دو پورت زیر رو معرفی کرده است :


Port for TLS/STARTTLS: 587
Port for SSL: 465

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



SmtpClient smtpClient = newSmtpClient()
{
Host = "smtp.gmail.com",
Port = 587,
Credentials = new System.Net.NetworkCredential(@"arash@gmail.com",@"MyPassword"),
//EnableSsl=true,
};

try
{
smtpClient.Send(mail);
this.Message.Text = "Mail sent successfully.";
}
catch(Exception ex)
{
this.Message.Text = ex.Message;
}



اگر به جای Port هر کدام از اعداد 465 و 587 و 25 را قرار بدهم با دو حالت زیر روبرو میشوم :
1) با وجود دستور comment شده با خطای زیر مواجه می شوم :


Operation Timed Out


2) بدون وجود دستور comment شده با خطای زیر مواجه می شوم :



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. k5sm5365564faa.22




پس در هر صورت ایمیل ارسال نمی گردد.
نرم افزار Outlook 2007 را آزمایش کردم و دیدم که پورت 587 را به همراه Tls Encryption انتخاب می کند و به راحتی می تواند ایمیل ها را ارسال کند. و اگر Ssl Encryption را انتخاب کنم Outlook هم در فرستادن ایمیل شکست می خورد.


با توجه به موارد فوق تصور می کنم که مشکل در Encryption هست.
البته یه جایی تو System.Net یک Enum وجود داره که میشه باهاش Encryption ست کرد. ولی نمی دونم می تونه تو کلاس SmtpClient کاربرد داشته باشه یا خیر.




System.Net.SecurityProtocolType.Tls


اگر کسی می دونه که چطور میشه این قضیه رو حل کرد تا مشکل حل بشه ممنون می شم