我有一个 ERP 应用程序的要求,(应用程序是在 asp.net4.0 中使用 c# 和 sql server 2005 开发的)
每当我们收到来自客户的订单时,我们都会使用唯一的序列号注册订单(序列号是自动生成的主键)现在我们要发送一个通知,基本上是一封电子邮件,说明您的订单已使用序列号注册:XXXXXX。
我能知道什么是最好的解决方案吗????
我必须通过数据库还是通过应用程序发送电子邮件。
请帮我 !!!
我有一个 ERP 应用程序的要求,(应用程序是在 asp.net4.0 中使用 c# 和 sql server 2005 开发的)
每当我们收到来自客户的订单时,我们都会使用唯一的序列号注册订单(序列号是自动生成的主键)现在我们要发送一个通知,基本上是一封电子邮件,说明您的订单已使用序列号注册:XXXXXX。
我能知道什么是最好的解决方案吗????
我必须通过数据库还是通过应用程序发送电子邮件。
请帮我 !!!
您应该使用sp_send_db_mail
并且绝对不要尝试在 C# 应用程序中实例化一种或另一种“SMTP”类。原因是多方面的,但主要是:
sp_send_db_mail
必须放在注册序列号的同一个数据库事务中。如果注册回滚,则永远不会发送邮件。sp_send_db_mail
确保了这一点,并且还提供跟踪和日志记录以用于故障排除(哪些电子邮件无法传递以及原因)。sp_send_db_mail
这也确保了这一点,实际的邮件传递发生在您的事务完成之后,并且不以任何方式涉及 C# 客户端。ScottGu 对此有一篇很棒的文章。它有点旧,但他是这样说的:
.NET 2.0 在 System.Net.Mail 代码命名空间中包含更丰富的电子邮件 API 支持。我看到人们提出了一些关于如何开始使用它的问题。以下是如何将电子邮件从“sender@foo.bar.com”发送给多个电子邮件收件人的简单片段(请注意,To a CC 属性是集合,因此可以处理多个地址目标):
MailMessage message = new MailMessage(); message.From = new MailAddress("sender@foo.bar.com"); message.To.Add(new MailAddress("recipient1@foo.bar.com")); message.To.Add(new MailAddress("recipient2@foo.bar.com")); message.To.Add(new MailAddress("recipient3@foo.bar.com")); message.CC.Add(new MailAddress("carboncopy@foo.bar.com")); message.Subject = "This is my subject"; message.Body = "This is the content"; SmtpClient client = new SmtpClient(); client.Send(message);
System.Net.Mail 从标准的 .NET 配置系统中读取 SMTP 配置数据(因此对于 ASP.NET 应用程序,您可以在应用程序的 web.config 文件中进行配置)。以下是如何配置它的示例:
<system.net> <mailSettings> <smtp from="test@foo.com"> <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" /> </smtp> </mailSettings> </system.net>
如果您想以最少的努力发送电子邮件通知,请使用数据库邮件(配置它!)和 sp_send_mail。您将能够发送带有可能查询结果的简单短信作为附件。
如果您需要带有公司徽标图像的丰富 HTML,请构建 .NET Windows 服务(或 ConsoleApp 并安排它)。我建议您使用 Actionmailer.NET Standalone 来使用 MVC 逻辑、模板和 Razor 引擎构建 HTML 消息。使用 Actionmailer.NET Standalone,您可以在不使用 IIS 的情况下拥有它。见: http: //geeksharp.com/2011/07/06/actionmailer-0-6-released/
你绝对可以同时做(只要 SQL 是 2005+)
看到这个讨论:
从您的应用程序中发送邮件非常简单:
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.To.Add("luckyperson@online.microsoft.com");
message.Subject = "This is the Subject line";
message.From = new System.Net.Mail.MailAddress("From@online.microsoft.com");
message.Body = "This is the message body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("yoursmtphost");
smtp.Send(message);
您绝对可以使用 C# 发送电子邮件。这是关于如何做到这一点的非常全面的文章:
http://www.emailarchitect.net/easeendmail/kb/csharp.aspx
基本上,我所做的是创建一个包装器函数,它使使用为我的环境设计的自定义设置发送电子邮件变得非常简单。例如,您可以创建一个接受新序列号的方法,并根据该序列号查找所有信息。然后,您可以只传递新值并将自动格式化的电子邮件发送给客户。