在新发行的ASP
NET
版本中
微软不再建议使用System
Web
Mail命名空间而代之以新的System
Net
Mail命名空间
在这个新库中引入了许多新特征
但是在发送邮件的方式方面也相应地带入了一些小错误
一 发送邮件
在详细讨论这些小错误之前让我们先看一段示例代码(我们假定你已经在文件开始添加了using SystemNetMail)
MailMessage msg = new MailMessage();
msgFrom = new MailAddress( Persons Name);
msgToAdd(new MailAddress(de Addressees Name);
msgToAdd(new MailAddress(des Addressee s Name);
msgSubject = Message Subject;
msgBody = Mail body content;
msgIsBodyHtml = true;
msgPriority = MailPriorityHigh;
SmtpClient c = new SmtpClient(m);
cSend(msg);
上面的代码与以前版本中的实现差不太多仅是在指定消息时作了一些小的改动不必自己来构建一个地址你完全可以让系统为你代劳如果你指定一个电子邮件地址和一个名字它将自动地在消息中显示如下内容
Persons Name <de>
这正是一个电子邮件地址的正确格式当然你可以进一步把多个地址添加到ToCC和BCC集合中其方式与上面完全相同通过这种编程方式来实现发送大量消息要比分别发送每个消息要容易得多了只需要把多个地址添加到BCC属性即可实现邮件的群发
二 存在的问题
现在我们来分析一下其中存在的小错误
如前面所提及这个新的命名空间中带有一些小错误第一个是当你发送一封电子邮件时邮件的头部信息全部是以小写字母形式添加的然而在针对SMTP邮件RFC的规范中并没有指定邮件头部应该怎样大写但是许多垃圾邮件过滤程序却限制了头部没有正确大写的电子邮件消息
另一个错误与优先权设置有关系通过优先权设置用户可以指定一个消息在邮件客户端的重要程度由于邮件头部的这种格式化方式(全部转化为小写)所以我的邮件程序(Eudora)无法识别相应的优先权标志因而也就不会专门标记出此邮件的重要程度尽管这看上去有些琐碎但是转换到新版本的SystemWebMail以后这看上去并没有明显理由
所以我还会继续探讨这个问题如果实在找不到一个好的补救办法那么我只要回到以前的SystemWebMail以更有效了解决上面的警告问题