平时基本都是是⽤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();
System.Text.StringBuilder builder = new System.Text.StringBuilder();
try
{
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErr
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013);
if (string.IsNullOrWhiteSpace(emailServicce.Domain))
exchangeService.Credentials = new WebCredentials(emailServicce.UserName, emailServicce.UserPwd);
else候旭
exchangeService.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;
result.ErrorCode = 2;
}
if (builder != null && string.IsNullOrWhiteSpace(builder.ToString()))
log.Error("参数:" + JsonConvert.SerializeObject(emailServicce) + "/n已成功发送的邮件:"+builder.ToString()+"/n错误信息:" + result.Message);            else
log.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: fig.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);
}
});
}