我目前正在使用SmtpClient向注册或注册活动的用户发送电子邮件。
当他们点击注册时,它会保存信息并调用发送邮件功能,但发送一封太长的电子邮件需要不到一秒的时间。
有没有办法保存用户信息,加载页面后,它会在后台从vb调用发送邮件功能。
我考虑使用winform发送电子邮件,但是当我使用Godaddy进行托管时,你在哪里运行它?
感谢您的帮助。
答案 0 :(得分:1)
您可以保存用户信息,当页面加载时,您可以对服务器页面进行ajax调用,该服务器页面将向用户发送电子邮件。这样做的优点是,由于它是异步的,因此用户无需等待此操作完成以继续在站点导航中执行其他操作。但它不会比你的方法更快。
你可以使用dom ready
函数在(re?)加载的页面中进行这样的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
的页面,它将读取查询字符串参数并执行操作(发送电子邮件)。
答案 1 :(得分:1)
我只使用SmtpClient的SendAsync()方法与Send()方法。这将允许代码继续通过电子邮件发送,因为它生成一个新线程来处理发送。这为用户节省了等待时间。只是不要以这种方式循环发送1000个电子邮件。它可能导致您的服务器产生太多线程并阻碍性能。
您还可以研究Smtp服务“分拣目录”选项。如果您对SMTP服务器所在的位置具有文件写入权限,则可以“删除”邮件,以便稍后发送。
答案 2 :(得分:0)
我的第一个答案是nbushnell建议的SendAsync
如果你担心1000封电子邮件,你可以在用户的数据库记录上有一个“位”字段,然后写一个Windows服务,读取位为0的用户表,发送电子邮件,然后设置位到1
这消除了等待页面加载的用户的等待时间,但是接收实际电子邮件时会有延迟。