| [613] | 1 | XMS2 ;ISC-SF/GMB-SMTP Send (non-standard) ;04/25/2002  14:14
 | 
|---|
 | 2 |  ;;8.0;MailMan;;Jun 28, 2002
 | 
|---|
 | 3 | NONSTD(XMNETNAM,XMZ,XMZREC,XMRZ,XMRSET) ; Non-Standard commands,
 | 
|---|
 | 4 |  ; used only when communicating with other MailMan sites.
 | 
|---|
 | 5 |  I $O(^XMB(3.9,XMZ,2005,0)),XMC("MAILMAN")>7 D  Q:ER
 | 
|---|
 | 6 |  . N XMBLOBER ; Send other Body parts
 | 
|---|
 | 7 |  . S XMBLOBER=0
 | 
|---|
 | 8 |  . D ^XMS0BLOB
 | 
|---|
 | 9 |  . I XMBLOBER S ER=1,ER("NONFATAL")=1
 | 
|---|
 | 10 |  D MESSID(XMNETNAM,XMZ,.XMRZ,.XMRSET) Q:ER!$G(XMRSET)
 | 
|---|
 | 11 |  I XMC("MAILMAN")<8 D  Q:ER
 | 
|---|
 | 12 |  . D SPECIAL(XMZREC) Q:ER
 | 
|---|
 | 13 |  E  D  Q:ER
 | 
|---|
 | 14 |  . D LINES Q:ER!$G(XMRSET)
 | 
|---|
 | 15 |  Q
 | 
|---|
 | 16 | MESSID(XMNETNAM,XMZ,XMRZ,XMRSET) ;
 | 
|---|
 | 17 |  ; This is a head's up on which message is being sent, and allows the
 | 
|---|
 | 18 |  ; receiving site to say, "don't bother, I've already received it long
 | 
|---|
 | 19 |  ; ago and it's already been purged." or "I've already got it, so don't
 | 
|---|
 | 20 |  ; bother sending the text again, but maybe you've got some new
 | 
|---|
 | 21 |  ; recipients for me."
 | 
|---|
 | 22 |  ; Send: "MESS ID:654321@LOCAL.MED.VA.GOV"
 | 
|---|
 | 23 |  ; Recv: "250 OK"
 | 
|---|
 | 24 |  ;   or: "RSET :21212@REMOTE.MED.VA.GOV:Duplicate purged"
 | 
|---|
 | 25 |  ;   or: "RSET :21212@REMOTE.MED.VA.GOV:Previously received"
 | 
|---|
 | 26 |  N XMREMID
 | 
|---|
 | 27 |  S XMREMID=$$NETID^XMS3(XMZ)
 | 
|---|
 | 28 |  I XMREMID="" D  Q
 | 
|---|
 | 29 |  . ; *** Maybe the thing to do here is to just assign it a net id
 | 
|---|
 | 30 |  . ; *** and go on our merry way.
 | 
|---|
 | 31 |  . D ERTRAN^XMC1(42357) ;Msg transmit aborted - remote msg with no remote msg ID
 | 
|---|
 | 32 |  . S ER("NONFATAL")=1
 | 
|---|
 | 33 |  . D DOTRAN^XMC1("")
 | 
|---|
 | 34 |  . N XMPARM,XMINSTR
 | 
|---|
 | 35 |  . S XMINSTR("FROM")="POSTMASTER"
 | 
|---|
 | 36 |  . S XMPARM(1)=XMZ
 | 
|---|
 | 37 |  . D TASKBULL^XMXBULL(.5,"XM SEND ERR REMOTE MSG ID",.XMPARM,"",.5,.XMINSTR)
 | 
|---|
 | 38 |  S XMSG="MESS ID:"_XMREMID X XMSEN Q:ER
 | 
|---|
 | 39 |  X XMREC Q:ER
 | 
|---|
 | 40 |  I $E(XMRG,1,4)="RSET" S XMRSET=1,XMRZ=$P(XMRG,":",2) Q
 | 
|---|
 | 41 |  Q
 | 
|---|
 | 42 | LINES ; If message is at least 1000 lines, and it's not a PackMan message,
 | 
|---|
 | 43 |  ; let the other site know.  If the other site says it's too many lines,
 | 
|---|
 | 44 |  ; we don't have to bother with the text.
 | 
|---|
 | 45 |  N XMLINES
 | 
|---|
 | 46 |  S XMLINES=$$LINE^XMXUTIL2(XMZ) Q:XMLINES<1000
 | 
|---|
 | 47 |  Q:$$PAKMAN^XMXSEC1(XMZ)
 | 
|---|
 | 48 |  S XMSG="MESS LINES:"_XMLINES X XMSEN Q:ER
 | 
|---|
 | 49 |  X XMREC Q:ER
 | 
|---|
 | 50 |  I $E(XMRG,1,4)="RSET" S XMRSET=1 Q
 | 
|---|
 | 51 |  Q
 | 
|---|
 | 52 | SPECIAL(XMZREC) ; Special message characteristics
 | 
|---|
 | 53 |  ;I 'XMC("MAILMAN") D CHEKSPEC(XMINST,XMSITE,XMZ,XMZREC,XMNVFROM) Q
 | 
|---|
 | 54 |  N I
 | 
|---|
 | 55 |  S I=7 I $P(XMZREC,U,I)'="" D SPECSEND(I,$P(XMZREC,U,I)) Q:ER
 | 
|---|
 | 56 |  Q:ER
 | 
|---|
 | 57 |  F I=5,9,11,12 I "^Y^y^"[(U_$P(XMZREC,U,I)_U) D SPECSEND(I,$P(XMZREC,U,I)) Q:ER
 | 
|---|
 | 58 |  Q:ER
 | 
|---|
 | 59 |  Q
 | 
|---|
 | 60 | SPECSEND(I,XMVAL) ;
 | 
|---|
 | 61 |  S XMSG="MESS "_$P("^^^^CONFIRMATION^^TYPE^^CLOSED^^CONFIDENTIAL^INFO",U,I)_":"_XMVAL X XMSEN Q:ER
 | 
|---|
 | 62 |  X XMREC
 | 
|---|
 | 63 |  Q
 | 
|---|
 | 64 |  ; *** The following is not used ***
 | 
|---|
 | 65 | CHEKSPEC(XMINST,XMSITE,XMZ,XMZREC,XMNVFROM) ; If special VA-only instructions exist, send msg to user
 | 
|---|
 | 66 |  N I,XMSPEC
 | 
|---|
 | 67 |  F I=6,7 I $P(XMZREC,U,I)'="" D SPECSET(I,.XMSPEC)
 | 
|---|
 | 68 |  F I=5,9,11,12 I "^Y^y^"[(U_$P(XMZREC,U,I)_U) D SPECSET(I,.XMSPEC)
 | 
|---|
 | 69 |  Q:'$D(XMSPEC)
 | 
|---|
 | 70 |  N XMTEXT,J,XMINSTR,XMTO,XMIEN
 | 
|---|
 | 71 |  S XMINSTR("FROM")="POSTMASTER"
 | 
|---|
 | 72 |  S I=0
 | 
|---|
 | 73 |  S I=I+1,XMTEXT(I)="Your message to "_XMSITE_","
 | 
|---|
 | 74 |  S I=I+1,XMTEXT(I)="Subject: "_$P(XMZREC,U,1)_" ["_XMZ_"]"
 | 
|---|
 | 75 |  S I=I+1,XMTEXT(I)="will not include any special instructions, since that site"
 | 
|---|
 | 76 |  S I=I+1,XMTEXT(I)="is running a very old MailMan version: "_XMC("MAILMAN")
 | 
|---|
 | 77 |  S I=I+1,XMTEXT(I)=""
 | 
|---|
 | 78 |  S I=I+1,XMTEXT(I)="The special instructions to be ignored are:"
 | 
|---|
 | 79 |  S I=I+1,XMTEXT(I)=""
 | 
|---|
 | 80 |  S J=""
 | 
|---|
 | 81 |  F  S J=$O(XMSPEC(J)) Q:J=""  S I=I+1,XMTEXT(I)="   "_J
 | 
|---|
 | 82 |  S XMIEN=""
 | 
|---|
 | 83 |  F  S XMIEN=$O(^XMB(3.9,XMZ,1,"AQUEUE",XMINST,XMIEN)) Q:XMIEN=""  S XMTO($$SENDER^XMS3(XMZ,XMZREC,XMNVFROM,XMIEN))=""
 | 
|---|
 | 84 |  D SENDMSG^XMXSEND(.5,"Special Instructions Ignored","XMTEXT",.XMTO,.XMINSTR)
 | 
|---|
 | 85 |  Q
 | 
|---|
 | 86 | SPECSET(I,XMSPEC) ;
 | 
|---|
 | 87 |  S XMSPEC($P("^^^^CONFIRMATION request^VAPORIZE date^TYPE^^CLOSED status^^CONFIDENTIAL status^INFO status",U,I))=""
 | 
|---|
 | 88 |  Q
 | 
|---|