.NET 1.1 下不使用 System.Web.Mail.SmtpMail 发送邮件的其它选择

本文介绍了一种在ASP.NET1.1环境中封装邮件发送接口的方法,并提供了两种实现方案,分别是使用Jmail组件和OpenSmtp.Net组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近工作原因需要维护 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
        
        
Properties

        
Methods
    }

}


注: 按照常理,使用前先 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

        
Methods
    }

}


实现方案二(OpenSmtp.Net 组件):

对于还没有接触过 OpenSmtp.Net 的朋友可以先 Google 下,这里不再做概念介绍,同时它还有一个孪生兄弟 OpenPop.Net,至于 OpenSmtp.Net 我们可以在 http://sourceforge.net/projects/opensmtp-net/ 下载到,目前最新版本是 1.11。

接下来开始进入主题:

using  System;
using  System.Web.Mail;
using  OpenSmtp.Mail;

namespace  YywMail
{
    
public class OpenSmtpMail : MySmtpMail
    
{
        
#region Files

        OpenSmtp.Mail.MailMessage msg 
= null;
        Smtp smtp 
= null;

        
#endregion


        
#region Methods

        
public override void Open()
        
{
            msg 
= new OpenSmtp.Mail.MailMessage();
            smtp 
= new Smtp();
        }


        
public override bool Send(System.Web.Mail.MailMessage message, string smtpServer, string serverUsername, string serverPassword, int smtpPort)
        
{
            
if (msg == null || smtp == null)
                
throw new Exception("smtp is Closed!");

            
if (message == null)
                
throw new ArgumentNullException("message");

            SmtpConfig.VerifyAddresses 
= false;
            EmailAddress from 
= new EmailAddress(message.From, message.From);
            
            msg.Charset 
= base.DefaultCharset;

            msg.From 
= from;
            msg.Priority 
= GetOpenSmtpPriority(message.Priority);

            
//添加收件人
            string[] toArray = MySmtpMail.GetTo(message);
            
if (toArray != null)
            
{
                
foreach (string to in toArray)
                
{
                    
if (!Globals.IsNullorEmpty(to))
                        msg.AddRecipient(to, AddressType.To);
                }

            }


            
string[] ccArray = MySmtpMail.GetCc(message);
            
if (ccArray != null)
            
{
                
foreach (string cc in ccArray)
                
{
                    
if (!Globals.IsNullorEmpty(cc))
                        msg.AddRecipient(cc, AddressType.Cc);
                }

            }


            
string[] bccArray = MySmtpMail.GetBcc(message);
            
if (ccArray != null)
            
{
                
foreach (string bcc in bccArray)
                
{
                    
if (!Globals.IsNullorEmpty(bcc))
                        msg.AddRecipient(bcc, AddressType.Bcc);
                }

            }


            msg.Subject 
= message.Subject;

            
if (message.BodyFormat == System.Web.Mail.MailFormat.Html)
            
{
                msg.HtmlBody 
= message.Body + "<br><br>" + DateTime.Now.ToString();
            }

            
else
            
{
                msg.Body 
= message.Body + "/r/n/r/n" + DateTime.Now.ToString();;
            }


            
string str1 = msg.HtmlBody;
            
string str2 = msg.Body;
            
            smtp.Host 
= smtpServer;
            smtp.Username 
= serverUsername;
            smtp.Password 
= serverPassword;
            smtp.Port 
= smtpPort;

            smtp.SendMail(msg);

            
return true;
        }
    
    
        
public override void Close()
        
{
            msg 
= null;
            smtp 
= null;
        }


        
private static string GetOpenSmtpPriority( System.Web.Mail.MailPriority priority)
        
{
            
// 邮件等级,1为加急,3为普通,5为低级

            
if (priority == System.Web.Mail.MailPriority.High)
                
return OpenSmtp.Mail.MailPriority.High;

            
if (priority == System.Web.Mail.MailPriority.Low)
                
return OpenSmtp.Mail.MailPriority.Low;

            
return OpenSmtp.Mail.MailPriority.Normal;
        }


        
#endregion

    }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值