首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET中异步发送电子邮件的正确方法...(我做得对吗?)

在ASP.NET中异步发送电子邮件的正确方法...(我做得对吗?)
EN

Stack Overflow用户
提问于 2012-01-06 02:09:02
回答 7查看 33.6K关注 0票数 20

当用户在我的网站上注册时,我不明白为什么我需要让他“等待”smtp通过,这样他才能收到激活电子邮件。

我决定异步启动这段代码,这是一次冒险。

假设我有一个方法,比如:

代码语言:javascript
复制
private void SendTheMail() { // Stuff }

我的第一次..是线程化。我这样做了:

代码语言:javascript
复制
Emailer mailer = new Emailer();
Thread emailThread = new Thread(() => mailer.SendTheMail());
emailThread.Start();

这行得通..。直到我决定测试它的错误处理能力。我故意破坏了我的web.config中的SMTP服务器地址,并尝试了它。可怕的结果是IIS基本上在w3wp.exe上出现了一个未处理的异常错误(这是一个windows错误!有多极端...)ELMAH (我的错误记录器)没有捕捉到它,IIS被重启,所以网站上的任何人都会删除他们的会话。完全不能接受的结果!

我的下一个想法是对异步委托做一些研究。这似乎工作得更好,因为异常是在异步委托中处理的(与上面的线程示例不同)。然而,我担心如果我做错了,或者我可能导致了内存泄漏。

这就是我要做的:

代码语言:javascript
复制
Emailer mailer = new Emailer();
AsyncMethodCaller caller = new AsyncMethodCaller(mailer.SendMailInSeperateThread);
caller.BeginInvoke(message, email.EmailId, null, null);
// Never EndInvoke... 

我这样做对吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8747483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档