Asp.net web应用的电子邮件解决方案
我在ASP.NET中开发了一个web应用程序。我想在我的应用程序中集成电子邮件解决方案 以下是我的核心要求: 1.用户在网站注册后立即发送电子邮件。 2.向所有注册用户发送通知电子邮件 对于第二个要求,我们可以把它看作是批量邮件,因为我们向所有用户发送邮件。Asp.net web应用的电子邮件解决方案,asp.net,email,integration,Asp.net,Email,Integration,我在ASP.NET中开发了一个web应用程序。我想在我的应用程序中集成电子邮件解决方案 以下是我的核心要求: 1.用户在网站注册后立即发送电子邮件。 2.向所有注册用户发送通知电子邮件 对于第二个要求,我们可以把它看作是批量邮件,因为我们向所有用户发送邮件。 请给我最好的解决办法。是否需要设置SMTP服务器?通常不需要。请确保web服务器在系统上安装了SMTP服务,并且您可以使用类。这将满足您发送电子邮件的所有基本需求 如果您开始遇到大量注册用户的问题,或者批量邮件中的密件抄送地址过多的问题,那
请给我最好的解决办法。是否需要设置SMTP服务器?通常不需要。请确保web服务器在系统上安装了SMTP服务,并且您可以使用类。这将满足您发送电子邮件的所有基本需求
如果您开始遇到大量注册用户的问题,或者批量邮件中的密件抄送地址过多的问题,那么您将需要查看基本邮件管理器(可以突发发送批量邮件的功能)或者是一个完整的电子邮件服务器。通常不会。请确保web服务器在系统上安装了SMTP服务,并且您可以使用类。这将满足您发送电子邮件的所有基本需求
如果您开始遇到大量注册用户的问题,或者批量邮件中的密件抄送地址过多的问题,那么您将需要寻找一个基本的邮件管理器(可以突发发送批量邮件的东西)或一个完善的电子邮件服务器。是的,您需要一个SMTP服务器,尽管它不必与Web服务器安装在同一台机器上(甚至可以由第三方服务提供) 就个人而言,我建议您创建一个电子邮件队列系统-而不是直接使用system.NET命名空间的ASP.NET脚本来创建和发送使用特定SMTP服务器的电子邮件,您有一个数据库表(即Subject、Body和to address) 然后,一个单独的作业从该表中读取并发送电子邮件。单独表格/作业的原因如下:
- 它避免了SMTP操作 在HTTP事务内部发生- 如果SMTP服务器过载或 更糟糕的是,不可用,您的网页将 好像挂了
- 如果SMTP服务器是临时的 不可用或过载,您必须 将重试列添加到 你的桌子
- 如果您对SMTP服务器的限制 可以发送的电子邮件数 一段时间(防止垃圾邮件)你 只能将作业配置为 尝试在上发送前x封电子邮件 每次互动
- 如果你想发送延迟的电子邮件, 这只是一个简单的问题,添加一个 “SendAfter”列
- 它避免了SMTP操作 在HTTP事务内部发生- 如果SMTP服务器过载或 更糟糕的是,不可用,您的网页将 好像挂了
- 如果SMTP服务器是临时的 不可用或过载,您必须 将重试列添加到 你的桌子
- 如果您对SMTP服务器的限制 可以发送的电子邮件数 一段时间(防止垃圾邮件)你 只能将作业配置为 尝试在上发送前x封电子邮件 每次互动
- 如果你想发送延迟的电子邮件, 这只是一个简单的问题,添加一个 “SendAfter”列
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都只是字符串类型的列表。我发现在helper类中包装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都只是字符串类型的列表。我发现它是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)
{}
我希望这个代码对你有用
祝你好运,祝你编码愉快:)我在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)
{}
我希望这个代码对你有用
祝您好运,编码愉快:)