ارسال ایمیل در MVC با استفاده از اکانت gmail

7/21/2016 MVC
3635

یکی از الزامات برنامه های وب ارسال ایمیل هست که نیاز شد امروز این کار رو انجام بدهم، مثلا زمانی که کاربر ثبت نام کرد ایمیلی برای آن ارسال شود ، این امکان در  Identity  وجود دارد اما اگر قرار باشد این کار در خارج از Identity  انجام پذیرد میشود از کد های زیر استفاده کرد.

 

برای استفاده از ارسال ایمیل با استفاده از  اکانت gmail  از این کلاس استفاده کردم 

   public class SendEmail
    {
        public void SendValidateEmail(string emailTo,string emailFrom,string  subject,string mailBody ,string userName,string password)
        {
            MailMessage mail = new MailMessage();
            mail.To.Add(emailTo);
            mail.From= new MailAddress(emailFrom);
            mail.Subject = subject;
            string body = mailBody;
            mail.Body = mailBody;
            mail.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential
                (userName, password);
            smtp.EnableSsl = true;
            smtp.Send(mail);
        }
    }

در قسمت toclient@gmail.com باید ایمیل دریافت کننده را وارد کرد و در قسمت sender@gmail.com لازم است ایمیل ارسال که ممکن است ایمیل خودتان و یا ایمیل سایت در حال طراحی باشد را وارد کنید و قسمت Username نام کاربری مربوط به جی میل و در قسمت Password کلمه عبور را وارد کنید،

و یا میتوانید از این کد استفاده کنید تا نام کاربری و کلمه عبور نیز برای هر پروژه ذخیره گردیده باشد.

public bool SendValidateEmailFromGmail(string emailTo, string subject, string mailBody)
        {
            MailMessage mail = new MailMessage();
            mail.To.Add(emailTo);
            mail.From = new MailAddress("XXXX@gmail.com");
            mail.Subject = subject;
            string body = mailBody;
            mail.Body = mailBody;
            mail.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential
                ("XXXX@gmail.com", "123456");
            smtp.EnableSsl = true;
            try
            {
                smtp.Send(mail);
                return true;
            }
            catch (Exception)
            {
                return false;
            }

        }

 

 میتوان در روی لینک ارسال ایمیل اینچنین نوشت (این لینک را در جلوی هر ایمیل که در وب سایت ثبت نام کرده بود قرار دادم تا در صورت نیاز ایمیلی اختصاصی برای آن شخص ارسال شود) با استفاده از کد زیر لینکی به شما میدهد که میتوانید به کاربر مورد نظر با کلیک بر روی کلمه Email  یک ایمیل با متن this is test  و موضوع  test  ارسال نمایید.

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

@Html.ActionLink("Email","SendMail", "Home", new
                {
                  area ="",  emailTo ="ToClient@gmail.com", emailFrom= "sender@gmail.com", subject= "test", mailBody= "this is test",UserName,Password
                },null) 

به یاد داشته باشید به جای XXXX@gmail.com  ایمیلی که قرار است از ان جهت ارسال ایمیل استفاده کنید وارد نمایید و به جای 123456 کلمه عبور دسترسی به آن ایمیل را وارد نمایید.

 

نکته : اگر به خطای زیر برخورد کردید باید مراحل برطرف کردن آن را طی کنید.

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at

بنا به دلایل امنیتی در گوگل شما باید ابتدا در کامپیوتر محلی خود لوگین کرده باشید و قبل از آن نوع لوگین و یا ورود با اکانت خود را  Turn on 2-Step Verification (یا ورود دو مرحله ای به gmail) انتخاب کرده باشید و از طرفی باید با استفاده از قسمت کلمه عبور جدیدی برای ورود انتخاب کنبد به این معنی که gmail  برای ورود به غیر از صفحه لوگین خود برای هر سخت افزار و یا مکان خاصی یک کلمه عبور جدید لازم دارد که باید شما به این صفحه رفته و سخت افزار و یا نرم افزار مورد نظر را انتخاب کنبد و کلمه جدید 16 رقمی که به شما میدهد را به جای کلمه عبور همیشگی gmail  به کار ببرید.، این کلمه عبور با کلمه عبوری که شما به صورت پیش فرض برای ورود انتخاب میکنید متفاوت خواهد بود.

البته یک راه حل دیگری که توصیه شده، استفاده از این لینک است  تا امنیت کمتری را برای ایمیل خود انتخاب کنبد ، لازم است یاد اوری کنم زمانی که Turn on 2-Step Verification را قبل از این فعال کرده باشید این امکان برای شما غیر فعال خواهد بود.