[导入]JMail的COM和.net选择性使用。

.net盛行一时的时候,在asp.net里发送邮件也成了个不大也不小的问题。虽然.net里自己带了发邮件的组件,但使用它的人却不知道有多少。可能我对这些了解不是很深入,但在网络上搜索的时候,发现有很多人想到了把JMail的COM组件封装在.net的组件下,用它来发送邮件。前些时候我也这样做过了,效果还不错。这样一来,不管服务器是不是安装了JMail组件,只要服务器支持asp.net就可以用它来发送邮件了。

昨天在JMail的官方网站上看到了最新的JMail的.net版本,这个组件完全是用.net开发的,与.net可以是完全无缝的结合吧。于是决定在自己的项目里使用它了。然而它在每个邮件后添加了一个版本信息,让我很郁闷。至于是不是删除这个信息到不是本质问题,问题是我想两个组件都使用,或者在不同的条件下合理的使用它们,于是我改用接口来完成这项工作了。

using System;

namespace Webb.WAVE.Controls
{
    
/// <summary>
    
/// Summary description for Webb.
    
/// </summary>

    public interface IEMail:IDisposable
    
{
        
string ServerName{get;set;}
        
string ServerLoginName{get;set;}
        
string ServerLoginPassword{set;}
        
string Subject{set;get;}
        
string Body{set;get;}
        
string HTMLBody{set;get;}
        
string From{set;get;}        
        
//
        void AddToAddress(string i_address);
        
void AddCcAddress(string i_address);
        
void SendEMail();
    }

}

实现它的类可以写两个,这样一来就可以自己选择性的使用它们了:COM类

using System;
using Dimac.JMail;
using System.Data;
using Webb.JMail;

namespace Webb.WAVE.Controls
{
    
/// <summary>
    
/// Summary description for Webb.
    
/// </summary>

    public class JMailCOM :IEMail
    
{
        
Fields
         
        
public JMailCOM()
        
{
            m_message    
= new Webb.JMail.Message();
        }


        
public JMailCOM(bool i_systemServer)
        
{
            m_message    
= new Webb.JMail.Message();
            DataTable m_table        
= new DataTable();
            WaveSystem.LoadSystemData(m_table);
            
foreach(DataRow m_row in m_table.Rows)
            
{
                
if(m_row[1].ToString()=="SystemEmailServerPassword")
                
{
                    
this.m_password        = m_row[2].ToString();
                }

                
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
                
{
                    
this.m_loginName    = m_row[2].ToString();
                }

                
else if(m_row[1].ToString()=="SystemEmailServer")
                
{
                    
this.m_server        = m_row[2].ToString();
                }

            }

            m_table.Dispose();
        }




        
IEMail Members

        
IDisposable Members
    }

}

.net类

using System;
using Dimac.JMail;
using System.Data;

namespace Webb.WAVE.Controls
{
    
/// <summary>
    
/// 
    
/// </summary>

    public class JMailDotNet:IEMail
    
{
        
Fields

        
Properties

        
public JMailDotNet()
        
{
            m_message    
= new Message();
        }


        
public JMailDotNet(bool i_systemServer)
        
{
            m_message    
= new Message();
            DataTable m_table        
= new DataTable();
            WaveSystem.LoadSystemData(m_table);
            
foreach(DataRow m_row in m_table.Rows)
            
{
                
if(m_row[1].ToString()=="SystemEmailServerPassword")
                
{
                    
this.m_password        = m_row[2].ToString();
                }

                
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
                
{
                    
this.m_loginName    = m_row[2].ToString();
                }

                
else if(m_row[1].ToString()=="SystemEmailServer")
                
{
                    
this.m_server        = m_row[2].ToString();
                }

            }

            m_table.Dispose();
        }


        
IEMail Members

        
IDisposable Members
    }

}

好了,想用哪个发送邮件就用哪了。


文章来源:http://computer.mblogger.cn/wucountry/posts/49425.aspx
================================
  /\_/\                        
 (=^o^=)  Wu.Country@侠缘      
 (~)@(~)  一辈子,用心做一件事!
--------------------------------
  学而不思则罔,思而不学则怠!  
================================
原文地址:https://www.cnblogs.com/WuCountry/p/305640.html