Multiple e-mail attachments cause error with MSMAPI OCX control that is included in Visual FoxPro (181899)



The information in this article applies to:

  • Microsoft Visual FoxPro for Windows 3.0
  • Microsoft Visual FoxPro for Windows 3.0b
  • Microsoft Visual FoxPro for Windows 5.0
  • Microsoft Visual FoxPro for Windows 5.0a
  • Microsoft Visual FoxPro for Windows 6.0
  • Microsoft Visual FoxPro for Windows 7.0
  • Microsoft Visual FoxPro 8.0
  • Microsoft Visual FoxPro 9.0 Professional Edition

This article was previously published under Q181899

SYMPTOMS

When you attach multiple file attachments by using the MSMAPI32 OCX and you call the Send method, you receive the following error message:
OLE IDispatch exception code 0 from MAPIMessages: Unspecified Failure has occurred.

CAUSE

The AttachmentPosition property of the MAPIMessage control is not being incremented with each attachment. The AttachmentPosition property indicates the position of the attachment within the message. If two attachments occupy the same position, an error occurs when the MAPIMessage's Send method is called.

RESOLUTION

Change the AttachmentPosition for each attachment. In the code sample below, change the following section:
   *-- Attach the files.
   FOR lnCount = 1 TO ALEN(lcAttachment)
      oMessage.AttachmentIndex = lnCount - 1
      oMessage.AttachmentPathName = lcAttachment(lnCount)
   ENDFOR
				
The changes for the code are give below:
   *-- Attach the files.
   FOR lnCount = 1 TO ALEN(lcAttachment)
      oMessage.AttachmentIndex = lnCount - 1
      oMessage.AttachmentPathName = lcAttachment(lnCount)

      *-- We have to increment the AttachmentPosition because two
      *-- attachments cannot occupy the same space.
      *-- The AttachmentPosition dictates the character position of the
      *-- attachment, so stick them in after the message.
      oMessage.AttachmentPosition = lnCount - 1
   ENDFOR
				

STATUS

This behavior is by design.

MORE INFORMATION

Note This code works with version 6.00.8023 of the Msmapi32.ocx control. If an earlier version of this control is installed, an error occurs when setting the LogonUI property. The Msmapi.ocx version 1.0.2815 ships with Visual FoxPro version 5.0. This code runs under Visual FoxPro 5.0; however, the later version of the MSMAPI32 control must be installed and registered.

The AttachmentPosition property determines the character position of an attachment within a message. This value can be programmatically set to any position within the message body. However, since the number of attachments may be unknown, it would be easiest to increment the AttachmentPosition property one character for each attachment.

Steps to reproduce the behavior

  1. Place the following code in a program file and run the program:

          oSession = CREATEOBJECT("MSMapi.MapiSession")
          oMessage = CREATEOBJECT("MSMapi.MapiMessages")
    
          oSession.LogonUI = .t.
          oSession.SignOn
    
          *-- The message control needs to reference the session control's ID.
          oMessage.SessionID = oSession.SessionID
          oMessage.MsgIndex = -1
    
          *-- Set up our message and send it.
          oMessage.Compose
          oMessage.msgsubject = "Attachments sent using FoxPro and MAPI"
          oMessage.msgnotetext = "   Attached are some test files."
    
          *-- Create an array holding the attachment file names.
          DIMENSION lcAttachment(2)
          lcAttachment(1) = home()+ "samples\data\customer.dbf"
          lcAttachment(2) = home()+ "samples\data\customer.cdx"
    
          *-- Attach the files.
          FOR lnCount = 1 TO ALEN(lcAttachment)
             oMessage.AttachmentIndex = lnCount - 1
             oMessage.AttachmentPathName = lcAttachment(lnCount)
          ENDFOR
    
          *-- Send the message on its way.
          oMessage.send(1)
    								

  2. A dialog box displays the following message:
    OLE Idispatch exception code 0 from MAPIMessages: Unspecified Failure has occurred.

REFERENCES

For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

136638 How to send e-mail programmatically by using MSMAPI OLE control

COMCTL1.HLP Help; Topic: "AttachmentPosition Property"

Modification Type:MajorLast Reviewed:1/27/2005
Keywords:kbprb KB181899 kbAudDeveloper