用jmail收邮件:

用jmail收邮件:

jmail.Message Msg=new jmail.Message();
            jmail.POP3 jpop = new jmail.POP3();
            jmail.Attachments atts;
            jmail.Attachment att;
            
            //username为用户名,该方法通过用户名获取该用户的pop设置,即用户的POP用户名,密码,POP服务器地址以及端口号这四个参数,这四个参数是连接POP服务器的必用参数.
                SqlDataReader dataReader = this.ExtGetSetting(Username);
                if(dataReader.Read())
                {
                    if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="")
                    {
                        //连接POP服务器
                        jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString()));
                        //如果服务器上有邮件
                        if(jpop.Count> =1)
                        {
                         for(int i=1;i <=jpop.Count;i++)
                            {
                            
                                Msg = jpop.Messages[i];
                                atts=Msg.Attachments;

                             //取数据库中邮件信息中的最大发送时间,即最近接收到的一封邮件的时间
                                Database dbase=new Database();
                                DataTable data=dbase.GetDataTable("select max(MailSendDate) as MailSenderDate from TabMailList where MailTypeFlag='1'");
                                
                             //对服务器上的邮件的发送时间和数据库最近一封邮件的时间进行比较,如果大那么证明该邮件还未被收取,是一封新邮件,这样避免重复收取邮件入库
                                if(Msg.Date> Convert.ToDateTime(data.Rows[0][0].ToString()))

                                {
                                    //将这封新邮件的信息保存到数据库
                                    this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i));
                            
                                    //获取附件上传到服务器并且将信息存入数据库
                                    if(atts.Count> =1)
                                    {
                                        for(int k=0;k <atts.Count;k++)
                                        {

                                            att=atts[k];//获得附件

                                            string attname=att.Name;
                                            try
                                            {

                                                Random TempNameInt    = new Random(); 
                                                string NewMailDirName  = TempNameInt.Next(100000000).ToString();
                                                Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".")+"//AttachFiles//"+Username+"//"+NewMailDirName);
                
                                                string mailPath="//AttachFiles//"+Username+"//"+NewMailDirName+"//"+attname;
            
                                                att.SaveToFile(System.Web.HttpContext.Current.Server.MapPath(".")+mailPath); 
                                                
                                                //获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可 
                                                int mailID=this.GetMailID();
                                               //将附件信息存入数据库
                                                this.AttExtSend(mailID,attname,att.Size,mailPath,Msg.From);
                                            }
                                            catch(Exception ex)
                                            {
                                                throw new Exception(ex.Message);
                                            }
                                        
                                        }
                                    }                                        
                                }                            
                            }                        
                        }    

                        //删除服务器上的邮件
                        //jpop.DeleteMessages();
                        //断开连接    
                        jpop.Disconnect();
                    }
                
            }
        }

邮件信息入库:

         public string SaveExtMail(jmail.Message JMsg, string Username, string Email)
        {
            Database data = new Database();
            string MailID = null;

            
            SqlParameter[] prams = {
   data.MakeInParam("@MailFolderType",  SqlDbType.Int, 20, 1),//?
   data.MakeInParam("@MailReceiverStr",  SqlDbType.VarChar, 300, Username),//!
   data.MakeInParam("@MailSendDate",  SqlDbType.DateTime, 20, DateTime.Parse(JMsg.Date.ToString())),//发送时间
   data.MakeInParam("@MailSendLevel",  SqlDbType.SmallInt,20, 1),//!
   data.MakeInParam("@MailSender",  SqlDbType.NVarChar, 100, JMsg.From.ToString()),//发送者地址
   data.MakeInParam("@MailReceiver",  SqlDbType.NVarChar, 100, Username),//接受者
   data.MakeInParam("@MailSubject",  SqlDbType.NVarChar, 150,subject),//邮件主题
   data.MakeInParam("@MailBody",  SqlDbType.Text , 300000,  ( JMsg.BodyText==null?"": body )),//邮件内容
   data.MakeInParam("@MailCcToAddr",  SqlDbType.NVarChar, 300,""),//?
   data.MakeInParam("@MailBccToAddr",  SqlDbType.NVarChar, 300, ""),//?
   data.MakeInParam("@MailReadFlag",  SqlDbType.Bit, 1, 0),
   data.MakeInParam("@MailTypeFlag",  SqlDbType.Bit, 1,1),//?
   data.MakeInParam("@MailClassID",  SqlDbType.Int, 1, 0),
   data.MakeInParam("@MailImportance",  SqlDbType.Int, 1, Convert.ToInt32(JMsg.Priority)),//优先级
   data.MakeOutParam("@MailID", SqlDbType.Int,20) //?
   };

            try
            {
                data.RunProc("SP_MailSend", prams);
                MailID = prams[14].Value.ToString();
                if (MailID == string.Empty)
                    return null;
                else
                    return MailID;
            }
            catch (Exception ex)
            {

                Error.Log(ex.ToString());
              }


        }
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值