d2810
01-09-2006, 00:06
salve a tutti, dovrei inviare delle email (o a seconda dei casi salvarle in bozze)
il problema sta nell'utilizzo della dll mapi32.dll in particolar modo nel salvataggio nella cartella bozze,
riesco a inviare le imail (accodandole in posta in uscita grazie al seguente codice (VBA):
Modulo:
Option Compare Database
Option Explicit
Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As String
End Type
Type MAPIFileTag
Reserved As Long
TagLength As Long
Tag() As Byte
EncodingLength As Long
Encoding() As Byte
End Type
Type MapiFile
Reserved As Long
Flags As Long
Position As Long
PathName As String
FileName As String
FileType As MAPIFileTag
End Type
Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Originator As Long
Flags As Long
RecipCount As Long
Recipients As Long
Files As Long
FileCount As Long
End Type
Declare Function MAPISendMail _
Lib "c:\programmi\outlook express\msoe.dll" ( _
ByVal Session As Long, _
ByVal UIParam As Long, _
Message As MAPIMessage, _
ByVal Flags As Long, _
ByVal Reserved As Long) As Long
Sub SendMailWithOE(ByVal strSubject As String, ByVal strMessage As String, ByRef aRecips As Variant)
Dim Recips() As MapiRecip
Dim Message As MAPIMessage
Dim z As Long
ReDim Recips(LBound(aRecips) To UBound(aRecips))
For z = LBound(aRecips) To UBound(aRecips)
With Recips(z)
.RecipClass = 1
If InStr(aRecips(z), "@") <> 0 Then
.Address = StrConv(aRecips(z), vbFromUnicode)
Else
.Name = StrConv(aRecips(z), vbFromUnicode)
End If
End With
Next z
With Message
.NoteText = strMessage
.Subject = strSubject
.RecipCount = UBound(Recips) - LBound(aRecips) + 1
.Recipients = VarPtr(Recips(LBound(Recips)))
End With
MAPISendMail 0, 0, Message, 0, 0
End Sub
Richiamo Funzione:
Private Sub Comando0_Click()
Dim aRecips(0 To 0) As String
aRecips(0) = "t...@syspac.com"
SendMailWithOE "Send Mail Through OE", "Sure, you can, T*om!", aRecips
End Sub
se però sostituisco MAPISendMail con MAPISaveMail non riesco a farlo funzionare,
la mapi save mail la dichiaro così:
Declare Function MAPISaveMail _
Lib "c:\programmi\outlook express\msoe.dll" ( _
ByVal Session&, _
ByVal UIParam&, _
Message As MAPIMessage, _
Recipient() As MapiRecip, _
File() As MapiFile, _
ByVal Flags&, _
ByVal Reserved&, _
MsgID$) As Long
i parametri che per il momento ho provato sono:
MAPISaveMail 0, 0, Message, Recips(), 0, MAPI_NEW_SESSION, 0, vbNull
ma purtroppo mi da errore,
ho anche trovato questa documentazione che forse non riesco a applicare nella maniera giusta:
http://msdn.microsoft.com/library/default....e56366724e4.asp
se qualcuno può mi aiuti!! grazie sin da ora!
il problema sta nell'utilizzo della dll mapi32.dll in particolar modo nel salvataggio nella cartella bozze,
riesco a inviare le imail (accodandole in posta in uscita grazie al seguente codice (VBA):
Modulo:
Option Compare Database
Option Explicit
Type MapiRecip
Reserved As Long
RecipClass As Long
Name As String
Address As String
EIDSize As Long
EntryID As String
End Type
Type MAPIFileTag
Reserved As Long
TagLength As Long
Tag() As Byte
EncodingLength As Long
Encoding() As Byte
End Type
Type MapiFile
Reserved As Long
Flags As Long
Position As Long
PathName As String
FileName As String
FileType As MAPIFileTag
End Type
Type MAPIMessage
Reserved As Long
Subject As String
NoteText As String
MessageType As String
DateReceived As String
ConversationID As String
Originator As Long
Flags As Long
RecipCount As Long
Recipients As Long
Files As Long
FileCount As Long
End Type
Declare Function MAPISendMail _
Lib "c:\programmi\outlook express\msoe.dll" ( _
ByVal Session As Long, _
ByVal UIParam As Long, _
Message As MAPIMessage, _
ByVal Flags As Long, _
ByVal Reserved As Long) As Long
Sub SendMailWithOE(ByVal strSubject As String, ByVal strMessage As String, ByRef aRecips As Variant)
Dim Recips() As MapiRecip
Dim Message As MAPIMessage
Dim z As Long
ReDim Recips(LBound(aRecips) To UBound(aRecips))
For z = LBound(aRecips) To UBound(aRecips)
With Recips(z)
.RecipClass = 1
If InStr(aRecips(z), "@") <> 0 Then
.Address = StrConv(aRecips(z), vbFromUnicode)
Else
.Name = StrConv(aRecips(z), vbFromUnicode)
End If
End With
Next z
With Message
.NoteText = strMessage
.Subject = strSubject
.RecipCount = UBound(Recips) - LBound(aRecips) + 1
.Recipients = VarPtr(Recips(LBound(Recips)))
End With
MAPISendMail 0, 0, Message, 0, 0
End Sub
Richiamo Funzione:
Private Sub Comando0_Click()
Dim aRecips(0 To 0) As String
aRecips(0) = "t...@syspac.com"
SendMailWithOE "Send Mail Through OE", "Sure, you can, T*om!", aRecips
End Sub
se però sostituisco MAPISendMail con MAPISaveMail non riesco a farlo funzionare,
la mapi save mail la dichiaro così:
Declare Function MAPISaveMail _
Lib "c:\programmi\outlook express\msoe.dll" ( _
ByVal Session&, _
ByVal UIParam&, _
Message As MAPIMessage, _
Recipient() As MapiRecip, _
File() As MapiFile, _
ByVal Flags&, _
ByVal Reserved&, _
MsgID$) As Long
i parametri che per il momento ho provato sono:
MAPISaveMail 0, 0, Message, Recips(), 0, MAPI_NEW_SESSION, 0, vbNull
ma purtroppo mi da errore,
ho anche trovato questa documentazione che forse non riesco a applicare nella maniera giusta:
http://msdn.microsoft.com/library/default....e56366724e4.asp
se qualcuno può mi aiuti!! grazie sin da ora!