可以完美发送邮件的 

解决方案 »

  1.   

    /// <summary>
        /// 发送电子邮件类
        /// </summary>
        public class Mail
        {
            /// <summary>
            /// 发送电子邮件函数
            /// </summary>
            /// <param name="txtHost">电子邮件服务主机名称</param>
            /// <param name="txtFrom">发送人地志</param>
            /// <param name="txtPass">发信人密码</param>
            /// <param name="txtTo">收信人地址</param>
            /// <param name="txtSubject">邮件标题</param>
            /// <param name="txtBody">邮件内容</param>
            /// <param name="isBodyHtml">是否采用HTML编码</param>
            /// <param name="priority">电子邮件的优先级别</param>
            /// <param name="encoding">内容采用的编码方式</param>
            /// <param name="files">附件</param>
            /// <returns>操作结果</returns>
            public static string SendMail(string txtHost, string txtFrom, string txtPass, string txtTo, string txtSubject, string txtBody, bool isBodyHtml, MailPriority priority, System.Text.Encoding encoding, string[] files)
            {
                //电子邮件附件
                Attachment data = null;
                //传送的电子邮件类
                MailMessage message = new MailMessage(txtFrom, txtTo);
                //设置标题
                message.Subject = txtSubject;
                //设置内容
                message.Body = txtBody;
                //是否采用HTML编码
                message.IsBodyHtml = isBodyHtml;
                //电子邮件的优先级别
                message.Priority = priority;
                //内容采用的编码方式
                message.BodyEncoding = encoding;
                try
                {
                    //添加附件
                    //if (files.Length > 0 && files != null)
                    //{
                    //    for (int i = 0; i < files.Length; i++)
                    //    {
                    //        //实例话电子邮件附件,并设置类型
                    //        data = new Attachment(files[i], System.Net.Mime.MediaTypeNames.Application.Octet);
                    //        //实例邮件内容
                    //        System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;
                    //        //取得建档日期
                    //        disposition.CreationDate = System.IO.File.GetCreationTime(files[i]);
                    //        //取得附件修改日期
                    //        disposition.ModificationDate = System.IO.File.GetLastWriteTime(files[i]);
                    //        //取得读取日期
                    //        disposition.ReadDate = System.IO.File.GetLastAccessTime(files[i]);
                    //        //设定文件名称
                    //        System.IO.FileInfo fi = new System.IO.FileInfo(files[i]);
                    //        disposition.FileName = fi.Name.ToString();
                    //        //添加附件
                    //        message.Attachments.Add(data);
                    //    }
                    //}
                    //实例从送电子邮件类
                    SmtpClient client = new SmtpClient();
                    //设置电子邮件主机名称
                    client.Host = txtHost;
                    //取得寄信人认证
                    client.Credentials = new NetworkCredential(txtFrom, txtPass);
                    //发送电子邮件
                    client.Send(message);
                    return "邮件发送成功";
                }
                catch (Exception Err)
                {
                    //返回错误信息
                    return Err.Message;
                }
                finally
                {
                    //销毁电子邮件附件
                    if (data != null)
                    {
                        data.Dispose();
                    }
                    //销毁传送的电子邮件实例
                    message.Dispose();
                }
            }
        }
      

  2.   

    public void ReceiveMails(string Username) 
    ...{ 
    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();