我在ASP.NET中开发了一个Web应用程序。我想在我的应用程序中集成电子邮件解决方案
以下是我的核心要求: 1.用户在网站上注册后立即发送电子邮件。 2.向所有注册用户发送通知电子邮件。
对于第二个要求,我们可以将其视为批量电子邮件,因为我们正在向所有用户发送邮件。
请给我最好的解决方案。我们需要设置SMTP服务器吗?
答案 0 :(得分:4)
是的,你需要有一个SMTP服务器,虽然它不必与网络服务器在同一台机器上设置(它甚至可以由第三方服务提供)。
我个人建议你创建一个电子邮件队列系统 - 而不是直接使用System.Net命名空间的ASP.NET脚本来创建和发送使用特定SMTP服务器的电子邮件,你有一个数据库表(即Subject,身体,TO地址)。
然后单独的工作从该表中读取并发送电子邮件。单独表格/工作的原因是:
它避免了SMTP操作 发生在HTTP事务中 - 如果SMTP服务器过载或 更糟糕,不可用,您的网页将 似乎挂了。
如果SMTP服务器是临时的 不可用或超载,你有 添加重试列的能力 你的桌子。
如果你的SMTP服务器限制了 可以发送的电子邮件数量 一段时间(垃圾邮件预防)你 可以只配置你的工作 尝试发送前x个电子邮件 每次互动。
如果您要发送延迟的电子邮件, 这只是添加一个问题 “SendAfter”栏目
答案 1 :(得分:1)
通常没有。确保Web服务器在系统上安装了SMTP服务,并且您可以使用system.net.mail类。这应该可以处理所有基本的电子邮件发送需求。
如果您开始遇到大量注册用户的问题或批量邮件中包含太多BCC地址的问题,那么您将需要查看基本邮件管理器(可以发送批量邮件的内容)爆发)或完整的电子邮件服务器。
答案 2 :(得分:0)
我发现最简单的方法是将System.Net.Mail库封装在一个帮助器类中,这样我就可以在任何需要发送电子邮件的项目中简单地包含我的EmailHelper类。
这是我在EmailHelper中的反刍Send()方法。你可以看到它很容易使用。
public bool Send() {
bool emailSent = false;
if (_to.Count > 0) {
MailMessage msg = new MailMessage();
SmtpClient mail = new SmtpClient("your.email.host");
msg.From = new MailAddress(_fromAddress, _fromName);
foreach (String to in _to) {
msg.To.Add(new MailAddress(to));
}
foreach (String cc in _cc) {
msg.CC.Add(new MailAddress(cc));
}
msg.Subject = _subject;
msg.Body = _body;
msg.IsBodyHtml = true;
mail.Send(msg);
emailSent = true;
}
return emailSent;
}
请注意_fromAddress,_ fromName等只是EmailHelper类的私有属性。私有属性_to和_cc都只是string类型的列表。
答案 3 :(得分:0)
我发现它在asp.net中最简单的方式,并且它在很多地方工作。我是System.Net.Mail库发送电子邮件。
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
MailMessage msg = new MailMessage();
msg.From = new MailAddress("fromEmailAddress@domain.com");
msg.To.Add("toEmailAddress@domain.com);
msg.IsBodyHtml = true;
msg.Subject = "Example Email";
msg.Priority = MailPriority.High;
msg.Body = "Hello world...";
smtp.Host = "smtp.domainName";
smtp.EnableSsl = true;
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = "fromEmailAddress@domain.com";
NetworkCred.Password = "password";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
try
{
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
smtp.Send(msg);
}
catch (Exception ex)
{}
我希望这段代码适合你...
祝你好运并快乐编码:)