2012-06-25 64 views
2

我目前使用SmtpClient将电子邮件发送给注册或注册活动的用户。从网站发送电子邮件的智能方式

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

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

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

感谢您的帮助球员。

回答

1

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

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

1

您可以保存用户信息,当页面加载时,您可以对服务器页面进行ajax调用,该页面将向用户发送电子邮件。这是因为它是异步的,所以用户不需要等待这个动作完成,继续在站点导航中进行其他动作。但它不会比你有的方法更快。

您可以使用dom ready函数在(重新)加载的页面中进行像这样的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页面,它将读取查询参数和做动作(发送电子邮件)。

+0

不幸的是我不知道如何使用ajax,你有这个函数或者一个例子的文档吗? –

+0

@MagedAssad:检查我的更新答案。使用jQuery ajax。你需要在你的页面中包含jQuery库来使用它。在互联网上有大量的教程来学习jQuery ajax – Shyju

0

我的第一个答案将是SendAsync通过nbushnell

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

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

相关问题