cnqylong 2016-04-09 13:08 采纳率: 0%
浏览 2034
已结题

Jmail4.4实现邮件接受,发现“邮件附件较大时(如40兆),接收邮件非常慢,求解决方法

    public static jmail.POP3Class popMail;      //实例化POP3类对象
    public static jmail.Message mailMessage;    //实例化邮件对象
    public static jmail.Attachments atts;       //实例化邮件的附件集合
    public static jmail.Attachment att;         //实例化附件对象
    public static string strserver;             //存储邮件服务器
    public static string user;                  //存储用户登录邮箱的用户名
    public static string pwd;                   //存储用户登录邮箱的密码
            private void frmMain_Load(object sender, EventArgs e)
    {   
                    user = "。。。。。@139.com";
        pwd = "。。。。。";
        strserver = "pop.139.com";
        popMail = new jmail.POP3Class();
                                    if (popMail.Count != 0)
            {
                dgvEmailInfo.RowCount = popMail.Count;
                if (popMail != null)
                {
                    if (popMail.Count > 0)//当邮箱中存在邮件的情况下运行代码
                    {
                        for (int i = 1; i < popMail.Count; i++)
                        {


                            mailMessage = popMail.Messages[i];//**遇到大邮件时主要是这个过程耗时**间

                            //mailMessage.Charset = "GB2312";
                            if (mailMessage.From == user.Trim().ToLower())
                            {
                                dgvEmailInfo.Rows[i - 1].Cells[0].Value = "我";
                            }
                            else
                            {
                                dgvEmailInfo.Rows[i - 1].Cells[0].Value = mailMessage.From;
                            }
                            dgvEmailInfo.Rows[i - 1].Cells[1].Value = Base64Decode(mailMessage.Subject);
                            dgvEmailInfo.Rows[i - 1].Cells[2].Value = Base64Decode(mailMessage.Body);
                            dgvEmailInfo.Rows[i - 1].Cells[4].Value = mailMessage.Date.ToString();
                            if (popMail.Count >= 1 && i <= popMail.Count)
                            {
                                atts = mailMessage.Attachments;
                                if (atts.Count > 0)
                                {
                                    dgvEmailInfo.Rows[i - 1].Cells[3].Value = "附件下载";
                                }
                                else
                                {
                                    dgvEmailInfo.Rows[i - 1].Cells[3].Value = "无附件";
                                }
                            }
                        }
                    }
                }
            }
                             else
            {
                dgvEmailInfo.Rows.Clear();
            }
  • 写回答

1条回答

  • threenewbee 2016-04-09 22:03
    关注

    这个传输的开销是必须的,或者你可以在服务器上解析邮件,只返回所需的数据。

    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)