ارسال نامه الکترونیکی با تصاویر تعبیه شده در بدنه HTML و متن در ASP.Net
با سلام در این مقاله نحوه ارسال ایمیل های فرمت شده HTML را توضیح خواهیم داد. بسیاری از وب سایت های روزنامه ، ایمیل های تبلیغاتی ارسال می کنند. این ایمیلها حاوی محتوا و تصاویر Rich Text هستندپس بیایید با آن شروع کنیم.
الگوی HTML بدنه ایمیل
در مرحله اول شما نیاز به ایجاد یک الگوی HTML از بدنه دارید که دارای برخی متغیرهایی است که با محتوای واقعی جایگزین می شوند. مزیت ایجاد قالب به جای ایجاد HTML با استفاده از رشته Builder در کد این است که می توانید به راحتی قالب HTML را بدون تغییر کد تغییر دهید.

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title></head>
<body>
<img src = "//www.asps.com/images/Blue/Logo.png" /><br /><br />
<div style = "border-top:3px solid #22BCE5"> </div>
<span style = "font-family:Arial;font-size:10pt">
Hello <b>{UserName}</b>,<br /><br />
A new article has been published on ASPSnippets.<br /><br />
<a style = "color:#22BCE5" href = "{Url}">{Title}</a><br />
{Description}
<br /><br />
Thanks<br />
ASPS
</span>
</body>
</html>
در قسمت زرد رنگ چهار متغیر زیر را در الگوی HTML Email ایجاد کرده ایم.
{UserName - نام گیرنده
{Url} - آدرس مقاله
{Title} - عنوان مقاله
{Description} - توضیحات مقاله
اکنون تنها کاری که ما باید انجام دهیم این است که متغیرها را با مقادیر واقعی آنها جایگزین کنیم و ایمیل را ارسال کنیم.
جمع کردن بدنه قالب بندی شده HTML
در صورت کلیک بر رویداد handler دکمه ، ابتدا فایل HTML Template را می خوانیم و سپس متغیرهای متغیر را با مقادیر آنها جایگزین می کنیم.
C #
private string PopulateBody(string userName, string title, string url, string description)
{
string body = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/EmailTemplate.htm")))
{
body = reader.ReadToEnd();
}
body = body.Replace("{UserName}", userName);
body = body.Replace("{Title}", title);
body = body.Replace("{Url}", url);
body = body.Replace("{Description}", description);
return body;
}
VB.Net
Private Function PopulateBody(ByVal userName As String, ByVal title As String, ByVal url As String, ByVal description As String) As String
Dim body As String = String.Empty
Dim reader As StreamReader = New StreamReader(Server.MapPath("~/EmailTemplate.htm"))
body = reader.ReadToEnd
body = body.Replace("{UserName}", userName)
body = body.Replace("{Title}", title)
body = body.Replace("{Url}", url)
body = body.Replace("{Description}", description)
Return body
End Function
روش ارسال ایمیل
روش زیر به سادگی ایمیل گیرنده ، موضوع و بدنه را می پذیرد و ایمیل را ارسال و تنظیمات SMTP را از فایل web.config جمع می کند
C #
private void SendHtmlFormattedEmail(string recepientEmail, string subject, string body)
{
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["UserName"]);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recepientEmail));
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(mailMessage);
}
}
VB.Net
Private Sub SendHtmlFormattedEmail(ByVal recepientEmail As String, ByVal subject As String, ByVal body As String)
Dim mailMessage As MailMessage = New MailMessage
mailMessage.From = New MailAddress(ConfigurationManager.AppSettings("UserName"))
mailMessage.Subject = subject
mailMessage.Body = body
mailMessage.IsBodyHtml = True
mailMessage.To.Add(New MailAddress(recepientEmail))
Dim smtp As SmtpClient = New SmtpClient
smtp.Host = ConfigurationManager.AppSettings("Host")
smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings("EnableSsl"))
Dim NetworkCred As System.Net.NetworkCredential = New System.Net.NetworkCredential
NetworkCred.UserName = ConfigurationManager.AppSettings("UserName")
NetworkCred.Password = ConfigurationManager.AppSettings("Password")
smtp.UseDefaultCredentials = True
smtp.Credentials = NetworkCred
smtp.Port = Integer.Parse(ConfigurationManager.AppSettings("Port"))
smtp.Send(mailMessage)
End Sub
و در زیر تنظیمات web.config آورده شده است. برای ارسال ایمیل از سرور GMAIL SMTP استفاده می کنیم
<appSettings>
<addkey="Host"value="smtp.gmail.com"/>
<addkey="EnableSsl"value="true"/>
<addkey="UserName"value="sender@gmail.com"/>
<addkey="Password"value="xxxxx"/>
<addkey="Port"value="587"/>
</appSettings>
ارسال ایمیل فرمت شده HTML
با کلیک روی دکمه ارسال ، ایمیل های HTML فرمت شده را ارسال می کنیم.
C #
protected void SendEmail(object sender, EventArgs e)
{
string body = this.PopulateBody("John",
"Fetch multiple values as Key Value pair in ASP.Net AJAX AutoCompleteExtender",
"//www.aspsnippets.com/Articles/Fetch-multiple-values-as-Key-Value-pair-" +
"in-ASP.Net-AJAX-AutoCompleteExtender.aspx",
"Here Mudassar Ahmed Khan has explained how to fetch multiple column values i.e." +
" ID and Text values in the ASP.Net AJAX Control Toolkit AutocompleteExtender"
+ "and also how to fetch the select text and value server side on postback");
this.SendHtmlFormattedEmail("recipient@gmail.com", "New article published!" , body);
}
VB.Net
Protected Sub SendEmail(ByVal sender As Object, ByVal e As EventArgs)
Dim body As String = Me.PopulateBody("John", _
"Fetch multiple values as Key Value pair in ASP.Net AJAX AutoCompleteExtender", _
"//www.aspsnippets.com/Articles/Fetch-multiple-values-as-Key-Value" & _
"-pair-in-ASP.Net-AJAX-AutoCompleteExtender.aspx", _
("Here Mudassar Ahmed Khan has explained how to fetch multiple column values i.e. ID and Text values in" & _
" the ASP.Net AJAX Control Toolkit AutocompleteExtender" & _
"and also how to fetch the select text and value server side on postback"))
Me.SendHtmlFormattedEmail("recipient@gmail.com", "New article published!", body)
End Sub
در بالا ابتدا متن HTML ایمیل از قالب در حال جمع آوری و ارسال ایمیل برای گیرنده می باشد.
.png)