平时基本都是是用SMTP协议发送邮件,但是公司有个客户对发送邮件要求比较特殊,所以就结合客户需求写了一个通用的exchange协议发送邮件的方法,菜鸟上手,请大家多多指教

    public class ExchangeEmailInfo{/// <summary>/// 接收人/// </summary>public List<string> ToRecipients { get; set; }/// <summary>/// 抄送人/// </summary>public List<string> CcRecipients { get; set; }/// <summary>/// 邮件主题/// </summary>public string Subject { get; set; }/// <summary>/// 邮件内容/// </summary>public string MessageBodyContent { get; set; }/// <summary>/// 邮件内容类型 0 html 1 文本/// </summary>public int MessageBodyType { get; set; }}public class ExchangeEmailServicce{/// <summary>/// exchange协议服务地址/// </summary>public string ExchangeServiceUrl { get; set; }/// <summary>/// 发送人/// </summary>public string UserName { get; set; }/// <summary>/// 密码/// </summary>public string UserPwd { get; set; }/// <summary>/// 域名/// </summary>public string Domain { get; set; }/// <summary>/// 邮件集合/// </summary>public List<ExchangeEmailInfo> EmailInfoList { get; set; }}
     public ResponseModel<string> SendMail(ExchangeEmailServicce emailServicce){ResponseModel<string> result = new ResponseModel<string>() { IsSuccess = true, ErrorCode = 0 };System.Text.StringBuilder builder = new System.Text.StringBuilder();try{ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013);if (string.IsNullOrWhiteSpace(emailServicce.Domain))exchangeService.Credentials = new WebCredentials(emailServicce.UserName, emailServicce.UserPwd);elseexchangeService.Credentials = new WebCredentials(emailServicce.UserName, emailServicce.UserPwd, emailServicce.Domain);exchangeService.TraceEnabled = true;exchangeService.TraceFlags = TraceFlags.All;exchangeService.Url = new Uri(emailServicce.ExchangeServiceUrl);if (emailServicce == null || emailServicce.EmailInfoList.Count <= 0){log.Error(result.Message);result.IsSuccess = false;result.Message = "邮件信息不能为空";return result;}foreach (var item in emailServicce.EmailInfoList){EmailMessage email = new EmailMessage(exchangeService);email.ToRecipients.AddRange(item.ToRecipients);email.Subject = item.Subject;if (item.CcRecipients != null && item.CcRecipients.Count > 0)email.CcRecipients.AddRange(item.CcRecipients);MessageBody body = new MessageBody(){BodyType = item.MessageBodyType == 0 ? BodyType.HTML : BodyType.Text,Text = item.MessageBodyContent};email.Body = body;email.Send();builder.Append(JsonConvert.SerializeObject(item.ToRecipients) + "-");}return result;}catch (System.ObjectDisposedException ex){result.Message = "程序异常,请重试。";result.ErrorCode = 1;}catch (ServiceVersionException ex){result.Message = "服务版本异常,请重试";result.ErrorCode = 1;}catch (ServiceValidationException ex){result.Message = "服务验证失败,请重试";result.ErrorCode = 1;}catch (ServiceLocalException ex){result.Message = "本地服务异常,请重试";result.ErrorCode = 1;}catch (Exception e){result.Message = e.ToString();result.ErrorCode = 2;}if (builder != null && string.IsNullOrWhiteSpace(builder.ToString()))log.Error("参数:" + JsonConvert.SerializeObject(emailServicce) + "/n已成功发送的邮件:"+builder.ToString()+"/n错误信息:" + result.Message);elselog.Error("参数:" + JsonConvert.SerializeObject(emailServicce) + "/n错误信息:" + result.Message);result.IsSuccess = false;return result;}
    //exchange协议发送邮件  mailTo,mailCC 多个收件人和多个抄送人之间分别用英文逗隔开ExchangeSendMail = function (serviceUrl, userName, UserPwd, mailTo, mailCC, mailSubject, mailBody, mailBodyType, domain) {if (mailTo == null || mailTo == undefined) {alert('接收人不能为空');return;}var infoList = new Array();var emailInfo = {};emailInfo.ToRecipients = mailTo.split(',');if (mailCC != null && mailCC != undefined)emailInfo.CcRecipients = mailCC.split(',');emailInfo.Subject = mailSubject;emailInfo.MessageBodyContent = mailBody;emailInfo.MessageBodyType = (mailBodyType == null || mailBodyType == undefined) ? 1 : mailBodyType;infoList.push(emailInfo)var para = {ExchangeServiceUrl: serviceUrl, userName: userName, UserPwd: UserPwd, Domain: (domain == null || domain == undefined) ? "" : domain, EmailInfoList: infoList};$.ajax({url: Display.config.VirtualPath + '/api/ExchangeEmail/SendMessage',type: "POST",contentType: 'application/json',data: JSON.stringify({ args: para, messageType: 1 }),success: function (data) {if (!data.IsSuccess)alert(data.Message);}});}

exchange协议发送邮件相关推荐

  1. java exchange发邮件_Java通过exchange协议发送邮件

    本文实例为大家分享了Java通过exchange协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 com.microsoft.ews-java-api ews-java-api ...

  2. php-ews发送邮件,node.js 基于 STMP 协议和 EWS 协议发送邮件

    本文主要介绍 node.js 发送基于 STMP 协议和 MS Exchange Web Service(EWS) 协议的邮件的方法.文中所有参考代码均以 TypeScript 编码示例. 1 基于 ...

  3. python中exchange函数使用_python基于exchange函数发送邮件过程详解

    python基于exchange函数发送邮件过程详解 作者: shuzihua 更新时间:2020-11-06 10:40:35 原文链接 1.Python hasattr() 函数 描述 hasat ...

  4. C# 通过Exchange server 发送邮件

    微软的Exchange邮件服务不同与一般的邮件server,他不能简单使用SmtpClient等组件实现邮件收发的功能. 那么怎么通过Exchange服务发送邮件呢? 微软的Exchange服务都有w ...

  5. Python 使用SMTP协议发送邮件

    引言 问题基于<计算机网络自定向下>第二章的课后套接字编程作业:邮件客户 题目的下载链接:python 压缩包 题目如下: 这个实验结束时,您将能够更好地了解SMTP协议.您还将获得使用P ...

  6. java 发送邮件协议_Java通过stmp协议发送邮件

    本文实例为大家分享了Java通过stmp协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 org.springframework.boot spring-boot-starte ...

  7. SMTP协议发送邮件

    网上找了一个smtp邮箱的发送工具类,还行,用我自己的qq测试可以发送package com.exampleimport javax.mail.Address; import javax.mail.S ...

  8. Linux 平台使用smtp协议发送邮件

    Linux平台使用smtp协议 发送邮件 前言 项目简介 项目开发环境 项目代码 测试结果以及存在问题 写在最后 前言 本人第一次写博客,主要目的是想记录一下自己的学习结果,本篇博客内容纯手打,参考资 ...

  9. smtp协议源ip是服务器地址吗,Smtp协议发送邮件

    Smtp协议发送邮件,是最全面的smtp协议发送邮件教程!有助于新手快速入门,从而跟好的进阶学习.本文档内容丰富,知识全面,简单易懂 Smtp协议发送邮件 MTP(Simple Mail Transf ...

  10. 如何使用exchange来发送邮件

    一.了解EWS JAVA API 它是用来访问 Exchange Web 服务的 Java 客户端,说白了就是一套访问Exchange邮件服务的Java API库,利用它我们可以编写Java代码来动态 ...

最新文章

  1. 我来阅读lodash源码——Math(一)
  2. ant压缩在哪卸载_反病毒软件这么多,到底哪一款适合你
  3. Mutex和上厕所居然有这么多异曲同工之妙
  4. 9.FreeRTOS学习笔记-任务通知
  5. (篇二)C语言动态分配内存、计算π的值
  6. python中的列表和元组_浅析Python中的列表和元组
  7. H.264 无参考视频质量评价方法 (使用了基于遗传编程方法的符号回归)
  8. android5.0+art模式,Android 5.0有哪些变化
  9. iOS:Reachability网络监听
  10. (美)梅耶(Myers, G. J.) 等《软件测试的艺术(原书第3版)》书籍(第3版)
  11. 科技部领衔发布中国新一代AI发展报告:中美成全球AI网络核心节点
  12. 钢琴乐谱怎么看?学习五线谱及其口诀
  13. excel自动调整列宽_如何以厘米为单位精确设置Excel表格的行高列宽?
  14. 个人表现怎么写学生_个人主要事迹怎么写
  15. ACCESS模糊查询like的解决方法SQL查询语句通配符问题
  16. 《全面解读IPTV生态链》-转自CSDN
  17. AI 作图绘画的软件和网址
  18. 当 Rainbond 遇上龙蜥!小龙带你玩转一站式云原生,点击开启
  19. 华硕开机时出现无法验证数字签名驱动
  20. CISSP 第十一章 安全运营

热门文章

  1. 基于人工智能的智能化地理信息系统
  2. [转]FastDb介绍
  3. java 美元符号_有什么区别 . (点)和$(美元符号)?
  4. JAVA疫情数据可视化系统毕业设计 开题报告
  5. 已知椭圆长短轴半径a,b,matlab画椭圆(附椭圆公式)
  6. 基于Cocos2d-x实现的畜不及防鬼畜音乐节奏游戏
  7. 【刘文彬】【精解】EOS智能合约演练
  8. 京东联盟高级API - 京东联盟转链接口 京东客转链接口 京粉转链接口 京东联盟返利接口 京东返利接口
  9. c语言音乐程序天空之城,51单片机演奏天空之城 c语言源程序
  10. 恒流源差分放大电路静态分析_差分放大电路分析