2

我目前正在使用 SmtpClient 向注册或注册活动的用户发送电子邮件。

当他们点击注册时,它会保存信息并调用发送电子邮件功能,但发送一封太长的电子邮件需要不到一秒钟的时间。

有没有办法保存用户信息,并且在页面加载后它会在后台从 vb 调用发送电子邮件功能。

我考虑过使用 winform 发送电子邮件,但是当我使用 Godaddy 进行托管时,你在哪里运行它?

谢谢你们的帮助。

4

3 回答 3

1

您可以保存用户信息,当页面加载时,您可以对服务器页面进行 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,它将读取查询字符串参数并执行操作(发送电子邮件)。

于 2012-06-25T02:35:28.043 回答
1

我只会使用 SmtpClient 的 SendAsync() 方法与 Send() 方法。这将允许代码继续发送电子邮件,因为它会产生一个新线程来处理发送。这为用户节省了等待时间。只是不要以这种方式循环发送 1000 封电子邮件。它可能会导致您的服务器产生过多的线程并影响性能。

您还可以研究 Smtp 服务“Pickup Directory”选项。如果您对 SMTP 服务器所在的位置具有文件写入权限,则可以将邮件“投递”到该位置以便稍后发送。

于 2012-06-25T05:53:28.663 回答
0

我的第一个答案是 nbushnell 建议的 SendAsync

如果您担心 1000 封电子邮件,您可以在数据库记录中为用户设置一个“位”字段,然后编写一个 Windows 服务,读取位为 0 的用户表,发送电子邮件,然后将该位设置为 1

这消除了用户等待页面加载的等待时间,但是他们接收实际电子邮件会有延迟。

于 2012-06-25T19:50:16.337 回答