C#向每个人发送自定义内容的人发送smtp电子邮件 - 最佳实践?

时间:2011-05-05 14:36:09

标签: c# asp.net email asp.net-mvc-3

我在ASP.NET MVC中编写的网站提供了一个供人们订阅以便定期通过电子邮件发送给他们的信息的选项。

所以我想知道实现这一目标的最佳方法是什么。基本上,我将每周邮寄很多人一次,每人的电子邮件都有自定义的调整内容。

  1. 我假设我需要一个单独的程序来自我的MVC内容应用程序。那么单独的程序可以从Windows计划任务运行?

  2. 那个单独的预定应用程序会循环形成在一周中的某一天发送的电子邮件吗?

  3. 因为每个人都不一样,我想我必须为每个人循环,填写相关信息。我想确保我不会效率低下并最终破坏我的工作场所的SMTP服务器 我一直看到提到的“皮卡文件夹”,那是怎么回事?

  4. 额外的,如果我可以使用我的mvc应用程序中的某些视图来构成电子邮件的一部分,那将是很好的,除了重做不必要的东西。

    这是我到目前为止使用的代码,如果这就是我需要的话,我不知道如何将其引导到拾取文件夹中:

    internal static bool SendEmail(MailAddress fromAddress, MailAddress toAddress, string subject, string body)
        {
            try
            {
                using (var client = new SmtpClient("smtp.server.gov.uk"))
                {
                    client.Send(new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body });
                }
                return true;
            }
            catch (SmtpException ex)
            {
                throw new ApplicationException
                  ("SmtpException has occured: " + ex.Message);
            }
            catch (Exception)
            {
                return false;
                //throw;
            }
    
        }
    

2 个答案:

答案 0 :(得分:0)

一种有趣的方法是依靠CacheExpiration使缓存无效,并让该失效执行一段代码来执行后台任务。

另外,对于专门发送电子邮件,我建议创建新线程并让每个线程完成一部分工作,然后报告发送电子邮件可以在电子邮件中标记的状态。在检查点期间,您可以使用“已发送”标记更新数据库。

看一下这篇文章详细解释的方法: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

答案 1 :(得分:0)

在这里看看MVCMailer,我相信这可以解决你的很多问题。

http://www.nuget.org/packages/MvcMailer

或只是

Install-Package MvcMailer
从包管理器控制台