当工作审批流程(人事申请,审批,IT申请审批,出差申请审批)到达某种状态时,往往需要发送邮件通知给审批人或者申请人以提醒。本文利用C#完成了邮件自动发送的功能。
1.实体参数的定义,这里主要用到了申请人,审批人,以及审批状态等参数。
public class EMailModel
{
//审批人姓名
public string ApprovalName { get; set; }
//申请人姓名
public string ApplyName { get; set; }
//审批人EMail
public string ApprovalEMail { get; set; }
//申请人EMail
public string ApplyEmail { get; set; }
//False表示审批,True表示完成
public bool State { get; set; }
}
2.邮件发送核心方法。以QQ邮箱和服务器做为例子。实际应用中,可根据情况进行设置。QQ邮箱必须设置开启SMTP服务与EnableSSL. 关于开启QQ邮箱SMTP服务,可登陆QQ邮箱,通过设置->帐户->开启服务来设置。
public bool sendEmail(EMailModel model)
{
string approvalMailBody = @"尊敬的{0},你好! 您的下属{1}的出差申请正在等待您的审批,请通过登陆我的审批中进行审批.谢谢!";
string finishMailBody = @"尊敬的{0},你好! 您的出差申请审批流程已完成。请通过登陆我的申请中进行查看.谢谢!";
bool result = true;
MailMessage myMail = new MailMessage();
MailAddress fromAddr = new MailAddress("zheng.luan@qq.com");
string toAddr = string.Empty;
string mailBody = string.Empty;
if (model.State)
{
toAddr = model.ApplyEmail;
string applyName = UtilityMethods.inputParamNullHandler(model.ApplyName);
mailBody = string.Format(finishMailBody, applyName);
}
else
{
toAddr = model.ApprovalEMail;
string approveName = UtilityMethods.inputParamNullHandler(model.ApprovalName);
string applyName = UtilityMethods.inputParamNullHandler(model.ApplyName);
mailBody = string.Format(approvalMailBody, approveName, applyName);
}
if (string.IsNullOrEmpty(toAddr))
{
result = false;
}
else
{
myMail.From = fromAddr;
myMail.To.Add(toAddr);
myMail.Subject = "出差申请审批提醒邮件";
myMail.Body = mailBody;
SmtpClient client = new SmtpClient("smtp.qq.com", 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("zheng.luan@qq.com", "ppxtvvionwmdejih");
try
{
client.Send(myMail);
}
catch (Exception e)
{
string msg = e.Message;
result = false;
}
}
return result;
}
3.参数转换代码,主要是用在当用户名等非必要信息没有获取到时,设置默认Empty的值,不至于程序报错。
public static string inputParamNullHandler(string input)
{
if (null != input)
{
}
else
{
input = string.Empty;
}
return input;
}