Rocket Software Homepage
Forum Home Forum Home > AccuTerm Knowledge Base (read only) > Code Samples
  New Posts New Posts RSS Feed - Outlook Express
  FAQ FAQ  Forum Search   Register Register  Login Login

The AccuTerm forum has moved. Go to community.rocketsoftware.com to register for the new Rocket forum.

Forum LockedOutlook Express

 Post Reply Post Reply
Author
Message
piotr View Drop Down
Beta Tester
Beta Tester


Joined: March 05 2005
Location: Poland
Status: Offline
Points: 37
Post Options Post Options   Thanks (0) Thanks(0)   Quote piotr Quote  Post ReplyReply Direct Link To This Post Topic: Outlook Express
    Posted: August 26 2009 at 2:31am
I use a subroutine supplied within Accuterm to compose and send mails via Outlook Express. Changing the 4th parameter in MAPISendMail one can make the program either to send mail automatically (a need to confirm which can be avoided using a 3rd party program) or setting it to an 8 then the composed mail is displayed for inspection, ready for sending.

SCRIPT = SCRIPT : 'rc = MAPISendMail(0, 0, msg, 0, 0)' : EM; * unattended (almost)

SCRIPT = SCRIPT : 'rc = MAPISendMail(0, 0, msg, 8, 0)' : EM; * mail displayed by OE

SUBROUTINE AT.SEND.EMAIL2(ADDRESS, SUBJECT, MESSAGE, ATTACH)

   * 05/14/01 02:00PM
   * ADDRESS: recipient's email address
   * SUBJECT: one-line email subject
   * MESSAGE: multi-line email message (lines separated by AM)
   * ATTACH:   optional attachment file name
   EQU AM TO CHAR(254), VM TO CHAR(253), SVM TO CHAR(252)
   EQU ESC TO CHAR(27), STX TO CHAR(2), CR TO CHAR(13)
   EQU EM TO CHAR(25)
   RECIP.CNT = DCOUNT(ADDRESS, AM)
   ATTACH.CNT = DCOUNT(ATTACH, AM)
   *
   SCRIPT = ''
   SCRIPT = SCRIPT : 'SendMessage' : EM
   SCRIPT = SCRIPT : 'End Sub' : EM
   SCRIPT = SCRIPT : 'Type MapiMessage' : EM
   SCRIPT = SCRIPT : 'Reserved As Long' : EM
   SCRIPT = SCRIPT : 'Subject As String' : EM
   SCRIPT = SCRIPT : 'NoteText As String' : EM
   SCRIPT = SCRIPT : 'MessageType As String' : EM
   SCRIPT = SCRIPT : 'DateReceived As String' : EM
   SCRIPT = SCRIPT : 'ConversationID As String' : EM
   SCRIPT = SCRIPT : 'Flags As Long' : EM
   SCRIPT = SCRIPT : 'Originator As Long' : EM
   SCRIPT = SCRIPT : 'RecipCount As Long' : EM
   SCRIPT = SCRIPT : 'Recipients As Long' : EM
   SCRIPT = SCRIPT : 'FileCount As Long' : EM
   SCRIPT = SCRIPT : 'Files As Long' : EM
   SCRIPT = SCRIPT : 'End Type' : EM
   SCRIPT = SCRIPT : 'Type MapiRecip' : EM
   SCRIPT = SCRIPT : 'Reserved As Long' : EM
   SCRIPT = SCRIPT : 'RecipClass As Long' : EM
   SCRIPT = SCRIPT : 'Name As String' : EM
   SCRIPT = SCRIPT : 'Address As String' : EM
   SCRIPT = SCRIPT : 'EIDSize As Long' : EM
   SCRIPT = SCRIPT : 'EntryID As String' : EM
   SCRIPT = SCRIPT : 'End Type' : EM
   SCRIPT = SCRIPT : 'Type MapiFile' : EM
   SCRIPT = SCRIPT : 'Reserved As Long' : EM
   SCRIPT = SCRIPT : 'Flags As Long' : EM
   SCRIPT = SCRIPT : 'Position As Long' : EM
   SCRIPT = SCRIPT : 'PathName As String' : EM
   SCRIPT = SCRIPT : 'FileName As String' : EM
   SCRIPT = SCRIPT : 'FileType As String' : EM
   SCRIPT = SCRIPT : 'End Type' : EM
   SCRIPT = SCRIPT : 'Declare Function MAPISendMail Lib "MAPI32.DLL"'
   SCRIPT = SCRIPT : ' (ByVal Session&, ByVal UIParam&,'
   SCRIPT = SCRIPT : ' Message As MapiMessage, ByVal Flags&,'
   SCRIPT = SCRIPT : ' ByVal Reserved&) As Long' : EM
   SCRIPT = SCRIPT : 'Sub SendMessage()' : EM
   SCRIPT = SCRIPT : 'Dim rc As Long' : EM
   SCRIPT = SCRIPT : 'Dim msg As MapiMessage' : EM
   IF RECIP.CNT = 1 THEN
      SCRIPT = SCRIPT : 'Dim recip As MapiRecip' : EM
   END ELSE
      SCRIPT = SCRIPT : 'Dim recip(':RECIP.CNT - 1:') as MapiRecip' :EM
   END
   IF ATTACH <> "" THEN
      IF ATTACH.CNT = 1 THEN
        SCRIPT = SCRIPT : 'Dim attach As MapiFile' : EM
      END ELSE
        SCRIPT = SCRIPT : 'Dim attach(': ATTACH.CNT - 1:') as MapiFile': EM
      END
   END
   SCRIPT = SCRIPT : 'Dim body As String' : EM
   IF RECIP.CNT = 1 THEN
      SCRIPT = SCRIPT : 'recip.Name = StrConv("' : FIELD(ADDRESS,'@',1) : '",vbFromUnicode)' : EM
      SCRIPT = SCRIPT : 'recip.Address = StrConv("smtp:' : ADDRESS : '", vbFromUnicode)' : EM
      SCRIPT = SCRIPT : 'recip.RecipClass = 1' : EM
   END ELSE
      FOR I=1 TO RECIP.CNT
        SCRIPT = SCRIPT : 'recip(':I-1:').Name = StrConv("' : ADDRESS<I> : '",vbFromUnicode)' : EM
        SCRIPT = SCRIPT : 'recip(':I-1:').Address = StrConv("smtp:' : ADDRESS<I> : '", vbFromUnicode)' : EM
        SCRIPT = SCRIPT : 'recip(':I-1:').RecipClass = 1' : EM
      NEXT I
   END
   IF ATTACH <> '' THEN
      IF ATTACH.CNT = 1 THEN
        SCRIPT = SCRIPT : 'attach.Position = -1' : EM
        SCRIPT = SCRIPT : 'attach.Pathname = StrConv("' : ATTACH : '",vbFromUnicode)' : EM
      END ELSE
        FOR I = 1 TO ATTACH.CNT
            SCRIPT = SCRIPT : 'attach(':I-1:').Position = -1' : EM
            SCRIPT = SCRIPT : 'attach(':I-1:').Pathname = StrConv("' : ATTACH<I> : '",vbFromUnicode)' : EM
        NEXT I
      END
   END
   ARG = SUBJECT; GOSUB 100
   SCRIPT = SCRIPT : 'msg.Subject = "' : ARG : '"' : EM
   ARG = MESSAGE; GOSUB 100
   SCRIPT = SCRIPT : 'Body = "' : ARG<1> : '"' : EM
   N = DCOUNT(ARG, AM)
   FOR I = 2 TO N
      SCRIPT = SCRIPT : 'Body = Body & Chr$(13) & Chr$(10) & "' : ARG<I> : '"' : EM
   NEXT I
   SCRIPT = SCRIPT : 'msg.NoteText = Body' : EM
   SCRIPT = SCRIPT : 'msg.RecipCount = ':RECIP.CNT : EM
   IF RECIP.CNT = 1 THEN
      SCRIPT = SCRIPT : 'msg.Recipients = VarPtr(recip)' : EM
   END ELSE
      SCRIPT = SCRIPT : 'msg.Recipients = VarPtr(recip(0))' : EM
   END
   IF ATTACH <> '' THEN
      SCRIPT = SCRIPT : 'msg.FileCount = ':ATTACH.CNT : EM
      If ATTACH.CNT = 1 THEN
        SCRIPT = SCRIPT : 'msg.Files = VarPtr(attach)' : EM
      END ELSE
        SCRIPT = SCRIPT : 'msg.Files = VarPtr(attach(0))' : EM
      END
   END
   SCRIPT = SCRIPT : 'rc = MAPISendMail(0, 0, msg, 0, 0)' : EM
*   SCRIPT = SCRIPT : 'rc = MAPISendMail(0, 0, msg, 8, 0)' : EM; * DIALOGUE WINDOW
   SCRIPT = SCRIPT : 'If rc <> 0 Then' : EM
   SCRIPT = SCRIPT : 'MsgBox "Email failed; code = " & CStr(rc)' : EM
   SCRIPT = SCRIPT : 'End If'
   *
   PRINT ESC : STX : 'P' : SCRIPT : CR :
   RETURN
   *

100 * Local subroutine to fixup embedded double-quote marks
   K = 1
   LOOP
      J = INDEX(ARG, '"', K)
   WHILE J DO
      ARG = ARG[1, J] : ARG[J, 99999]
      K = K + 2
   REPEAT
   RETURN
END
Back to Top
piotr View Drop Down
Beta Tester
Beta Tester


Joined: March 05 2005
Location: Poland
Status: Offline
Points: 37
Post Options Post Options   Thanks (0) Thanks(0)   Quote piotr Quote  Post ReplyReply Direct Link To This Post Posted: September 07 2009 at 10:26pm
Can somebody help me with the following:
I am using the code from my previous message (in the unattended mode) to send mails with Outlook Express. It works but the "DATE:" header is not being generated. It is a serious drawback because in some mail readers it is either required and the missing date may cause to
qualify a message as spam or a blank space is left in the date column. How to force MapiSendMail to add DATE: header within this script?

TIA

Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.03
Copyright ©2001-2019 Web Wiz Ltd.