我目前正在使用 SmtpClient 向注册或注册活动的用户发送电子邮件。
当他们点击注册时,它会保存信息并调用发送电子邮件功能,但发送一封太长的电子邮件需要不到一秒钟的时间。
有没有办法保存用户信息,并且在页面加载后它会在后台从 vb 调用发送电子邮件功能。
我考虑过使用 winform 发送电子邮件,但是当我使用 Godaddy 进行托管时,你在哪里运行它?
谢谢你们的帮助。
您可以保存用户信息,当页面加载时,您可以对服务器页面进行 ajax 调用,该页面将向用户发送电子邮件。这样做的好处是,由于它是异步的,用户不需要等待这个动作完成来继续站点导航中的一些其他动作。但它不会比你拥有的方法更快。
您可以使用 domready
函数在(重新?)加载的页面中进行这样的 ajax 调用。
$(function(){
//Whatever code inside this will be executed only after the DOM finishes loading
var userId=45; //replace this with your new userId
$.post("Emailer.aspx?userId="+userId,function(data){
alert("Some alert message if you really want!");
});
});
假设您有一个名为的页面Emailer.aspx
,它将读取查询字符串参数并执行操作(发送电子邮件)。
我只会使用 SmtpClient 的 SendAsync() 方法与 Send() 方法。这将允许代码继续发送电子邮件,因为它会产生一个新线程来处理发送。这为用户节省了等待时间。只是不要以这种方式循环发送 1000 封电子邮件。它可能会导致您的服务器产生过多的线程并影响性能。
您还可以研究 Smtp 服务“Pickup Directory”选项。如果您对 SMTP 服务器所在的位置具有文件写入权限,则可以将邮件“投递”到该位置以便稍后发送。
我的第一个答案是 nbushnell 建议的 SendAsync
如果您担心 1000 封电子邮件,您可以在数据库记录中为用户设置一个“位”字段,然后编写一个 Windows 服务,读取位为 0 的用户表,发送电子邮件,然后将该位设置为 1
这消除了用户等待页面加载的等待时间,但是他们接收实际电子邮件会有延迟。