Программа отправки почты с аттачментом из VB-приложения без привлечения почтовых программ.

'***************************************************************
'Windows API/Global Declarations for :SendMail
'***************************************************************
		
Source Code:
Note:This code is formatted to be pasted directly into VB.
Pasting it into other editors may or may not work.

'***************************************************************
' Name: SendMail
' Description:This routine Sends mail with attachment to anybody 
'     you specify
' By: Whatever
'
'
' Inputs:From : Sender (your profile)
To: Recipient


Subject: 


    Text: Text Body
    UI: 0=open Mail User Interfase
    Atta: Attachment (separated by ;)
'
' Returns:None
'
'Assumes:None
'
'Side Effects:Be aware of passing all the parameters with data 
'(atta is aptional)
'
'Code provided by Planet Source Code(tm) (http://www.PlanetSource
'     Code.com) 'as is', without warranties as to performance, fitness,
'     merchantability,and any other warranty (whether expressed or
'     implied).
'***************************************************************Sub MSnAB(FromName As String, ToName As String, Subject As String, _
 Text As String, UI As Integer, Atta As String)

    Dim Count As Integer
    Static Address(0 To 30) As String
    On Error Goto MAILERROR
    MAPIAUX.MSESS.UserName = FromName
    MAPIAUX.MSESS.SignOn
    MAPIAUX.MMSG.SessionID = MAPIAUX.MSESS.SessionID
    MAPIAUX.MMSG.Compose
    Call ParseAddress(ToName, Count, Address())


    For I = 0 To Count - 1
        MAPIAUX.MMSG.RecipIndex = I
        MAPIAUX.MMSG.RecipType = mapToList
        MAPIAUX.MMSG.RecipDisplayName = Address(I)
        MAPIAUX.MMSG.ResolveName
    Next I

    MAPIAUX.MMSG.MsgSubject = Subject
    MAPIAUX.MMSG.MsgNoteText = Text & Chr$(13)


    If Trim$(Atta)<> "" And Dir(Trim$(Atta)) <>"" Then
        MAPIAUX.MMSG.AttachmentIndex =MAPIAUX.MMSG.AttachmentCount
        MAPIAUX.MMSG.AttachmentType = 0
        MAPIAUX.MMSG.AttachmentPathName = Trim$(Atta)
        MAPIAUX.MMSG.AttachmentPosition = Len(Text)
    End If



    If UI <> 0 Then
        MAPIAUX.MMSG.Send
    Else
        MAPIAUX.MMSG.Send True
    End If

    MAPIAUX.MSESS.SignOff
    Exit Sub
    MAILERROR:
    c = Err
    B = Error$
    MsgBox " Mail Function Error " & Error$
    MAPIAUX.MSESS.SignOff
End Sub



Sub ParseAddress (ANames As String, Count As Integer, Addrs() As String)

    Dim CPos As Integer
    Dim VPos As Integer
    Dim SPos As Integer
    I = 0
    SPos = 1
    CPos = 0


    Do
        CPos = InStr(ANames, ";")
        If CPos = 0 Then VPos = Len(ANames) + 1 Else VPos = CPos
        Addrs(I) = Mid$(ANames, SPos, VPos - SPos)
        I = I + 1
        ANames = Right$(ANames, Len(ANames) - CPos)
    Loop While CPos > 0

    Count = I
End Sub