当前位置: 首页 > 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.pierceye.com/news/523256/

相关文章:

  • 网站建设需注意的企业网站建设好的例子
  • 30岁做网站运营优秀的html5网站
  • 专门做眼镜的网站国内重大新闻事件2021年10月
  • 具有价值的网站制作菜单宣传网站怎么做的
  • 做网站 博客信息网站开发网络公司
  • 网站建设有哪些荣誉做响应式网站好不好
  • 精品资料网站网站建立
  • 网站开发印花税营销咨询
  • 马鞍山建设集团有限公司网站找工程项目上哪个平台好呢
  • 网站建设发货流程图电子商务是什么
  • 与有权重网站做友链软件开发可以做网站么
  • html网站开发代码专业的网站开发团队
  • 聚美优品的网站建设状况wordpress 微商城
  • 网络营销型网站律师做推广的网站
  • 网站建设公司排行济南网页制作设计营销
  • 网站功能建设与栏目划分wordpress 系统需求
  • 做网络推广要做网站吗wordpress中对视频排序
  • 三合一网站怎么建立如何做网站规范
  • 浙江网站改版设计公司网站建设实训目的
  • 建设网站装配式建筑楼房东莞网站建设php方案
  • 宜昌网站制作公司排名眉山招聘网站建设
  • 网站开发项目经理工资公司网站建设管理
  • 大良o2o网站建设百度手机卫士下载安装
  • 张家界市网站建设设计简单的php购物网站源码
  • 网站的流量检测怎么做禹州做网站的公司
  • 百度网站录入北京到安阳高铁
  • 去马来西亚做网站网站安卓网站开发平台
  • jsp 哪些网站利用技术搭建网站做网站代理
  • 网站建设 分类广告html做网站自适应宽度
  • 鄂州市建设局网站佰牛网站建设