ارسال ایمیل با استفاده از KendoEditor و Web API
دوشنبه 20 اردیبهشت 1395حتما با Kendo و قابلیت های آن آشنا هستید . در این مقاله قصد داریم برنامه ای ایجاد کنیم تا با استفاده از Kendo Editor و 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>
خروجی آن نیز به صورت زیر می باشد:

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

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

- ASP.net MVC
- 2k بازدید
- 4 تشکر