.net - 使用 Razor 模板在 MVC3 中发送电子邮件

标签 .net asp.net-mvc-3 email razor

谁能帮我做决定? 我在网上看到了一些变体,但我不想使用其他人做的一些现成的东西。 我想使用 .net 提供的可能性创建我自己的功能。

任何帮助将不胜感激。提前谢谢你

最佳答案

做起来真的很简单:

            var emailModelData = new
            {
                Name = "John Someone",

                OrganizationName = "OragnizationName"

            };

            var templatePath = physicalApplicationPath +
                @"EmailTemplates\" + Mail.Default.WelcomeMailTemplate + ".cshtml";

            var template = System.IO.File.ReadAllText(templatePath, Encoding.Default);
            var body = Razor.Parse(template, emailModelData);

            //this is doesnt matter it is just and object which i pass to the SendEmail function below
            var simpleMailMessage = new SimpleMailMessage
            {
                To = recipientEmail,
                From = Mail.Default.From,
                Body = body,
                IsBodyHtml = true,
                ReplyTo = Mail.Default.ReplyTo,
                Subject = "subject blah blah"
            };
            //If using a test mail address. Used in development
            if (Mail.Default.SendToTestEmailAddress)
            {

                simpleMailMessage.Bcc = string.Empty;
                simpleMailMessage.CC = string.Empty;
                simpleMailMessage.To = Mail.Default.TestEmailAddress;
            }
//see below the code for the SendEmail funciton
            _email.SendEmail(simpleMailMessage, null, Constants.WEBSITE_SOURCE_NAME);

//-------------------------------------------- ----------

public bool SendMail(SimpleMailMessage mail)
        {


            using (var client = new SmtpClient()) 
            {
                try
                {
                    var email = CreateMailMessage(mail);
                    client.Send(email);
                    return true;

                }
                catch (Exception exception)
                {
                     return false;

                }

            }
            return false;

        }

        private static System.Net.Mail.MailMessage CreateMailMessage(SimpleMailMessage mail)
        {
            var msg = new System.Net.Mail.MailMessage();

            if (!string.IsNullOrEmpty(mail.From))
                msg.From = new MailAddress(mail.From);

            if (!string.IsNullOrEmpty(mail.Subject))
                msg.Subject = mail.Subject;

            if (!string.IsNullOrEmpty(mail.Body))
                msg.Body = mail.Body;

            msg.IsBodyHtml = true;

            if (!string.IsNullOrEmpty(mail.Sender))
                msg.Sender = new MailAddress(mail.Sender);

            if (!string.IsNullOrEmpty(mail.To))
                msg.To.Add(new MailAddress(mail.To));

            if (!string.IsNullOrEmpty(mail.ReplyTo))
                msg.ReplyToList.Add(new MailAddress(mail.ReplyTo));

            if (!string.IsNullOrEmpty(mail.CC))
                msg.CC.Add(new MailAddress(mail.CC));

            if (!string.IsNullOrEmpty(mail.Bcc))
                msg.Bcc.Add(mail.Bcc);

            return msg;
        }

关于.net - 使用 Razor 模板在 MVC3 中发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10847727/

相关文章:

.net - 用于非游戏相关 3D 图形编程的托管 Direct3D 或 XNA?

asp.net-mvc-3 - ASP.NET MVC 如何从 Controller 访问 Global.asax 文件中的属性?

.net - 编辑对话框,带有 WPF 中的绑定(bind)和确定/取消

c# - 随机程序集引用失败 ("Are you missing a using directive or an assembly reference?")

.net - MMC 证书管理单元在哪里导入 "Service account"的证书?

php - 当有内容配置时,如何提取邮件正文?

PHP显示未读邮件数

javascript - 分页符页面的特定部分

c# - 是否可以覆盖模型中属性的必需属性?

php - 如何通过 PHP 的邮件功能发送包含阿拉伯语内容的电子邮件?