当前位置: 首页 > news >正文

刷东西网站建设宁波建设公司网站

刷东西网站建设,宁波建设公司网站,没有网站能做淘宝客吗,濮阳网站建设专家团队序言#xff1a; 网上找了很多关于.Net如何访问电子邮箱的方法#xff0c;但是大多数都达不到想要的需求#xff0c;只有一些 收发邮件。因此 花了很大功夫去看 LumiSoft.Net.dll 的源码#xff0c;总算做出自己想要的结果了#xff0c;果然学习诗人进步。 介绍#xff…序言 网上找了很多关于.Net如何访问电子邮箱的方法但是大多数都达不到想要的需求只有一些 收发邮件。因此 花了很大功夫去看 LumiSoft.Net.dll 的源码总算做出自己想要的结果了果然学习诗人进步。 介绍 LumiSoft.Net.dll 是 C# 下的 免费开源 的关于网络 编程 的 一个类库功能强大包含FTP、FTP.Client、ICMP、IMAP、POP3、SMTP如下图 需求 1、实现访问电子邮箱         2、获取具体的某个文件夹下的邮箱得到邮件的标题         3、解析邮件的附件并数据导入到数据库         4、返回具体的邮件报错信息发给相关人         5、将导入数据库成功的邮件移入到另一个文件夹失败的邮件 移入到另一个文件夹 实现步骤 一、定义需要用到的信息变量 private string server 服务器地址; private int port 端口号; private bool useSsl true;//是否跳过SSL验证 private string username 邮件帐户; private string password 邮箱密码; 二、访问电子邮箱 IMAP_Client client new IMAP_Client(); useSsl false; client.Connect(server, port, useSsl); //登录获取授权操作 client.Login(username, password); 三、获取各个邮箱的概要信息 //获取各个邮箱目录的概要信息 client.GetFolders(null).ToList().ForEach(f {fileNameStrs fileNameStrs f.FolderName;var list client.FolderStatus(f.FolderName).ToList();foreach (var item in list){emailInfo emailInfo 总数: item.MessagesCount ,未读: item.MessagesCount ,最近 item.UnseenCount;} }); //选择邮箱下的文件夹这里面有自己需要的邮件 client.SelectFolder(邮箱下的文件夹); //取出收件箱 var folder client.SelectedFolder; //邮件总数 var MessagesCount folder.MessagesCount; //未读邮件总数 var RecentMessagesCount folder.RecentMessagesCount; 四、解析某个文件夹下的邮件信息并导入数据库移动相关邮件 //代表该文件夹下有邮件存在 if (MessagesCount 0) {//首先确定取第x到第n封邮件1:*表示第1封到最后一封var seqSet IMAP_t_SeqSet.Parse(1:*);var items new IMAP_t_Fetch_i[]{new IMAP_t_Fetch_i_Envelope(), //邮件的标题、正文等信息new IMAP_t_Fetch_i_Uid(), //返回邮件的UID号UID号是唯一标识邮件的一个号码new IMAP_t_Fetch_i_Flags(), //此邮件的标志应该是已读未读标志new IMAP_t_Fetch_i_InternalDate(),//貌似是收到的日期new IMAP_t_Fetch_i_Rfc822() //Rfc822是标准的邮件数据流可以通过Lumisoft.Net.Mail.Mail_Message对象解析出邮件的所有信息};//Fetch 第一个参数false时seqSet有效client.Fetch(false, seqSet, items, (s, e) {var isSuccees true;//处理邮件的匿名函数内容var email e.Value as IMAP_r_u_Fetch;if (email ! null email.Rfc822 ! null){email.Rfc822.Stream.Position 0;var mime_message Mail_Message.ParseFromStream(email.Rfc822.Stream);email.Rfc822.Stream.Close();//每封Email会有一个唯一的Id,检查这个Id是否存在就可以知道以前有没有接收过这封邮件var UID email.UID.UID;//可能出现乱码问题通过函数进行转换 //DecodeString(mime_header.Subject);var emailTitle mime_message.Subject;//邮件标题var emailFrom mime_message.From;//邮件发送人var emailTo mime_message.To;//邮件抄送人//循环每个附件并判断附件的后缀名是否满足要求var file mime_message.GetAttachments(true, true);foreach (var entity in file){if (entity.ContentDescription.IndexOf(.xlsx) 0 || entity.ContentDescription.IndexOf(.xls) 0){errorMessage 标题为 emailTitle 的邮件,附件格式错误请检查邮件附件必须为(.xlsx/.xls)文件后缀格式;isSuccees false;}else{try{#region 解析附件,得到 单据信息string fileName ;//判断是普通附件还是嵌入的内容附件//if (entity.ContentDisposition ! null entity.ContentDisposition.DispositionType MIME_DispositionTypes.Attachment)//邮件的附件名称fileName entity.ContentDisposition.Param_FileName;//代表文件下载到本地//string localInbox string.Format({0}\\soEmail, Directory.GetCurrentDirectory());If the folder is not existed, create it.//if (!Directory.Exists(localInbox))//{// Directory.CreateDirectory(localInbox);//}//string fullPath string.Format({0}\\{1}, localInbox, fileName);//直接解析邮件里面的附件信息var byteObj entity.Body as MIME_b_SinglepartBase;var stream byteObj.GetDataStream();IWorkbook workbook null;// 2007版本if (fileName.IndexOf(.xlsx) 0){workbook new XSSFWorkbook(stream);}// 2003版本else if (fileName.IndexOf(.xls) 0){workbook new HSSFWorkbook(stream);}var count workbook.NumberOfSheets;ISheet sheet null;for (int i 0; i count; i){//获取sheet表sheet workbook.GetSheetAt(i);//这块根据自己的需求来写#region 计算1-50行中 第一列包含第一个字符串 aaa 的行索引 index int index 0;for (int ro 0; ro 50; ro){IRow rows sheet.GetRow(ro);if (rows.Cells ! null rows.Cells.Count 0 rows.GetCell(0) ! null){var cellValue GetValueByType(rows.GetCell(0));if (cellValue.ToLower().Contains(aaa)){index ro;break;}}}#endregionif (index 0)//excel附件找不到 aaa 的列名信息{errorMessage 标题为 emailTitle 的邮件,在附件信息中找不到aaa的列名信息;isSuccees false;break;}#region 获取 需要保存数据库的数据var cellIndex index 1;//对应Excel中 开始获取aaa数据的行索引var code ;//codevar name ;//名称for (int ro cellIndex; ro 1000; ro){IRow rows sheet.GetRow(ro);//判断是否为合并单元格if (rows.GetCell(0).IsMergedCell){//读取合并单元格的值var cell MergedCell(rows.GetCell(0));code GetValueByType(cell);}else{code GetValueByType(rows.GetCell(0));}//判断是否为合并单元格if (rows.GetCell(1).IsMergedCell){//读取合并单元格的值var cell MergedCell(rows.GetCell(1));name GetValueByType(cell);}else{name GetValueByType(rows.GetCell(1));}//如果 code和name都为空则直接跳出循环if (string.IsNullOrEmpty(code) string.IsNullOrEmpty(name)){//第一行if (ro cellIndex){errorMessage 标题为 emailTitle 的邮件,在附件信息中第 cellIndex 行的数据信息全部为必填,不能为空,请检查邮件附件信息;;isSuccees false;}break;}//Excel中第cellIndex行,第1-2列的字段不能为空值if (!string.IsNullOrEmpty(code) !string.IsNullOrEmpty(name)){//将解析后的数据插入是list中Model model new Model();model.code code;model.name name;list.Add(model);}if (list ! null list.Count 0){result.Succeeded true;result.Data list.Count 条数据插入成功, errorMessage;//执行插入数据库}}#endregion}sheet null;workbook null;stream.Close();stream.Dispose();#endregion}catch (Exception ex){errorMessage 标题为 emailTitle , ex.Message ex.InnerException;isSuccees false;break;}}}if (isSuccees){trueUid.Add(UID);//表示 每封邮件成功解析}else{flaseUid.Add(UID);//表示 邮件存在错误信息}}});foreach (var item in trueUid){//将成功的邮件移动到 另一个文件夹var value item : item ;var setIndex IMAP_t_SeqSet.Parse(value);client.MoveMessages(true, setIndex, TestEmailComplete, true);}foreach (var item in flaseUid){//将失败的邮件移动到 另一个文件夹var value item : item ;var setIndex IMAP_t_SeqSet.Parse(value);client.MoveMessages(true, setIndex, TestEmailError, true);}client.Dispose(); } else {errorMessage 操作成功; } 五、邮件移动方法 IMAP_t_SeqSet.Parse(value)方法 根据uid获取到第几封邮件每一封邮件都有唯一的uid格式 1:3代表1 foreach (var item in trueUid){//将成功的邮件移动到 另一个文件夹var value item : item ;var setIndex IMAP_t_SeqSet.Parse(value);client.MoveMessages(true, setIndex, TestEmailComplete, true);}foreach (var item in flaseUid){//将失败的邮件移动到 另一个文件夹var value item : item ;var setIndex IMAP_t_SeqSet.Parse(value);client.MoveMessages(true, setIndex, TestEmailError, true);}
http://www.zqtcl.cn/news/523256/

相关文章:

  • 免费服务器建立网站郑州seo线上推广系统
  • 医院网站建设的目的qq小程序源码
  • 郑州seo网站排名优化公司建站行业发展
  • 彭山住房和城乡建设局网站儒枫网网站建设
  • wap asp网站模板下载中企动力骗子公司
  • 中文电商网站模板洛阳网络公司排名
  • 国外毕业设计网站青岛seo服务
  • 自己做的网站怎么发布视频教程廊坊网站排名优化公司哪家好
  • 域名服务器都有了怎么做网站网站开发获取用户微信号登录
  • 淮南建设公司网站企业系统工程
  • 仓山福州网站建设佛山网站制作专业公司
  • 男男做的视频网站扬中网站建设案例
  • 做钓鱼网站用哪种编程语言代理网站备案
  • 广汉有没有做网站建设公司wordpress 301插件
  • 龙岗菠菜网站建设chatgpt网页
  • 如何查看网站ftp地址四川公共资源交易网招标网
  • 家居企业网站建设机构沈阳工程信息
  • 上海好的网站设计公司wordpress 上传文件路径
  • 用微信微博网站来做睡眠经济亚马逊跨境电商开店流程及费用
  • 网络公司做的网站根目录在哪网站建设必备条件
  • 网站建设外包服务管理情况公众号 链接wordpress
  • 深圳网站建设黄浦网络 技术差做网站的怎么跑业务
  • 青岛崂山区网站建设广东企业网站建设多少钱
  • 男女做那个的小视频网站韩国儿童才艺网站建设模板
  • 餐饮品牌网站建设淮北论坛最新招聘
  • 给客户做网站网站自动适应屏幕
  • 人力资源培训与开发什么是网站优化
  • 制作 网站 盈利农村自建房设计图一层平房
  • 佛山住房和城乡建设厅网站wordpress图片外链转内链
  • 海东高端网站建设价格wordpress侧边栏淘宝客