Microsoft KB Archive/138534

= VB3: How to Send Attachment & Show Image Using Msmapi.vbx =

Article ID: 138534

Article Last Modified on 11/3/2003

-

APPLIES TO


 * Microsoft Visual Basic 3.0 Professional Edition
 * Microsoft Visual Basic 3.0 Professional Edition

-



This article was previously published under Q138534



SUMMARY
This article shows by example how to send a message with an attachment, where the attachment is the actual document (not an icon) and the object is visible in the body of the message. This can be accomplished using the MAPI controls supplied in Visual Basic 3.0.



MORE INFORMATION
Sending an attachment with a message using the MAPI custom controls is easy. You should first establish your MAPI Connection, and then go into Compose mode. For more information about this process, please see the following article in the Microsoft Knowledge Base:

113033 VB3: How to Send a Mail Message Using Visual Basic MAPI Controls

You would then start setting properties for the MAPI Messages control. The code for attaching a file follows: Form1.MapiMessages1.AttachmentPathName = "C:\WINNT35\ARCADE.BMP" Form1.MapiMessages1.AttachmentName = "ARCADE.BMP" Form1.MapiMessages1.AttachmentType = 2 ' ATTACHTYPE_SOLE an SOLE is a                                           ' static OLE object attachment This code sends the attachment with the rest of the message, but the attachment shows up within the message body as an icon. In order to view the actual data, you must double-click the icon and start the necessary application, which may not be what you need.

Step-by-Step Example to Send True Image of Attachment Within Message Body
The following example shows how to send the attachment within the message body and have it display as its true image. (Please note that the code below was created using MSMail as the mail client.)

 Create a new project in Visual Basic. Form1 is created by default.  Place the following controls on Form1:   Control                 Name OLE Control            OLE1 MAPI Session Control   MapiSession1 MAPI Messages Control  MapiMessages1 One Command Button     saveOLE One Command Button     sendMessage   Add the following code to the general declarations section of Form1: Dim vstAttachedOLEFile As String

'MAPI constants from CONSTANT.TXT file: Const ATTACHTYPE_DATA = 0 Const ATTACHTYPE_EOLE = 1 Const MESSAGE_COMPOSE = 6 Const MESSAGE_RESOLVENAME = 13 Const MESSAGE_SEND = 3 Const OLE_SAVE_TO_OLE1FILE = 18 Const RECIPTYPE_TO = 1 Const SESSION_SIGNON = 1 Const SESSION_SIGNOFF = 2   Add the following code to the appropriate event procedures: Sub saveOLE_Click

Dim iFileNum As Integer

' Get a free file handle iFileNum = FreeFile

' So it won't raise an error if the file doesn't exist, disable error ' checking. On Error Resume Next vstAttachedOLEFile = "c:\temp\test.bmp" Kill vstAttachedOLEFile On Error GoTo 0

' Set the SourceDoc property to the file you want to attach to the ' message. OLE1.SourceDoc = "C:\winnt35\arcade.bmp"

' Embed the file in the OLE control OLE1.Action = 0 DoEvents

' Open the file that will contain the OLE 1.0 compliant object ' information. Open vstAttachedOLEFile For Binary As #iFileNum OLE1.FileNumber = iFileNum

' Save the object as an OLE 1.0 compliant object. OLE1.Action = OLE_SAVE_TO_OLE1FILE

Close iFileNum

End Sub

Sub sendMessage_Click

' Open up a MAPI session: MapiSession1.Action = SESSION_SIGNON

' Point the MAPI messages control to the open MAPI session: MapiMessages1.SessionID = form1.MapiSession1.SessionID

' Start a new message MapiMessages1.Action = MESSAGE_COMPOSE

' Set the subject of the message: MapiMessages1.MsgSubject = "This is the subject."

' Set the message content: MapiMessages1.MsgNoteText = "      This is the mail message."

form1.MapiMessages1.AttachmentIndex = _ form1.MapiMessages1.AttachmentCount form1.MapiMessages1.AttachmentPathName = vstAttachedOLEFile form1.MapiMessages1.AttachmentName = vstAttachedOLEFile form1.MapiMessages1.AttachmentType = ATTACHTYPE_EOLE form1.MapiMessages1.AttachmentPosition = 1

' Set the recipient type. RECIPTYPE_TO sends message to recipient: MapiMessages1.RecipType = RECIPTYPE_TO

' Set the recipient's E-Mail name. ' You can have multiple recipients separated by semicolons ' Change to a valid e-mail name MapiMessages1.RecipDisplayName = "joecool"

' MESSAGE_RESOLVENAME checks to ensure the recipient is valid and ' puts the recipient address in MapiMessages1.RecipAddress ' If the E-Mail name is not valid, a trappable error will occur. MapiMessages1.Action = MESSAGE_RESOLVENAME

' Send the message: MapiMessages1.Action = MESSAGE_SEND

' Close MAPI mail session: MapiSession1.Action = SESSION_SIGNOFF

End Sub 

NOTE: When Microsoft Mail was originally developed, the OLE 1.0 standard was still predominant. This is why the object must be saved into this version of an OLE object.

Additional query words: 3.00 send

Keywords: KB138534

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.