- 浏览: 78686 次
文章分类
- 全部博客 (48)
- AOP (0)
- ASP.NET (1)
- C# (0)
- Community Server (0)
- Database (0)
- Design Pattern (3)
- JAVA (1)
- JavaScript (1)
- Linux (1)
- O/R Mapping (0)
- OO (3)
- SQL Server (1)
- VB.NET (0)
- Visual Studio 2005 (2)
- Windows (2)
- WPF (0)
- XML/XSLT (0)
- 常用工具类 (0)
- 人生感悟 (0)
- 算法 (0)
- 转载 (5)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (3)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (15)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (2)
- [网站分类]4.其他技术区 (4)
- [网站分类]5.企业信息化 (0)
- [网站分类]6.读书心得区(技术书籍阅读心得、书籍推荐) (0)
- [网站分类]7.提问区(.NET技术方面的提问) (0)
- [网站分类]8.技术转载区(.NET技术文章转载, 请注明原文出处) (1)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [网站分类]Dottext区 (0)
- [网站分类]GIS技术 (0)
- [网站分类]IT英才专区(IT职场交流) (0)
- [网站分类]SharePoint (0)
- [网站分类]博客园.NET俱乐部(俱乐部组织与活动方面的文章) (0)
- [网站分类]软件发布区(发布自己开发的代码、软件) (0)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (0)
- [网站分类]业界新闻 (0)
最新评论
-
xjw1987524:
这个问题我是弄啦很久,我也试过反编译,不知道为什么就是不成功; ...
支持中文参数的 jspSmartUpload
.NET 1.1 下不使用 System.Web.Mail.SmtpMail 发送邮件的其它选择
最近工作原因需要维护 ASP.NET 1.1 的程序,本来用着 C# 2.0 System.Net.Mail namespace 发送邮件用得好好得,但 ASP.NET 1.1 里面的 System.Web.Mail 死活问题就是多,于是选择其它策略,封装了邮件发送的接口,再以其它方式来实现邮件发送,于是就有了下面这些文字。
定义抽象接口以封装所有实现:
using System;
using System.Web.Mail;
namespace YywMail
{
public abstract class MySmtpMail
{
Fields#region Fields
private string _defaultCharset = "GB2312";
private int _defaultSmtpPort = 25;
#endregion
Properties#region Properties
protected string DefaultCharset
{
get { return this._defaultCharset; }
}
protected int DefaultSmtpPort
{
get { return this._defaultSmtpPort;}
}
#endregion
Methods#region Methods
/**//// <summary>
/// 获取默认实例
/// </summary>
/// <returns></returns>
public static MySmtpMail GetDefaultInstance()
{
// 此处可通过外部配置文件定义具体实现类型,再
// 通过 Activator.CreateInstance() 获取类型实例
}
/**//// <summary>
/// 做一些初始化的工作
/// </summary>
public abstract void Open();
/**//// <summary>
/// 销毁对象
/// </summary>
public abstract void Close();
/**//// <summary>
/// 发送邮件
/// </summary>
/// <param name="message"></param>
/// <param name="smtpServer"></param>
/// <param name="serverUsername"></param>
/// <param name="serverPassword"></param>
/// <returns></returns>
public bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword)
{
return Send(message, smtpServer, serverUsername, serverPassword, this._defaultSmtpPort);
}
public abstract bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword, int smtpPort);
public static string[] GetTo(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.To))
return null;
return message.To.Split(';');
}
public static string[] GetCc(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.Cc))
return null;
return message.Cc.Split(';');
}
public static string[] GetBcc(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.Bcc))
return null;
return message.Bcc.Split(';');
}
#endregion
}
}
using System.Web.Mail;
namespace YywMail
{
public abstract class MySmtpMail
{
Fields#region Fields
private string _defaultCharset = "GB2312";
private int _defaultSmtpPort = 25;
#endregion
Properties#region Properties
protected string DefaultCharset
{
get { return this._defaultCharset; }
}
protected int DefaultSmtpPort
{
get { return this._defaultSmtpPort;}
}
#endregion
Methods#region Methods
/**//// <summary>
/// 获取默认实例
/// </summary>
/// <returns></returns>
public static MySmtpMail GetDefaultInstance()
{
// 此处可通过外部配置文件定义具体实现类型,再
// 通过 Activator.CreateInstance() 获取类型实例
}
/**//// <summary>
/// 做一些初始化的工作
/// </summary>
public abstract void Open();
/**//// <summary>
/// 销毁对象
/// </summary>
public abstract void Close();
/**//// <summary>
/// 发送邮件
/// </summary>
/// <param name="message"></param>
/// <param name="smtpServer"></param>
/// <param name="serverUsername"></param>
/// <param name="serverPassword"></param>
/// <returns></returns>
public bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword)
{
return Send(message, smtpServer, serverUsername, serverPassword, this._defaultSmtpPort);
}
public abstract bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword, int smtpPort);
public static string[] GetTo(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.To))
return null;
return message.To.Split(';');
}
public static string[] GetCc(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.Cc))
return null;
return message.Cc.Split(';');
}
public static string[] GetBcc(MailMessage message)
{
if (message == null)
throw new ArgumentNullException("message");
if (Globals.IsNullorEmpty(message.Bcc))
return null;
return message.Bcc.Split(';');
}
#endregion
}
}
注: 按照常理,使用前先 Open() 一下,使用后也别忘了 Close()
实现方案一(Jmail 组件):
在 .NET 中使用 Jmail 需要如下设置:
1、安装jmail;
2、找到jmail.dll;
3、注册该组件Jmail.dll,作法是将jmail.dll文件拷贝到system32目录下,再运行命令“regsvr32 jmail.dll”(不包括引号),卸载可运行“regsvr32 /u jmail.dll”;
4、执行Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin\ildasm.exe(可使用Visual Studio .Net 2003 命令提示),
格式如下:tlbimp c:\Program Files\Dimac\w3JMail4\jmail.dll /out:MyJmail.dll /namespace:MyJmail
生成MyJmail.dll后,将它引用至项目中。
下载组件
接下来就是实现类的编写了:
using System;
using System.Web.Mail;
namespace YywMail
{
public class JMailSmtpMail : MySmtpMail
{
Fields#region Fields
MyJmail.Message jmail = null;
#endregion
Methods#region Methods
public override void Open()
{
jmail = new MyJmail.Message();
}
public override bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword, int smtpPort)
{
if (jmail == null)
throw new Exception("smtp is Closed!");
if (message == null)
throw new ArgumentNullException("message");
DateTime t = DateTime.Now;
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
jmail.Silent = false;
//jmail创建的日志,前提loging属性设置为true
jmail.Logging = true;
//字符集,缺省为"US-ASCII"
jmail.Charset = base.DefaultCharset;
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
if (message.BodyFormat == MailFormat.Html)
jmail.ContentType = "text/html";
jmail.Priority = GetJmailPriority(message.Priority);
//添加收件人
string[] toArray = MySmtpMail.GetTo(message);
if (toArray != null && toArray.Length > 0)
using System.Web.Mail;
namespace YywMail
{
public class JMailSmtpMail : MySmtpMail
{
Fields#region Fields
MyJmail.Message jmail = null;
#endregion
Methods#region Methods
public override void Open()
{
jmail = new MyJmail.Message();
}
public override bool Send(MailMessage message, string smtpServer, string serverUsername, string serverPassword, int smtpPort)
{
if (jmail == null)
throw new Exception("smtp is Closed!");
if (message == null)
throw new ArgumentNullException("message");
DateTime t = DateTime.Now;
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
jmail.Silent = false;
//jmail创建的日志,前提loging属性设置为true
jmail.Logging = true;
//字符集,缺省为"US-ASCII"
jmail.Charset = base.DefaultCharset;
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
if (message.BodyFormat == MailFormat.Html)
jmail.ContentType = "text/html";
jmail.Priority = GetJmailPriority(message.Priority);
//添加收件人
string[] toArray = MySmtpMail.GetTo(message);
if (toArray != null && toArray.Length > 0)
发表评论
-
获取某目录下的所有文件(包括子目录下文件)的数量(C#)
2005-11-04 17:27 3992以前写过一个通过计算目录遍历所有文件和子目录的方法来获得某目录 ... -
Visual Studio 2005 试用笔记
2005-11-06 21:36 936今天开始用上了 VS 2005 ... -
C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 笔记
2005-11-09 22:52 1314(很喜欢李建忠老师的这个讲座,可惜暂时没更多的了,继续关注 M ... -
利用视图管理器高效编写 SQL SELECT 语句
2006-02-19 13:27 955献给初学者,老鸟别扔砖头 编写 ... -
将Web站点下的绝对路径转换为虚拟路径
2006-05-07 12:48 1209很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法 ... -
比较高效地实现从两个不同数组中提取相同部分组成新的数组(只支持Int类型) [C#]
2006-05-13 22:17 4043有时候我们需要从两个不同数组中提取出相同的部分 ... -
基于 .NET 2.0 System.Net.Mail namespace 的邮件发送组件
2006-05-17 13:11 1886一个基于 .NET 2.0 System.Net.Mail n ... -
从 CCS 1.1 升级到 CS 2.0 所遇到的问题和部分解决方法
2006-06-16 12:58 826整理了一下,记录在这 ... -
.NET Enum The Next Level
2006-08-20 17:15 1169声明:本文内容出自:http://www.codeprojec ... -
C# 中实现随机时间的获取
2006-09-07 17:31 1368原理其实非常简单,取出两个时间差的秒数,再在0到该秒数 ... -
NHibernate 实体类中重写 Equals() 和 GetHashCode()
2006-09-17 17:08 1548在正常的对象操作中,当两个对象都是通过 new ... -
初识 db4o
2006-10-25 21:41 942今天早上收到 IBM developerWork ... -
Spring.Net AOP 学习之旅: 使用 Throws Advice 处理异常
2006-10-30 21:12 4339写在前头:本文示例和部分文字来自《Sprin ... -
.NET 中的 委托与事件
2006-12-27 10:10 1932一、什么是委托 ...
相关推荐
虽然自.NET Framework 4.5起,`System.Web.Mail`已被标记为过时,并推荐使用`System.Net.Mail`命名空间中的`SmtpClient`类来替代,但在早期版本的.NET框架中,`System.Web.Mail`仍然是一个常用的选择。 ### 使用`...
这种方法适用于早期版本的.NET框架,在现代.NET开发中可能已经不被推荐使用,因为.NET Core及.NET 5及以后版本中已经不再支持`System.Web.Mail`,取而代之的是更灵活且跨平台的邮件发送库如`MailKit`。不过,对于...
总的来说,虽然`System.Web.Mail`在某些场景下仍然有用,但其局限性(如不支持SSL/TLS,不提供内置的邮件接收功能等)意味着开发者应该考虑迁移到更现代的解决方案。不过,理解这一老式API的工作原理对于维护旧代码...
简单的邮件发送类,利用System.Web.Mail.MailMessage
本实例将介绍如何使用C#的System.Web.Mail命名空间来实现邮件的发送功能。这个简单实例包含了源代码,方便开发者直接参考和学习。 首先,我们需要引入System.Web.Mail命名空间,它提供了发送邮件所需的类和方法。这...
本篇文章将详细探讨如何通过`System.Web.Mail`和`System.Net.Mail`命名空间下的类库来实现邮件的自动发送。 #### 二、`System.Web.Mail` 发送邮件 `System.Web.Mail`是早期版本ASP.NET中的邮件处理类库,它提供了...
在本篇文章中,我们将探讨如何使用.NET框架中的`System.Web.Mail`类库来发送电子邮件。这些技巧适用于.NET 1.1版本,而在.NET 2.0及更高版本中,推荐使用`System.Net.Mail`命名空间下的类库。下面将详细介绍如何构建...
在C#编程语言中,利用其...总之,虽然`System.Web.Mail`为C#中的邮件发送提供了一种简便的方式,但在实际开发中,考虑到其过时性和局限性,开发者应评估是否采用`System.Net.Mail`或其他第三方库作为更稳健的解决方案。
在.NET框架中,`System.Web.Mail`命名空间提供了一组类和方法,用于发送电子邮件。这个命名空间主要是为ASP.NET应用程序设计的,但它也可以在非Web应用程序中使用。本篇文章将详细探讨如何利用C#语言和`System.Web....
使用.NET Framework的`System.Web.Mail`发送邮件的基本步骤如下: 1. 初始化`SmtpMail`对象,设置SMTP服务器地址。 2. 创建`MailMessage`对象,设置邮件的各个属性,如发件人、收件人、主题和正文。 3. 如有需要,...
此外,代码中还展示了另一种发送邮件的方式,这种方式使用的是`System.Web.Mail`命名空间下的类和方法。 ```csharp // 使用System.Web.Mail发送邮件 System.Web.Mail.MailMessage mail = new System.Web.Mail....
1. **邮件发送原理**:在ASP.NET中,邮件发送主要依赖于`System.Web.Mail`命名空间下的类,其中`MailMessage`用于构建邮件内容,而`SmtpMail`则负责实际的邮件发送过程。 2. **邮件服务器配置**:邮件发送时需要指定...
在.NET Framework 2.0 及更高版本中,推荐使用`System.Net.Mail`命名空间下的类来进行邮件发送。这提供了更强大的功能,包括对SSL的支持和更安全的身份验证机制。以下是一个示例代码: ```csharp using System; ...
下面是一段基于.NET框架中的`System.Web.Mail`命名空间实现的邮件发送代码示例: ```csharp using System.Web.Mail; public bool SendEmail(string title, string content, string toEmail) { try { string ...
在.NET Framework 1.1中,使用的是`System.Web.Mail`命名空间来处理邮件发送。这个命名空间包含了`MailMessage`、`SmtpMail`等类,允许开发者构建和发送邮件。然而,随着.NET Framework的更新,.NET 2.0引入了`...
由于System.Web.Mail不支持SMTP身份验证,所以推荐使用System.Net.Mail命名空间中的SmtpClient类来替代。 6. **使用System.Net.Mail发送邮件**:对于需要身份验证的情况,可以使用System.Net.Mail,如下所示: ```...
在ASP.NET 2.0中,邮件发送主要通过System.Web.Mail命名空间的SmtpMail类来实现。以下是一些关键知识点: 1. **System.Web.Mail命名空间**:这是ASP.NET 2.0中用于处理电子邮件功能的命名空间,包含了SmtpMail、...
首先,ASP.NET提供了System.Web.Mail命名空间,其中包含用于发送邮件的类,如MailMessage和SmtpMail。然而,自ASP.NET 4.0开始,推荐使用System.Net.Mail命名空间,因为它提供更好的性能和更多的功能。C#作为.NET ...
在ASP.NET中发送邮件主要依赖于`System.Web.Mail`命名空间下的类和方法。主要包括以下几个关键组件: - `MailMessage`: 提供属性和方法来构建电子邮件消息。 - `MailAttachment`: 提供属性和方法来构建电子邮件附件...