利用Jmail发送接收邮件的方法

首先得下载JMAIL组件安装后 引用该JMAIL.DLL文件

相关代码如下:

附件接收还未完善

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using jmail;
using System.IO;
using TX.DataAccess;
/// <summary>
/// NetMail 的摘要说明
/// </summary>
public class Mail
{
    public Mail()
    {

    }
    private string _mailto;
    private string _mailfrom;
    private string _mailsubject;
    private string _mailbody;
    private string _attech;
    private string _password;
    //收件人地址
    public string Mailto
    {
        set { _mailto = value; }
        get { return _mailto; }
    }
    //主题
    public string MailSubject
    {
        set { _mailsubject = value; }
        get { return _mailsubject; }
    }
    //内容
    public string MailBody
    {
        set { _mailbody = value; }
        get { return _mailbody; }
    }
    //附件
    public string Attech
    {
        set { _attech = value; }
        get { return _attech; }
    }
    //发件人
    public string MailFrom
    {
        set { _mailfrom = value; }
        get { return _mailfrom; }
    }
    public string PassWord
    {
        set { _password = value; }
        get { return _password; }
    }
    public bool SendByJmail()//创建Mail,填入发送人,主题,內容
    {
        try
        {
            jmail.Message Jmail = new Message();
            DateTime t = DateTime.Now;
            String subject =_mailsubject ;
            String body =_mailbody ;
            string FromEmail =_mailfrom; //你的email
            String ToEmail =_mailto; //对方的email
            String AddAttachment =_attech;//this.FileUploadSubject.PostedFile.FileName;
            //Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
            Jmail.Silent = true;
            //Jmail创建的日志,前提loging属性设置为true
            Jmail.Logging = true;
            //字符集,缺省为"US-ASCII"
            Jmail.Charset = "GB2312";
            //信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
           // Jmail.ContentType = "text/html";
            ToEmail = ToEmail.Replace("/n", "").Replace(" ", "");
            string[] str = ToEmail.Split(',');

            Jmail.ISOEncodeHeaders = false;//解决中文乱码的问题
            for (int i = 0; i < str.Length; i++)
            {
                //添加收件人
                Jmail.AddRecipient(str[i], "", "");

                Jmail.From = FromEmail;
                //发件人邮件用户名
                Jmail.MailServerUserName = _mailfrom; //"gdhdavid2@163.com";
                //发件人邮件密码
                Jmail.MailServerPassWord = _password;//"123456";//FromEmail邮箱的登陆密码
                //设置邮件标题
                Jmail.Subject = subject;
                //AddAttachment
                if (_attech != "")
                {
                    //  邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment( "c://test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。
                    string[] toArray = _attech.Split(',');
                    foreach (string j in toArray)
                    {
                        if (j.ToString()!="")
                        {
                            Jmail.AddAttachment(j.ToString(), true, null);
                        }
                    }
                }

                //.AddAttachment("E://2.txt", true, null);
                //邮件内容
                Jmail.Body = body + t.ToString();
                //加密文件
                //Jmail.PGPEncrypt = true;
                //Jmail发送的方法
                Jmail.Send("smtp.163.com", false);
                Jmail.ClearAttachments();
                Jmail.ClearRecipients();
            }
            Jmail.Close();
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }


    }
   
    public string ReciveByJmail()
    {
        /**/
        ///建立收邮件对象
        jmail.POP3Class popMail = new jmail.POP3Class();

        /**/
        ///建立邮件信息接口
        jmail.Message mailMessage;

        /**/
        ///建立附件集接口
        jmail.Attachments atts;

        /**/
        ///建立附件接口
        jmail.Attachment att;

        try
        {
            popMail.Connect("gdhdavid2@163.com", "123456", "pop3.163.com", 110);

            /**/
            ///如果收到邮件
            if (0 < popMail.Count)
            {
                /**/
                ///根据取到的邮件数量依次取得每封邮件
                for (int i = 1; i <= popMail.Count; i++)
                {
                    /**/
                    ///取得一条邮件信息
                    mailMessage = popMail.Messages[i];

                    /**/
                    ///取得该邮件的附件集合
                    atts = mailMessage.Attachments;

                    /**/
                    ///设置邮件的编码方式                         
                    mailMessage.Charset = "GB2312";

                    /**/
                    ///设置邮件的附件编码方式                        
                    mailMessage.Encoding = "Base64";

                    /**/
                    ///是否将信头编码成iso-8859-1字符集                       
                    mailMessage.ISOEncodeHeaders = false;

                    /**/
                    ///邮件的优先级                    
                    string priority= mailMessage.Priority.ToString();

                    /**/
                    ///邮件的发送人的信箱地址                     
                    string SendMail = mailMessage.From;

                    /**/
                    ///邮件的发送人                    
                    string Sender= mailMessage.FromName;

                    /**/
                    ///邮件主题                  
                    string Subject= mailMessage.Subject;

                    /**/
                    ///邮件内容                  
                    string Body= mailMessage.Body;

                    DateTime datetime = mailMessage.Date;  
                    /**/
                    ///邮件大小                       
                    string Size= mailMessage.Size.ToString();
                    DABaseAccess DB = new DABaseAccess();
                    StringBuilder StrApp = new StringBuilder();
                    StrApp.Append("insert Mail(SendMail,Sender,Subject,Body,datetime,Size,priority)values(");
                    StrApp.Append("'" + SendMail + "',");
                    StrApp.Append("'" + Sender + "',");
                    StrApp.Append("'" + Subject + "',");
                    StrApp.Append("'" + Body + "',");
                    StrApp.Append("'" + datetime + "',");
                    StrApp.Append("'" + Size + "',");
                    StrApp.Append("'" + priority + "'");
                    StrApp.Append(")");
                    DB.GetNonQuery(StrApp.ToString()); 
                    /*
                    for (int j = 0; j < atts.Count; j++)
                    {
                        /
                        ///取得附件
                        att = atts[j];

                       
                        ///附件名称                             
                        string attname = att.Name;

                       
                        ///上传到服务器
                        att.SaveToFile("e://attFile//" + attname); //检查是否已经存在该文件
                    
                  

                    }
                  */
                   for (int j = 0; j < atts.Count; j++)
                   {
                        ///取得附件
                        //att = atts[j];
                        ///附件名称                             
                        //string attname = att.Name;
                        ///上传到服务器
                       // att.SaveToFile("e://attFile//" + attname); //检查是否已经存在该文件

                       att = atts[j];
                       string attname = att.Name;
                                    //Random TempNameInt = new Random();
                                    //string NewMailDirName = TempNameInt.Next(100000000).ToString();
                                    //生成随机文件后缀名
                                    string strSaveDir = "E://AttachFiles//";
                                    //取得文件名(抱括路径)里最后一个"."的索引
                                    int intExt = attname.LastIndexOf(".");
                                    //取得文件扩展名
                                    string strExt = attname.Substring(intExt);
                                    //取得文件名(不包括路径)
                                    Random objRand = new Random();
                                    System.DateTime date = DateTime.Now;
                                    //生成随机文件名
                                    string str = attname.Substring(1, attname.LastIndexOf(".") - 1);
                                    string saveName = System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + System.DateTime.Now.Millisecond.ToString() + Convert.ToString(objRand.Next(99) * 97 + 100);
                                    string strNewName = str + "(" + saveName + ")" + strExt;//取新名字,防止重复

                                    //Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".") + "//AttachFiles//" + strNewName);
                                    Directory.CreateDirectory("E://AttachFiles//" + strNewName);
                                    string mailPath = strSaveDir + strNewName;

                                    try
                                    {
                                        att.SaveToFile("E://AttachFiles//" + mailPath + "//" + att.Name);
                                    }
                                    catch (Exception  ex)
                                    {
                                        return ex.ToString();
                                    }
                                    //获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可
                                    //int mailID = this.GetMailID();
                                    /**/将附件信息存入数据库
                                    //this.AttExtSend(mailID, attname, att.Size, mailPath, Msg.From);


                    }

 
                }
                //panMailInfo.Visible = true;
                att = null;
                atts = null;
                return "下载成功";
            }
            else
            {
               //Response.Write("没有新邮件!");
                return "没有新邮件";
               
            }

            popMail.DeleteMessages();
            popMail.Disconnect();
            popMail = null;
        }
        catch
        {
            //Response.Write("Warning!请检查邮件服务器的设置是否正确!");
            return "Warning!请检查邮件服务器的设置是否正确!";
        }
    }

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值