Asp.Net 下载邮箱附件(随手笔记)

解决方案

这里示例下载QQ邮箱附件,其它邮箱附件下载步骤也是一样的

1.注册QQ邮箱,并开启pop3

在这里插入图片描述

2.下载并引用程序集DLL:OpenPop.dll

百度网盘路径:https://pan.baidu.com/s/1Ss9ryPzJxGKdVPavyj3Sjg 提取码:vfxp

3.创建EmailHelper对象

    public class EmailHelper
    {
        private string accout; //邮箱账户
        private string pass;//邮箱密码
        private string popServer; //pop服务地址
        private int popPort; //pop服务端口号(110)
        private bool isUseSSL;
        private string ServerDataDB;

        public EmailHelper(string _accout, string _pass, string _popServer, int _popPort, bool _isUseSSL,string _ServerDataDB)
        {
            this.accout = _accout;
            this.pass = _pass;
            this.popServer = _popServer;
            this.popPort = _popPort;
            this.isUseSSL = _isUseSSL;
            this.ServerDataDB = _ServerDataDB;
        }
    }

4.验证邮箱是否登录成功

        #region 验证邮箱是否登录成功
        public bool ValidateAccount(ref string error)
        {
            Pop3Client client = new Pop3Client();
            try
            {
                client.Connect(popServer, popPort, isUseSSL);
                client.Authenticate(accout, pass);
            }
            catch (InvalidLoginException ex)
            {
                error = "邮箱登录失败!";
                Log.CreateLogManager().Debug("0.1邮箱登录失败");
                return false;
            }
            catch (InvalidUseException ex)
            {
                error = "邮箱登录失败!";
                Log.CreateLogManager().Debug("0.2邮箱登录失败");
                return false;
            }
            catch (PopServerNotFoundException ex)
            {
                error = "服务器没有找到!";
                Log.CreateLogManager().Debug("0.3服务器没有找到");
                return false;
            }
            catch (PopServerException ex)
            {
                error = "请在邮箱开通POP3/SMTP!";
                Log.CreateLogManager().Debug("0.4请在邮箱开通POP3/SMTP!");
                return false;
            }
            catch (Exception ex)
            {
                error = "连接出现异常";
                Log.CreateLogManager().Debug("0.5连接出现异常");
                return false;
            }
            finally
            {
                client.Disconnect();
            }
            return true;
        }
        #endregion

获取邮件数量

        #region
        /// <summary>
        /// 获取邮件数量
        /// </summary>
        /// <returns></returns>
        public int GetEmailCount()
        {
            int messageCount = 0;
            using (Pop3Client client = new Pop3Client())
            {
                if (client.Connected)
                {
                    client.Disconnect();
                }
                client.Connect(popServer, popPort, isUseSSL);
                client.Authenticate(accout, pass, AuthenticationMethod.UsernameAndPassword);
                messageCount = client.GetMessageCount();
            }

            return messageCount;
        }
        #endregion

下载邮件附件

        #region 下载邮件附件
        /// <summary>
        /// 下载邮件附件
        /// </summary>
        /// <param name="path">下载路径</param>
        /// <param name="messageId">邮件编号</param>
        public void DownAttachmentsById(string path, int messageId)
        {
            using (Pop3Client client = new Pop3Client())
            {
                if (client.Connected)
                {
                    client.Disconnect();
                }
                client.Connect(popServer, popPort, isUseSSL);
                client.Authenticate(accout, pass);
                Message message = client.GetMessage(messageId);
                string senders = message.Headers.From.DisplayName;
                string from = message.Headers.From.Address;
                string subject = message.Headers.Subject;
                DateTime Datesent = message.Headers.DateSent;


                List<MessagePart> messageParts = message.FindAllAttachments();
                foreach (var item in messageParts)
                {
                    if (item.IsAttachment)
                    {
                        if (item.FileName.Contains(".xlsx") || item.FileName.Contains(".xlsx"))
                            File.WriteAllBytes(path + item.FileName, item.Body);
                    }
                }
            }
        }
        #endregion

验证outllok邮箱失败及处理

验证outlook邮箱失败是因为访问outook邮箱得走加密方式

  1. 登录outllok网页邮箱
    跨时空

  2. 设置开启pop
    在这里插入图片描述

  3. 请将验证邮箱账号的pop服务地址、pop服务端口号、isUseSSL改成true;如下图:
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值