ارسال ایمیل با استفاده از KendoEditor و Web API

دوشنبه 20 اردیبهشت 1395

حتما با Kendo و قابلیت های آن آشنا هستید . در این مقاله قصد داریم برنامه ای ایجاد کنیم تا با استفاده از Kendo Editor و Web API بتوان ایمیل ارسال کرد.

ارسال ایمیل با استفاده از  KendoEditor  و Web API

برای این کار یک برنامه  Web API  با نام KendoEditorEmail به صورت زیر ایجاد میکنیم.

در پنجره بعدی قالب آن را  Empty و منابع آن را به صورت  MVC و  Web API انتخاب میکنیم.

 

کلاسی با نام  Email در پوشه  Models ایجاد کرده و کدهای زیر را در آن قرار می دهیم.

    public class Email  
    {  
        public string cc { get; set; }  
        public string Bcc { get; set; }  
        public string To { get; set; }  
              
        public string  Body { get; set; }  
        public string  Subject { get; set; }  
     
    }  

برای ایجاد کنترلر، بر روی پوشه  Controller کلیک راست کرده و کنترلری با نام EmailController به صورت زیر ایجاد میکنیم.

 

کدها در این کنترلر به صورت زیر خواهند بود.

    [RoutePrefix("api/Email")]
    public class EmailController : ApiController
    {
        [Route("Send")]
        [HttpPost]
        public HttpResponseMessage SendEmail(Email e)
        {
            try
            {
                using (MailMessage mail = new MailMessage())
                {

                    string[] Tolist = e.To.Split(',');
                    foreach (string Toemail in Tolist)
                    {
                        mail.To.Add(new MailAddress(Toemail));
                    }
                    string[] Tocc = e.cc.Split(',');
                    foreach (string cc in Tocc)
                    {
                        mail.CC.Add(cc);
                    }
                    string[] ToBcc = e.Bcc.Split(',');
                    foreach (string Bcc in ToBcc)
                    {
                        mail.Bcc.Add(Bcc);
                    }


                    mail.Subject = e.Subject;
                    mail.Body = HttpUtility.HtmlDecode(e.Body);




                    mail.From = new MailAddress(ConfigurationManager.AppSettings["UserName"]);
                    mail.IsBodyHtml = true;

                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = ConfigurationManager.AppSettings["Host"];
                    smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
                    System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
                    NetworkCred.UserName = ConfigurationManager.AppSettings["UserName"];
                    NetworkCred.Password = ConfigurationManager.AppSettings["Password"];
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = NetworkCred;
                    smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);
                    smtp.Send(mail);
                }

                return Request.CreateResponse(HttpStatusCode.OK, "ایمیل ارسال شد", Configuration.Formatters.JsonFormatter);
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.OK, ex.Message, Configuration.Formatters.JsonFormatter);
            }

        }
    }

 

کنترلر ایجاد شده ، بعد از اجرای موفقیت آمیز عمل  Send ،یک پیغام "ایمیل ارسال شد"  به عنوان پاسخ باز میگرداند.

در  Web.Config  تنظیمات زیر باید رعایت شود :

    <appSettings>  
          <addkeyaddkey="Host"value="smtp.gmail.com"/>  
          <addkeyaddkey="EnableSsl"value="true"/>  
          <addkeyaddkey="UserName"value="sender@gmail.com"/>  
          <addkeyaddkey="Password"value="xxxxx"/>  
          <addkeyaddkey="Port"value="587"/>  
    </appSettings>  

 

یک صفحه  Html به صورت زیر با نام  KendoEditorEmail ایجاد میکنیم. کدها در این صفحه به صورت زیر خواهد بود:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Untitled</title>

    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.common.min.css">

    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.1.112/styles/kendo.default.min.css">


    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2016.1.112/js/angular.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2016.1.112/js/jszip.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2016.1.112/js/kendo.all.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body dir="rtl">
    <div class="container">
        <div class="row" id="example">
            <h3><a href="http://barnamenevisan.org">مرجع تخصصی برنامه نویسان</a></h3>
            <div class="form-group">
                <label for="email">آدرس ایمیل:</label>
                <input type="email" class="form-control" id="email" data-bind="value:To">
            </div>
            <div class="form-group">
                <label for="cc">CC:</label>
                <input type="email" class="form-control" id="cc" data-bind="value:cc">
            </div>
            <div class="form-group">

                <label for="cc">Bcc:</label>
                <input type="email" class="form-control" data-bind="value:Bcc">
            </div>
            <div class="form-group">

                <label for="cc">موضوع :</label>
                <input type="text" class="form-control" data-bind="value:Subject">
            </div>

            <div class="demo-section k-content">
                <div>
                    <h4>پیام را وارد کنید</h4>
                    <textarea data-role="editor"
                              data-tools="['bold',
                                   'italic',
                                   'underline',
                                   'strikethrough',
                                   'justifyLeft',
                                   'justifyCenter',
                                   'justifyRight',
                                   'justifyFull']"
                              data-bind="visible: isVisible,
                                 value: body"
                              data-encoded:"false"
                              style="height: 200px;"></textarea>
                </div>
            </div>
            <br />

            <div>
                <button data-bind="click:sendmail" class="k-button">ارسال پیام</button>
            </div>

            <script>
                    $(document).ready(function(){



                    var viewModel = kendo.observable({
                        To: '',
                        cc: '',
                        Bcc: '',
                        body: '',
                        isVisible: true,
                        Subject: '',

                        sendmail: function (e) {
                            // e.preventDefault();
                            console.log('hello')
                            console.log();
                            $.ajax({
                                type: "POST",
                                async: false,
                                url: "api/Email/Send",
                                data: {
                                    To: viewModel.get("To"),
                                    cc: viewModel.get("cc"),
                                    Bcc: viewModel.get("Bcc"),
                                    Body: viewModel.get("body"),
                                    Subject: viewModel.get("Subject"),
                                },
                                success:function(response)
                                {
                                    alert(response);

                                },
                                error:function()
                                {
                                    alert("Inside ajax call error");
                                },
                            })
                        }
                    });

                    kendo.bind($("#example"), viewModel);
                    })
            </script>
        </div>
    </div>

</body>
</html>

 

خروجی آن نیز به صورت زیر می باشد:

فرم را پر کرده و ایمیلی ارسال میکنیم.

پیام دریافت شده در ایمیل به صورت زیر است:

 

 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید