⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailmsg.cs

📁 用VS2005开发的,办公简单系统,有管理特区,个人办公,信息共享,人力资源管理四功能模块.
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Net;
using System.Net.Sockets;
/// <summary>
/// 处理MAIL信息的类
/// </summary>
public class MailMsg
{
    //SQL语句设置为常量,方便日后的维护
    private const string SQL_PARM_HOST = "@host";
    private const string SQL_PARM_PORT = "@port";
    private const string SQL_PARM_MAIL = "@mail";
    private const string SQL_PARM_PASSWORD = "@pass";
    private const string SQL_PARM_USERNAME = "@username";
    private const string SQL_INSERT_SMTPSET = "INSERT INTO smtpset VALUES(@host,@port,@username,@mail,@pass)";
    private const string SQL_SELECT_SMTPSET = "SELECT * FROM smtpset WHERE username=@username";
	public MailMsg()
	{
	}
    /// <summary>
    /// 保存SMTP配置的方法
    /// </summary>
    /// <param name="host">邮件服务器</param>
    public void SaveSmtpSet(SmtpEntity smtp)
    {
        //初始化参数数组
        SqlParameter[] parms = new SqlParameter[] {
                new SqlParameter(SQL_PARM_HOST, SqlDbType.NVarChar,20),
                new SqlParameter(SQL_PARM_PORT, SqlDbType.Int),
                new SqlParameter(SQL_PARM_USERNAME, SqlDbType.NVarChar,20),
                new SqlParameter(SQL_PARM_MAIL, SqlDbType.NVarChar,50),
                new SqlParameter(SQL_PARM_PASSWORD, SqlDbType.NVarChar, 50)};
        SqlCommand cmd = new SqlCommand();

        // 依次给参数赋值
        parms[0].Value = smtp.Host;
        parms[1].Value = smtp.Port;
        parms[2].Value = smtp.UserName;
        parms[3].Value = smtp.Mail;
        parms[4].Value = smtp.Password;

        //将参数添加到SqlCommand命令中
        foreach (SqlParameter parm in parms)
            cmd.Parameters.Add(parm);

        //获取数据库的连接字符串
        using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
        {
            //打开数据库连接,执行命令
            conn.Open();
            //设置Sqlcommand命令的属性
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = SQL_INSERT_SMTPSET;
            //执行添加的SqlCommand命令
            int val = cmd.ExecuteNonQuery();
            //清空SqlCommand命令中的参数
            cmd.Parameters.Clear();
        }
    }
    /// <summary>
    /// 获取当前用户的SMTP设置
    /// </summary>
    /// <param name="name">用户名</param>
    /// <returns>返回设置实体</returns>
    public static SmtpEntity GetUserByName(string name)
    {
        //初始化返回的变量
        SmtpEntity mysmtp = null;
        //初始化参数并赋值
        SqlParameter parm = new SqlParameter(SQL_PARM_USERNAME, SqlDbType.NVarChar, 20);
        parm.Value = name;

        //执行DataReader命令,获取数据
        using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_SMTPSET, parm))
        {
            //通过循环依次获取
            while (rdr.Read())
            {
                //使用有参数的构造函数为信息实体赋值
                mysmtp = new SmtpEntity(rdr.GetString(1), rdr.GetInt32(2), rdr.GetString(3), rdr.GetString(4), rdr.GetString(5));
            }
        }
        //返回实体信息
        return mysmtp;
    }
    /// <summary>
    /// 读取邮件的设置
    /// </summary>
    /// <param name="pop">邮件服务器地址</param>
    /// <param name="username">用户名</param>
    /// <param name="pass">密码</param>
    /// <returns>新内容</returns>
    public string  ReadMail(string pop, string username, string pass)
    {
        //定义一个新的客户端连接,并连接到远程端口
        TcpClient tcp = new TcpClient(pop, 110);
        //返回此连接的网络数据流
        NetworkStream stream = tcp.GetStream();
        string response = GetResponse(tcp, stream);
        //创建新行
        string newline = Environment.NewLine;
        string strEnd = newline + "." + newline + "+OK " + newline;
        //向服务器发送命令
        SendCommand(tcp, stream, "user " + username);
        SendCommand(tcp, stream, "pass " + pass);
        response = SendCommand(tcp, stream, "stat");
        int iCount = Int32.Parse(response.Split(' ')[1]);
        //Response.Write(iCount + " Messages");
        for (int i = 1; i < 5; i++) response += SendCommand(tcp, stream, "top " + i + " 0");
        response += SendCommand(tcp, stream, "QUIT");
        // while (!response.EndsWith(strEnd)) response += GetResponse(tcp,stream);
        //关闭端口
        tcp.Close();
        return response;
    }
    //定义一个发送POP命令的方法
    private string SendCommand(TcpClient tcp,NetworkStream stream,string content)
    {
        //获取字节流
        byte[] data = Encoding.GetEncoding(936).GetBytes(content + Environment.NewLine);
        //写入到定义的网络数据流内
        stream.Write(data, 0, data.Length);
        //返回数据流
        return GetResponse(tcp,stream);
    }
    private string GetResponse(TcpClient tcp, NetworkStream stream)
    {
        //设置数据缓冲区
        byte[] data = new byte[tcp.ReceiveBufferSize];
        //从数据流的开始位置读取整个数据内容
        int myrec = stream.Read(data, 0, data.Length);
        return Encoding.GetEncoding(936).GetString(data, 0, myrec);
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -