[1139] | 1 | CWMAIL2 ;INDPLS/PLS- DELPHI VISTA MAIL SERVER, CONT'D ;21-Jun-2005 06:34;CLC
|
---|
| 2 | ;;2.3;CWMAIL;;Jul 19, 2005
|
---|
[1138] | 3 | ;Input - CWINPUT : 1 - Subject
|
---|
| 4 | ; : 2 - Flags
|
---|
| 5 | ; : 3 - Attachment Flag
|
---|
| 6 | ;
|
---|
| 7 | Q ;ROUTINE CAN'T BE CALLED DIRECTLY
|
---|
| 8 | %CREATE(CWDATA,CWINPUT,CWTEXT) ;CREATE A NEW MESSAGE
|
---|
| 9 | N CWSDATA,CWSEDATA,CWLP,CWTXTARY,DA,DIE,DR,Y,XMTEXT,CWMSGABS,CWTMP,CWFILE,CWIEN,CWNAM
|
---|
| 10 | N XMBODY,XMSUBJ,XMY,XMINSTR,XMZ
|
---|
| 11 | S CWDATA(1)="0^99- UNDEFINED ERROR"
|
---|
| 12 | ;INPUT CONTAINS SUBJECT;PARAMETER ARRAY (IE. TESTING API;PCSI
|
---|
| 13 | ;P=PRIORITY, X=CLOSED, C=CONFIDENTIAL, I=INFORMATIONAL, R=CONFIRMATION
|
---|
| 14 | ;TEXT ARRAY CONTAINS RECIPIENT LIST AND MESSAGE TEXT LOADED FROM BMSGD call
|
---|
| 15 | ;BUILD XMY ARRAY
|
---|
| 16 | S CWTEXT=$NA(^TMP($J,"CWMAILLOAD"))
|
---|
| 17 | S CWSDATA=$G(@CWTEXT@(-9902),"[START XMY]"),CWSEDATA=$G(@CWTEXT@(-9903),"[END XMY]")
|
---|
| 18 | S CWLP=-1 D GFNDLP^CWMAILB(.CWLP,CWSDATA)
|
---|
| 19 | I $G(CWLP)="" S CWDATA(1)="0^1- NO RECIPIENTS LISTED" G CRTEND
|
---|
| 20 | ;RETRIEVE RECIPIENTS
|
---|
| 21 | F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=CWSEDATA D
|
---|
| 22 | .S CWTMP=$G(@CWTEXT@(CWLP)) Q:CWTMP=""
|
---|
| 23 | .S CWFILE=+$P(CWTMP,"^"),CWIEN=+$P(CWTMP,"^",2),CWNAM=$P(CWTMP,"^",3)
|
---|
| 24 | .I CWFILE=200 S XMY(CWIEN)=""
|
---|
| 25 | .E I CWFILE=3.8 S XMY("G."_CWNAM)=""
|
---|
| 26 | .E S XMY(CWNAM)=""
|
---|
| 27 | I '$D(XMY) S CWDATA(1)="0^1- NO RECIPIENTS LISTED" G CRTEND ; NO RECIPIENTS LISTED
|
---|
| 28 | ;BUILD MESSAGE @TEXT@ ARRAY
|
---|
| 29 | S CWSDATA=$G(@CWTEXT@(-9900),"[START DATA]"),CWSEDATA=$G(@CWTEXT@(-9901),"[END DATA]")
|
---|
| 30 | S CWLP=-1 D GFNDLP^CWMAILB(.CWLP,CWSDATA)
|
---|
| 31 | I $G(CWLP)="" S CWDATA(1)="0^3- NO MESSAGE TEXT" G CRTEND
|
---|
| 32 | F S CWLP=$O(@CWTEXT@(CWLP)) Q:CWLP="" Q:@CWTEXT@(CWLP)=CWSEDATA D
|
---|
| 33 | .S ^TMP($J,"CWMAILOUT",CWLP)=$G(@CWTEXT@(CWLP))
|
---|
| 34 | I '$D(^TMP($J,"CWMAILOUT")) S CWDATA(1)="0^3- NO MESSAGE TEXT" G CRTEND ;NO MESSAGE @CWTEXT@
|
---|
| 35 | ;I '$L($P($G(CWINPUT),";")) S CWDATA(1)="0^4- MESSAGE SUBJECT NOT GIVEN" G CRTEND
|
---|
| 36 | ;E
|
---|
| 37 | S XMSUBJ=$P($G(CWINPUT),";")
|
---|
| 38 | ;subject can be null or between 3-65 characters. Length is handled on client side.
|
---|
| 39 | I $L(XMSUBJ),$L(XMSUBJ)<3 S XMSUBJ=XMSUBJ_$E("__",1,3-$L(XMSUBJ))
|
---|
| 40 | ;PROCESS MESSAGE
|
---|
| 41 | S XMBODY=$NA(^TMP($J,"CWMAILOUT"))
|
---|
| 42 | D CNVTAB(XMBODY) ;convert tabs to spaces
|
---|
| 43 | S XMINSTR("FLAGS")=$P(CWINPUT,";",2) ;GET MESSAGE ATTRIBUTES
|
---|
| 44 | I '$P($G(CWINPUT),";",3) D
|
---|
| 45 | . D SENDMSG^XMXAPI(XMDUZ,XMSUBJ,XMBODY,.XMY,.XMINSTR,.XMZ)
|
---|
| 46 | E D
|
---|
| 47 | . D CRE8XMZ^XMXAPI(XMSUBJ,.XMZ) ;create message stub
|
---|
| 48 | . I +$G(XMZ) D
|
---|
| 49 | . . D TEXT^XMXEDIT(XMZ,XMBODY) ;stuff message text
|
---|
| 50 | . . D BLDNETI(XMZ,XMSUBJ) ;stuff network header information
|
---|
| 51 | . . D ADDRNSND^XMXAPI(XMDUZ,XMZ,.XMY,.XMINSTR) ;send message
|
---|
| 52 | I +$G(XMZ)<1 S CWDATA(1)="0^5- MESSAGE CREATION FAILED" G CRTEND
|
---|
| 53 | I +$G(XMZ)>0 S CWDATA(1)="1^^"_$G(XMZ)
|
---|
| 54 | CRTEND K ^TMP($J,"CWMAILOUT"),^TMP($J,"CWMAILLOAD")
|
---|
| 55 | Q
|
---|
| 56 | CNVTAB(CWSRC) ;Convert TABS to spaces (use 6 char per tab)
|
---|
| 57 | ;PASS $NA() VARIABLE NAME CONTAINING DATA
|
---|
| 58 | N CWLP,CWLINE
|
---|
| 59 | S CWLP=+$G(CWLP)
|
---|
| 60 | F S CWLP=$O(@CWSRC@(CWLP)) Q:CWLP="" D
|
---|
| 61 | . S CWLINE=@CWSRC@(CWLP)
|
---|
| 62 | . S @CWSRC@(CWLP)=$$LNCNV(CWLINE)
|
---|
| 63 | Q
|
---|
| 64 | LNCNV(CWL) ; data line tab extracter
|
---|
| 65 | N CWTMP,CWTMPL,CWP,CWPR,CWPADL
|
---|
| 66 | Q:'$F(CWL,$C(9)) CWL ; no tabs to convert
|
---|
| 67 | S CWTMP=CWL,CWTMPL=""
|
---|
| 68 | F D Q:CWTMP'[$C(9)
|
---|
| 69 | . S CWP=$P(CWTMP,$C(9)) ; left portion of string
|
---|
| 70 | . S CWPR=$P(CWTMP,$C(9),2,999) ; remainder of string
|
---|
| 71 | . S CWPADL=6-($L(CWP)#6) ; pad length
|
---|
| 72 | . I ($L(CWP)+CWPADL+$L(CWPR))>250 Q ;line is to long
|
---|
| 73 | . S CWTMP=CWP_$$REPEAT^XLFSTR(" ",CWPADL)_CWPR
|
---|
| 74 | Q CWTMP
|
---|
| 75 | ;
|
---|
| 76 | BLDNETI(CWXMZ,CWSUBJ) ;build network header information
|
---|
| 77 | ;From: <user@domain>
|
---|
| 78 | ;Subject:
|
---|
| 79 | ;Date: 9 Jul 1999 09:02:27 -0500 (EST)
|
---|
| 80 | ;X-Mailer: VISTA Mail
|
---|
| 81 | N CWCNT
|
---|
| 82 | I $L($$ZNODE^XMXUTIL2(CWXMZ)) D
|
---|
| 83 | . S ^XMB(3.9,CWXMZ,2,.001,0)="From: "_$$LOW^XLFSTR($G(XMV("NETNAME")))
|
---|
| 84 | . ;S ^XMB(3.9,CWXMZ,2,.002,0)="To:" ;refet to bldnetit api
|
---|
| 85 | . S ^XMB(3.9,CWXMZ,2,.003,0)="Subject: "_$G(CWSUBJ)
|
---|
| 86 | . S ^XMB(3.9,CWXMZ,2,.004,0)="Date:"_$$INDT^XMXUTIL1($$NOW^XLFDT)
|
---|
| 87 | . S ^XMB(3.9,CWXMZ,2,.005,0)="X-Mailer: Vista GuiMail" ;VISTA MAIL"
|
---|
| 88 | . S ^XMB(3.9,CWXMZ,2,.006,0)="Encoding: x-uuencode" ;X-UUENCODE"
|
---|
| 89 | . S CWCNT=.007
|
---|
| 90 | . D BLDNETIT(CWXMZ,.XMY,.CWCNT)
|
---|
| 91 | Q
|
---|
| 92 | BLDNETIT(CWXMZ,CWXMY,CWCTN) ; build To: section
|
---|
| 93 | ;Input - CWXMZ - Message Number
|
---|
| 94 | ; CWXMY - Array of Recipients
|
---|
| 95 | ; CWCTN - Counter
|
---|
| 96 | ;
|
---|
| 97 | N LP,CWINSTR,CWFULL,CWSET,CWTO,CWTO1,CWRHDR
|
---|
| 98 | K ^TMP($J,"CWNETH")
|
---|
| 99 | S CWINSTR("ADDR FLAGS")="RX"
|
---|
| 100 | S CWFLG=0,CWTO="To: ",CWTO1=" ",CWRHDR=""
|
---|
| 101 | S LP="" F S LP=$O(CWXMY(LP)) Q:LP="" D
|
---|
| 102 | . D TOWHOM^XMXAPI(XMDUZ,,"S",LP,.CWINSTR,.CWFULL)
|
---|
| 103 | . I $L($G(CWFULL)) D
|
---|
| 104 | . . I CWFULL'["@" D
|
---|
| 105 | . . .S CWFULL=$TR(CWFULL,", .","._+") ; set internet naming convention
|
---|
| 106 | . . .S CWFULL=CWFULL_"@"_$G(^XMB("NETNAME"))
|
---|
| 107 | . . I ($L(CWRHDR)+$L(CWFULL)+1)<140 D ;line not full
|
---|
| 108 | . . . S CWRHDR=CWRHDR_$S($L(CWRHDR)>0&($E(CWRHDR,$L(CWRHDR))'=","):",",1:"")_CWFULL
|
---|
| 109 | . . E D
|
---|
| 110 | . . . S ^TMP($J,"CWNETH",CWCTN)=CWRHDR
|
---|
| 111 | . . . S CWCTN=CWCTN+.001
|
---|
| 112 | . . . S CWRHDR=CWFULL
|
---|
| 113 | I $L(CWRHDR) S ^TMP($J,"CWNETH",CWCTN)=CWRHDR ;set remaining data
|
---|
| 114 | S LP=0 F S LP=$O(^TMP($J,"CWNETH",LP)) Q:LP<.001 D
|
---|
| 115 | . S ^XMB(3.9,CWXMZ,2,LP,0)=$S(CWFLG:" "_^TMP($J,"CWNETH",LP),1:"To: "_^TMP($J,"CWNETH",LP))
|
---|
| 116 | K ^TMP($J,"CWNETH") ;KILL TEMP GLOBAL BUFFER
|
---|
| 117 | Q
|
---|