分享一个封装好的将单据套打EXCEL/PDF发送到指定邮箱的方法

Cloud自带的发送套打信息至邮箱的功能需要自行点击发送邮件按钮并且选择收件人,可以在操作插件中(审核后,如果审核时间较长可考虑异步调用此方法)调用此方法将不需要手工去操作实现自动发送邮件(获取用户设置的套打模板),前提是要先配置好邮件服务器并且保证邮件服务器是正常可用的。
实现如下效果:

C#方法:
//// <summary>
/// 金蝶云发送邮件方法 ctx上下文,fid单据内码,billkey单据主键,billtypeid单据类型id,mailadress收件人地址,title邮件标题,msg邮件内容,yjdata邮件账户设置(BAS_MAILACCOUNTSETTING)数据包,pdf是否发送pdf,excel是否发送excel 引用Kingdee.BOS.ServiceHelper /Kingdee.BOS.Core.Metadata/Kingdee.BOS.Core.Metadata.FormElement
/// </summary>
/// <param name="ctx"></param>
/// <param name="fid"></param>
/// <param name="billkey"></param>
/// <param name="billtypeid"></param>
/// <param name="mailadress"></param>
/// <param name="title"></param>
/// <param name="msg"></param>
/// <param name="yjdata"></param>
/// <param name="pdf"></param>
/// <param name="excel"></param>
/// <returns></returns>
public string Sendmail(Context ctx, string fid, string billkey, string billtypeid, string[] mailadress, string title, string msg, Kingdee.BOS.Orm.DataEntity.DynamicObject yjdata, bool pdf, bool excel)
{
if (yjdata != null)
{
Kingdee.BOS.Orm.DataEntity.DynamicObject yjdzdata = yjdata["FSENDMAILSERVER"] as Kingdee.BOS.Orm.DataEntity.DynamicObject;
string yjdz = null;//邮件地址
int yjdk = 0;//邮件端口
string fwdz = null;//邮件服务器地址
string zh = null;//发送邮件账户
string sqm = null;//授权码
string detdmb = null;//默认套打模板
if (!yjdata["FEmailAddress"].IsNullOrEmptyOrWhiteSpace())
{
fwdz = yjdata["FEmailAddress"].ToString();
}
if (!yjdata["FUserName"].IsNullOrEmptyOrWhiteSpace())
{
zh = yjdata["FUserName"].ToString();
}
if (!yjdata["FPassword"].IsNullOrEmptyOrWhiteSpace())
{
sqm = yjdata["FPassword"].ToString();
}
if (yjdzdata != null)
{
yjdz = yjdzdata["FMailServer"].ToString();
yjdk = Convert.ToInt32(yjdzdata["FSMTPPort"]);
}
IDynamicFormView view = this.CreateBillView(ctx, billkey, fid);//服务插件中创建view
string paratext = UserParamterServiceHelper.Load(ctx, "NotePrintSetup" + view.BillBusinessInfo.GetForm().Id.ToUpper().GetHashCode().ToString(), ctx.UserId, "");//获取套打设置参数
JArray paras = JArray.Parse(paratext);
if (paras != null)
{
var tdmbs = (from pa in paras where pa["key"].ToString() == billtypeid select pa).ToList();
if (tdmbs.Count > 0)
{
detdmb = tdmbs[0]["value"].ToString();
}
}
List<string> bids = new List<string>();
bids.Add(fid);
List<string> tdids = new List<string>();
tdids.Add(detdmb);
//(view as IDynamicFormViewService).MainBarItemClick("YOL_YJ");
Kingdee.BOS.Core.Import.IImportView importView = view as Kingdee.BOS.Core.Import.IImportView;
importView.AddViewSession();
string[] ids = { fid };
string[] cc = null;
string exportFileName = null;
string pdfExportFileName = null;
string excelExportFileName = null;
ResultInfo resultInfo = null;
DynamicFormViewPlugInProxy service = view.GetService<DynamicFormViewPlugInProxy>();
if (service != null)
{
InitializeSendMailServiceEventArgs initializeSendMailServiceEventArgs = new InitializeSendMailServiceEventArgs();
service.FireOnInitializeSendMailService(initializeSendMailServiceEventArgs);
exportFileName = initializeSendMailServiceEventArgs.ExportFileName;
}
try
{
pdfExportFileName = SendMailServiceHelper.GetPdfExportFileName(view, ctx.UserId, ids, detdmb, exportFileName);
}
catch (Exception)
{
return "生成pdf失败";
}
try
{
excelExportFileName = SendMailServiceHelper.GetExcelExportFileName(view, ctx.UserId, ids, detdmb, exportFileName);
}
catch (Exception)
{
return "生成excel失败";
}
try
{
resultInfo = SendMailServiceHelper.Send(view, ctx.UserId, yjdz, yjdk, false, false, fwdz, zh, sqm, title, msg, mailadress, cc, ids, pdf, pdfExportFileName, excel, excelExpor
分享一个封装好的将单据套打EXCEL/PDF发送到指定邮箱的方法
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



