• [导入]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@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    1分钟去除word文档编辑限制密码
    建行信用卡微信查询
    明目地黄丸
    发动机启停技术
    ORA-12170: TNS: 连接超时
    螃蟹放进冰箱冷冻保存前,要注意什么呢?
    螃 蟹要蒸多久
    总胆固醇偏高的注意措施及治疗方法
    codeforces 375D . Tree and Queries 启发式合并 || dfs序+莫队
    codeforces 374D. Inna and Sequence 线段树
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305640.html
Copyright © 2020-2023  润新知