在控制台应用程序中发送Html Mail [英] Send Html Mail in Console application

查看:86
本文介绍了在控制台应用程序中发送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>
                                        &nbsp;</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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆