在控制台应用程序中发送Html Mail [英] Send Html Mail in Console application
本文介绍了在控制台应用程序中发送Html Mail的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个控制台应用程序来发送邮件现在我有html模板
i我现在根据用户从数据库获取数据如何在html中绑定这些数据。
我的代码是
private static void Main( string [] args)
{
// 获取所有用户
var userList = BLLMailAlert.GetAllSubscribedUser();
// 将UserID作为参数发送并查找用户投标
foreach ( var 用户 userList)
{
BLLMailAlert.GetAllTenderForPaidUser(user.UserID);
// 每个AlertId查找模板名称和EmailId
foreach ( var usr in userList)
{
var detail = BLLMailAlert.GetUserAllDetail(usr.AlertID);
// 根据TemplateName FIND模板和该模板中的书写招标
switch (usr.UserTypeTemplate.TemplateType.TemplateTypeName)
{
case TemplateForPaidUser.htm:
{
// 将邮件发送给每个用户
var fromEmail = string .Empty;
var toEmail = string .Empty;
toEmail = usr.Email;
fromEmail = Convert.ToString(ConfigurationManager.AppSettings [ adminmail]);
const string TemplatePath = [资源路径];
var mailContent = new StreamReader(TemplatePath).ReadToEnd();
mailContent + = detail;
BLLMailAlert.SendTenderAlert(fromEmail,toEmail,mailContent);
}
break ;
}
}
}
}
// 发送邮件的功能
// 我有一个名为Mail的类,我是用于发送邮件
public static bool SendTenderAlert( string fromEmail, string toEmail,字符串 mailContent)
{
尝试
{
var currentDate = System.DateTime.Now.Date;
Mail.SendHtmlMail(fromEmail,toEmail, TenderKhabar | Fresh Tenders Of | + currentDate ,mailContent);
return true ;
}
catch
{
return 假跨度>;
}
}
解决方案
嘿Victor
在控制台中发送HTML模板应用程序您可以使用 String Builder 和 StreamReader 并尝试添加和替换内容详细信息请参阅此 StringBuilder.Append方法和 StringBuilder.Replace方法
所以你的代码就像
// create String构建器
var sbMail = new StringBuilder();
// 用于迭代你可以使用foreach
foreach ( - 你的条件 - )
{
使用( var sReader = new StreamReader(TemplatePath))
{
sbMail.Append(sReader.ReadToEnd());
sbMail.Replace( {YourTitle},DataSource.YourTitle);
.............
sbMail.Append( BR /跨度>);
}
}
现在在html模板中
尝试类似的东西
< pre lang =text>< table>>
< tr>
< td>
{YourTitle}
< / td>
< / tr>
< / table>
将取代{YourTitle}并在Mail中附加下一个{YourTitle} />
跳跃帮助..........
你可以尝试这样的东西让你的邮件体好......:D
string GetBody()
{
string PreDefinedMailFormat = @ < html>
< head>
< title>< / title>
< / head>
< body>
< div>
< span style ='font-size:12px;'>< span style ='font-family:verdana,geneva,sans-serif;'> Hi {1} {2},< / span>< / span>< / div>
< DIV>
& nbsp;< / div>
< div>
< span style ='font-size:12px;'>< span style ='font-family:verdana,geneva,sans-serif;'>< strong>恭喜!< / strong> ; {0}已收到并接受了您的邀请。< / span>< / span>< / div>
< div>
< / body>
< / html>
;
string MailReceiverFName = Moumit;
string MailReceiverLName = Mondal;
string MailSenderName = KAKA;
// 最终邮件正文
字符串 MailBody = string .Format(PreDefinedMailFormat,MailSenderName,MailReceiverFName,MailReceiverLName);
return MailBody;
}
i have created a console application to send mail now i have html templates
i am getting data from database according to user now how to bind this data in html.
my code is
private static void Main(string[] args)
{
// Get All User
var userList = BLLMailAlert.GetAllSubscribedUser();
// Send UserID as Parameter and Find Tenders For Users
foreach (var user in userList)
{
BLLMailAlert.GetAllTenderForPaidUser(user.UserID);
// For Each AlertId Find Template Name and EmailId
foreach (var usr in userList)
{
var detail = BLLMailAlert.GetUserAllDetail(usr.AlertID);
// According to TemplateName FIND Template and Write Tender in that Template
switch (usr.UserTypeTemplate.TemplateType.TemplateTypeName)
{
case "TemplateForPaidUser.htm":
{
// Send Template in Mail To Each User
var fromEmail = string.Empty;
var toEmail = string.Empty;
toEmail = usr.Email;
fromEmail = Convert.ToString(ConfigurationManager.AppSettings["adminmail"]);
const string TemplatePath = "[Path to resource]";
var mailContent = new StreamReader(TemplatePath).ReadToEnd();
mailContent += detail;
BLLMailAlert.SendTenderAlert(fromEmail, toEmail, mailContent);
}
break;
}
}
}
}
//function to send mail
// I have Class named Mail which i am using to send mail
public static bool SendTenderAlert(string fromEmail, string toEmail, string mailContent)
{
try
{
var currentDate = System.DateTime.Now.Date;
Mail.SendHtmlMail(fromEmail, toEmail, "TenderKhabar | Fresh Tenders Of |" + currentDate, mailContent);
return true;
}
catch
{
return false;
}
}
解决方案
Hey Victor
To Send HTML Template in Console Application You Can use String Builder and StreamReader and try to Append and replace the Content For more Detail See this StringBuilder.Append Method and StringBuilder.Replace Method
So your Code will be Like
//create String Builder var sbMail = new StringBuilder(); //for iteration You can use foreach foreach(--Your Condition--) { using (var sReader = new StreamReader(TemplatePath)) { sbMail.Append(sReader.ReadToEnd()); sbMail.Replace("{YourTitle}", DataSource.YourTitle); ............. sbMail.Append("br/"); } }
now in html template
try something Like that
<table>> <tr> <td> {YourTitle} </td> </tr> </table>
that will replace {YourTitle} and Append the next {YourTitle} in the Mail
Hop That Helps..........
You can try somthing like this to mak your mail body nice ...... :D
string GetBody() { string PreDefinedMailFormat = @"<html> <head> <title></title> </head> <body> <div> <span style='font-size:12px;'><span style='font-family:verdana,geneva,sans-serif;'>Hi {1} {2},</span></span></div> <div> </div> <div> <span style='font-size:12px;'><span style='font-family:verdana,geneva,sans-serif;'><strong>Congratulations!</strong> {0} has received and accepted your invitation.</span></span></div> <div> </body> </html> "; string MailReceiverFName = "Moumit"; string MailReceiverLName = "Mondal"; string MailSenderName = "KAKA"; //Final mail body string MailBody = string.Format(PreDefinedMailFormat, MailSenderName, MailReceiverFName, MailReceiverLName); return MailBody; }
这篇关于在控制台应用程序中发送Html Mail的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文