当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 2.0发送电子邮件中存在的问题

ASP.NET
asp.net 动态生成表格
asp.net 程序优化精选
DataGridView自动调整行高和行宽
asp.net+js实现的ajax sugguest搜索提示效果
asp.net 将设有过期策略的项添加到缓存中
asp.net SqlDataAdapter对象使用札记
DataGrid 动态添加模板列 实现代码
asp.net 设置GridView的选中行
the sourcesafe database has been locked by the administrator之解决方法
asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)
Asp.Net HttpHandler 妙用
ASP.NET 保留文件夹详解
asp.net 中将表单提交到另一页 Code-Behind(代码和html在不同的页面)
SqlDataSource 链接Access 数据
asp.net GridView的删除对话框的两种方法
asp.net 按字节检查包含全半角的文字
asp.net String.IsNullOrEmpty 方法
asp.net System.Net.Mail 发送邮件
c# 读取文件内容存放到int数组 array.txt
asp.net Split分割字符串的方法

ASP.NET 2.0发送电子邮件中存在的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 175 ::
收藏到网摘: n/a

  在新发行的ASP.NET 2.0版本中,微软不再建议使用System.Web.Mail命名空间而代之以新的System.Net.Mail命名空间。在这个新库中引入了许多新特征,但是在发送邮件的方式方面也相应地带入了一些小错误。

  一、 发送邮件

  在详细讨论这些小错误之前,让我们先看一段示例代码(我们假定你已经在文件开始添加了"using System.Net.Mail"):

MailMessage msg = new MailMessage();
msg.From = new MailAddress("[email protected]", "Person's Name");
msg.To.Add(new MailAddress("[email protected]", "Addressee's Name");
msg.To.Add(new MailAddress("[email protected]", "Addressee 2's Name");
msg.Subject = "Message Subject";
msg.Body = "Mail body content";
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
SmtpClient c = new SmtpClient("mailserver.domain.com");
c.Send(msg);

  上面的代码与以前版本中的实现差不太多,仅是在指定消息时作了一些小的改动。不必自己来构建一个地址,你完全可以让系统为你代劳。如果你指定一个电子邮件地址和一个名字,它将自动地在消息中显示如下内容:

"Person's Name" <[email protected]>

  这正是一个电子邮件地址的"正确"格式。当然,你可以进一步把多个地址添加到To,CC和BCC集合中,其方式与上面完全相同。通过这种编程方式来实现发送大量消息要比分别发送每个消息要容易得多了-只需要把多个地址添加到BCC属性即可实现邮件的群发。

  二、 存在的问题

  现在,我们来分析一下其中存在的小错误。

  如前面所提及,这个新的命名空间中带有一些小错误。第一个是,当你发送一封电子邮件时,邮件的头部信息全部是以小写字母形式添加的。然而,在针对SMTP邮件RFC的规范中并没有指定邮件头部应该怎样大写;但是,许多垃圾邮件过滤程序却限制了头部没有正确大写的电子邮件消息。

  另一个错误与优先权设置有关系-通过优先权设置,用户可以指定一个消息在邮件客户端的重要程度。由于邮件头部的这种格式化方式(全部转化为小写),所以,我的邮件程序(Eudora)无法识别相应的优先权标志,因而也就不会专门标记出此邮件的重要程度。尽管这看上去有些琐碎,但是转换到新版本的System.Web.Mail以后这看上去并没有明显理由。

  所以,我还会继续探讨这个问题,如果实在找不到一个好的补救办法,那么我只要回到以前的System.Web.Mail以更有效了解决上面的警告问题。