【问题标题】:Creating and sending a newsletter创建和发送时事通讯
【发布时间】:2012-03-08 06:05:18
【问题描述】:

我想在我的项目中添加一个时事通讯功能,以便向所有订阅用户发送构建的邮件。尽管我根本不期待大量的邮件,但我希望将其重新用于发送邮件量可能很大的项目。但是,我对我可以使用什么策略感到困惑。引用this question的答案:

我不建议发送 asp.net 网页,即使您确实在单独的后台启动它 线。我认为您冒着服务器在中间回收您的进程的风险 发送,这会搞砸。您确实需要编写某种单独的服务或 申请发送您的电子邮件。

这意味着 WCF 服务将是可行的方法,但它是 OData 还是 RIA 服务是否重要? MSDN 文档对于每种类型的用途有点混乱。它以 Silverlight 作为使用 RIA 的示例,但仍然说您也可以独立使用它。

另外,即使我确实以这种方式使用服务,上面关于回收进程的引用是否意味着我无法从 MVC 控制器调用它,因为它会在控制器等待时回收进程服务呢?理想情况下,我想用 MVC 创建邮件,将其传递给服务,发送邮件并在 MVC 本身内处理结果。

之后的最后一个问题是我是否可以使用服务实现表单身份验证。我需要能够控制对服务的访问,这样其他人就不能随意发送新闻通讯。

结合 WCF 和 MVC 是否可以实现这些目标?

【问题讨论】:

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


    【解决方案1】:

    当做类似的事情时,记住我想保证所有东西都被发送。我只是在我的控制器中设置了消息的内容,然后将消息和收件人列表(或者在本例中是定义收件人的过滤器)写入数据库。

    然后我有一个完全独立的进程在 ASP(在我的例子中是一个 Windows 服务)之外运行,它定期检查数据库的发送请求,发送它们,并将它们标记为已发送。

    显然,MVC 控制器负责处理所有身份验证问题。一旦发送请求被记录到数据库中,它就被认为是完全授权的。

    您可以通过使用 WCF 在 ASP 和 Windows 服务之间进行通信来做类似的事情,但我认为它过于复杂。很难保证请求最终得到处理。无论如何,您确实需要一个数据库记录来 100% 确定这一点——因此该记录也可能是您的信息。您通常也不需要实时触发电子邮件发送。

    【讨论】:

    • 感谢詹姆斯的回答。这让事情变得更容易处理。
    猜你喜欢
    • 2012-02-25
    • 2012-01-07
    • 2015-09-24
    • 2013-11-10
    • 2012-06-25
    • 2011-09-11
    • 2012-01-10
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多