#include"kutil.h" #include #include #include #include #include "libxl.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "libxl.h" #include #include #include #include #include #include #include extern "C" int POM_AM__set_application_bypass(logical bypass); int SH_PLM_Email(EPM_action_message_t msg) { bool debug = false; int ifail = ITK_ok, arg_cnt = 0, att_cnt = 0, task_count = 0, user_cnt = 0; char* arg = NULL, * argflag = NULL, * argvalue = NULL; char* user_name = NULL, * job_name = NULL, * object_string,*username = ""; tag_t owning_user = NULL; tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, user_tag = NULLTAG; tag_t* attachments = NULL, * task_tags = NULL; arg_cnt = TC_number_of_arguments(msg.arguments); vector all_user_tags; vector mail_addrs; char* outPersonMailAddress = NULL; char* content = NULL; ITKCALL(POM_get_user(&user_name, &user_tag)); printf("=============================================================\n"); printf("开始执行:SH_PLM_Email\n"); printf("=============================================================\n"); printf("开超级权限\n"); POM_AM__set_application_bypass(true); task_tag = msg.task; if (task_tag == NULLTAG) { goto end; } if (arg_cnt > 0) { for (int i = 0; i < arg_cnt; i++) { arg = TC_next_argument(msg.arguments); ITKCALL(ifail = ITK_ask_argument_named_value(arg, &argflag, &argvalue)); if (strcmp(argflag, "recipient") == 0) { outPersonMailAddress = argvalue; printf("outPersonMailAddress:%s\n",outPersonMailAddress); } if (strcmp(argflag, "content") == 0) { content = argvalue; printf("content:%s\n", content); } MEM_free(argflag); MEM_free(argvalue); } } ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); ITKCALL(ifail = AOM_ask_value_string(rootTask_tag, "job_name", &job_name)); ITKCALL(ifail = AOM_ask_value_tag(rootTask_tag, "owning_user", &owning_user)); ITKCALL(ifail = AOM_ask_value_string(owning_user, "user_name", &username)); ITKCALL(ifail = AOM_ask_value_string(rootTask_tag, "object_string", &object_string)); printf("流程名称:%s\n", job_name); printf("发起人:%s\n", user_name); //解析外部邮箱人员地址 if (outPersonMailAddress != NULL) { vector mailaddressVector; Split(outPersonMailAddress, ";", mailaddressVector); for (int i = 0; i < mailaddressVector.size(); i++) { mail_addrs.push_back(mailaddressVector[i]); } } user_cnt = mail_addrs.size(); printf("发送邮件个数:%d\n", user_cnt); printf("发送邮件人员:%s\n", mail_addrs[0].c_str()); char zt[128] = ""; strcat(zt, "【TeamCenter】-"); strcat(zt, object_string); printf("发送邮件主题:%s\n", zt); char nr[512] = ""; strcat(nr, "收到"); strcat(nr, username); strcat(nr, "发起的"); strcat(nr, job_name); strcat(nr, "任务,"); strcat(nr, content); printf("发送邮件内容:%s\n", nr); char jarfile[512] = ""; sprintf(jarfile, "%s\\bin\\EMailSender.jar", getenv("TC_ROOT")); for (int i = 0; i < user_cnt; i++) { char cmd[1024] = ""; string mail_addr = mail_addrs[i]; strcpy(cmd, "java -jar "); strcat(cmd, jarfile); strcat(cmd, " \""); strcat(cmd, mail_addr.c_str()); strcat(cmd, "\" \""); strcat(cmd, zt); strcat(cmd, "\" \""); strcat(cmd, nr); strcat(cmd, "\""); printf("CMD:%s", cmd); system(cmd); printf("执行完成"); } printf("关超级权限\n"); POM_AM__set_application_bypass(false); end: DOFREE(job_name); DOFREE(attachments); all_user_tags.clear(); printf("=============================================================\n"); printf("执行结束:SH_PLM_Email\n"); printf("=============================================================\n"); return ITK_ok; }