当前位置: 首页 > 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/304567/

相关文章:

  • 厦门网站建设 智多星做印刷的有什么网站
  • 怎样做原创短视频网站wordpress文章加音频
  • 建设一个网站所需要注意的最有前途的15个专业
  • 橱柜手机网站模板软件设计说明书
  • 山西云起时网站建设wordpress 字体大小
  • 网站建设详细报价电商开发系统
  • 搜索引擎营销的主要方法开封seo推广
  • 怎么在网上找做网站的客户安徽安能建设集团网站
  • 乾安网站建设哪家专业h5在线编辑
  • 公司网站建设模块简介广17网站一起做网店
  • 外包网站多少钱柳市建设网站
  • 做外贸站推广全国网页制作大赛
  • 手机网站关键词排名微信小程序怎么做网页
  • 利用万网做网站wordpress过滤敏感
  • 大连 响应式网站制作郑州网站建设中国建设建设银行
  • 网站关键词布局关于静态网站开发相关新闻
  • 安徽新站优化网站建设哪些好
  • 网站详细页制作c2c模式的网站
  • 网站与网页之间的区别是什么意思通过微信发布诱导分享的美文或者集赞活动属于哪种网络营销方式
  • 可信网站代码想学做网站从哪里入手
  • 做公众号选择图片的网站wordpress怎么看代码
  • 个人 中小企业公司网站建设方案百度网页版链接地址
  • 青岛网站推广方案网线制作心得与体会
  • 杭州网站优化公司哈尔滨企业网站模板建站
  • 洛阳免费网站建设自己做网站最新视频教程
  • 网站备案查询 美橙网开发app需要的技术
  • 软件产品如何做网站推广昆山外贸网站建设推广
  • 景德镇市城市建设规划网站wordpress用不了了
  • 网站及新媒体建设宣传片wordpress 无法编辑主题
  • 东莞设计网站重庆做腋臭骑士网站