gpt4 book ai didi

c# - 在 asp.net 中克服发送电子邮件延迟的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:43 25 4
gpt4 key购买 nike

我添加了一个评论框,每次用户添加新评论时,我都会调用插入处理程序将其应用到数据库中。我在这里喜欢的是快速完成事情。

我现在想做的是在每次插入新评论时立即发送,没有延迟。

所以我添加了 SmtpClient 并在同一个插入处理程序上使用 SendAsync 发送邮件。这对我来说还不够好,因为即使是最简单的电子邮件正文(“hello world”)也需要 5 秒才能回复!!! 也许我需要添加一个新话题?

有没有其他方法可以克服发送邮件的延迟?我想创建一个新的处理程序,它将运行插入处理程序的 onComplete,它将调用另一个将在后台发送邮件的处理程序,用户不会注意到。这个问题可能是垃圾邮件,但一遍又一遍地重新调用同一个处理程序。

最佳答案

有无数种方法可以解决这个问题,但我的方法一直是使用完全不同的定时进程或服务,直接从数据库读取并独立于 ASP.NET 应用程序发送电子邮件。

在一个理想的大型应用程序中,您将使用单独的进程和类似 MSMQ 的东西 - Microsoft Message Queuing在接收端。

编辑:

好吧,网上有几个地方提到了另一种方法(我强烈反对使用它,因为它会非常脆弱),但基本上它涉及创建一个包含要发送的代码的 ASP.NET 网络服务电子邮件并使用 jQuery 调用该服务。所以你最终会得到一个像这样声明的网络服务

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class EmailSender : System.Web.Services.WebService
{
[WebMethod]
public void SendEmail(string email, string message)
{
//Send my email
}
}

在提交或表单回发时,您可以按照这些方式调用它。

$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "EmailSender.asmx",
data: JSON.stringify({ email: "mail@email.com",
message: "this is a test message"
}),
dataType: "json",
success: function (data, textStatus, jqXHR) {
//Do success stuff
},
error: function (jqXHR, textStatus, errorThrown) {
//Do error stuff
}
});

关于c# - 在 asp.net 中克服发送电子邮件延迟的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com