00001
00002
00003
00004
00005
00006
00007
00008 #include "reGlobalsExtern.h"
00009 #include "icatHighLevelRoutines.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 int msiSendMail(msParam_t* xtoAddr, msParam_t* xsubjectLine, msParam_t* xbody, ruleExecInfo_t *rei)
00047 {
00048 char *mailStr;
00049 char fName[100];
00050 char *t1, *t2;
00051 FILE *fd;
00052 char *toAddr;
00053 char *subjectLine;
00054 char *body;
00055
00056 toAddr = (char *) xtoAddr->inOutStruct;
00057 subjectLine = (char *) xsubjectLine->inOutStruct;
00058 body = (char *) xbody->inOutStruct;
00059
00060
00061 if (reTestFlag > 0 ) {
00062 if (reTestFlag == COMMAND_TEST_1) {
00063 fprintf(stdout," Sending Email\n To:%s\n Subject:%s\n Body:%s\n",
00064 toAddr,subjectLine,body);
00065 }
00066 else if (reTestFlag == HTML_TEST_1) {
00067 fprintf(stdout,"Sending Email\n<UL>\n");
00068 fprintf(stdout,"<LI>To: %s\n",toAddr);
00069 fprintf(stdout,"<LI>subjectLine: %s\n",subjectLine);
00070 fprintf(stdout,"<LI>Body: %s\n",body);
00071 fprintf(stdout,"</UL>\n");
00072 }
00073 else if (reTestFlag == LOG_TEST_1)
00074 rodsLog (LOG_NOTICE," Calling msiSendMail To:%s Subject %s\n",
00075 toAddr,subjectLine);
00076 if (reLoopBackFlag > 0)
00077 return(0);
00078 }
00079 sprintf(fName,"mailFile%d.ml",getpid());
00080 fd = fopen(fName,"w");
00081 if (fd == NULL)
00082 return(FILE_CREATE_ERROR);
00083 t1 = body;
00084 #ifdef solaris_platform
00085 if (subjectLine != NULL && strlen(subjectLine) > 0)
00086 fprintf(fd,"Subject:%s\n\n",subjectLine);
00087 #endif
00088 while (t1 != NULL) {
00089 if ((t2 = strstr(t1,"\\n")) != NULL)
00090 *t2 = '\0';
00091 fprintf(fd,"%s\n",t1);
00092 if (t2 != NULL) {
00093 *t2 = '\\';
00094 t1 = t2+2;
00095 }
00096 else
00097 t1 = NULL;
00098 }
00099 fclose(fd);
00100 mailStr = (char*)malloc (strlen(toAddr)+100);
00101 if (mailStr == NULL) return SYS_MALLOC_ERR;
00102
00103 #ifdef solaris_platform
00104 sprintf(mailStr,"cat %s| mail %s",fName,toAddr);
00105 #else
00106 if (subjectLine != NULL && strlen(subjectLine) > 0)
00107 sprintf(mailStr,"cat %s| mail -s '%s' %s",fName,subjectLine, toAddr);
00108 else
00109 sprintf(mailStr,"cat %s| mail %s",fName,toAddr);
00110 #endif
00111 system(mailStr);
00112 sprintf(mailStr,"rm %s",fName);
00113 system(mailStr);
00114 free(mailStr);
00115 return(0);
00116 }
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153 int msiSendStdoutAsEmail(msParam_t* xtoAddr, msParam_t* xsubjectLine, ruleExecInfo_t *rei)
00154 {
00155 int i;
00156 msParam_t *mP;
00157 char tmpVarName[MAX_ACTION_SIZE];
00158 execCmdOut_t *myExecCmdOut;
00159 if ((mP = getMsParamByLabel (rei->msParamArray, "ruleExecOut")) == NULL)
00160 return(NO_VALUES_FOUND);
00161 myExecCmdOut = (execCmdOut_t*)mP->inOutStruct;
00162 getNewVarName(tmpVarName,rei->msParamArray);
00163 addMsParam(rei->msParamArray, tmpVarName, STR_MS_T,myExecCmdOut->stdoutBuf.buf , NULL);
00164 mP = getMsParamByLabel (rei->msParamArray, tmpVarName);
00165 i = msiSendMail(xtoAddr, xsubjectLine, mP, rei);
00166 rmMsParamByLabel (rei->msParamArray, tmpVarName,1);
00167 return(i);
00168
00169 }