Newsgroup: it.comp.appl.access
Titolo: La saga continua: Email non creata con MSOE

Siamo al terzo o quarto sequel della saga.
In una galassia lontana i ribelli volevano inviare un report personalizzato 
scorrendo una tabella: n mail con n allegati dello stesso report ma con dati 
diversi
Il problema dell'invio del report in PDF � stato risolto con Lebans.
Modificato l'OutputTo con "Snapshot Format" per il noto bug
l'invio delle mail viene effettuato con la funzione Invia_MSOE che usa 
MSOE.DLL e che si trova anche sul sito comune.
Ebbene, mando in giro il tool, un paio mi dicono che funziona perfettamente, 
anche quello che mi aveva segnalato il problema del formato sconosciuto.
Adesso mi contatta uno e mi dice
- con access 2003 (cos� � stato fatto il tool) i PDF vengono creati e 
salvati (come da codice lebans) ma poi non viene spedita la mail e gli d� 
messaggio "Email non creata"
- prova anche con Access 2007 e Win7 e crea i PDF ma non manda mail n� d� 
messaggi di errore
Mo' che � sta roba? Perch� il lato oscuro di Access continua a pervadere 
'sta benedetta applicazione?
Grazie per le risposte
Antonio
P.S.
Ancora una volta i problemi nella divulgazione di tool � nel diverso 
comportamento dello stesso in ambienti diversi, ecchecavolo!!! O funzioni, o 
non funzioni, ufffffffffffffffffff

 non funzioni, ufffffffffffffffffff
Non che possa risolverti il problema. Io uso un altro sistema 
(Lebans+CDO) e non che access abbia bisogno di essere difeso dal 
sottoscritto.
Mi sembra, non vorrei dire come al solito, che si confonde la mappa con 
il territorio.
Spiegazione attraverso una simil(itudine)metafora.
"Ovvaiamente" per te se imbuchi una lettera (classica buca lettere) e 
quella non arriva e' colpa della buca (ovvio, Watson!)
-- 
ac (x=y-1)


su win7 non c'ï¿œ outlook express...quindi li sicuro non ti funziona.
sicuro che non usino altri client di posta i clienti dove non funziona?
perchï¿œ non usi MAPI per inviare mail.
a me non da alcun problema ne con outlook express ne con windows live 
mail e ne con thunderbird.
Con ms outlook invece mi da problemi solo con Outlook 2010, per il quale 
ho usato direttamente le librerie outlook per l'invio.
ciao
BFS

Il 03/08/2011 10.02, Alessandro Cara ha scritto:
P.S. Magari la buca che hai usato e' il cassonetto dell'immondizia  ;-{)
-- 
ac (x=y-1)


Riporto una parte del msg accorato:
Ti premetto che ho fatto la prova sia su win xp che win 7 avendo in entrambi 
i casi outlook in esecuzione
mo', questo � un utente discretamente esperto quindi ho dato per scontato la 
bont� di quello che mi scrive
cmq, tralasciando win7, manco con winxp funziona
MAPI che vol di?
cio�... posso mandare mail da codice passando A CC BCC Allegati subject e 
testo?
Antonio 

 quella non arriva e' colpa della buca (ovvio, Watson!)
ma mica t'ho capito dove vuoi metaforicamente arrivare eh...
se da me funziona, da 3 persone diverse funziona, alla quinta non funziona, 
� ovvio che dipende da qualcosa di diverso che ha la quinta persona, ma non 
mi sta bene, perch� se scrivo una cosa che "apparentemente" ha insito tutto 
quello che gli serve per il funzionamento, deve funzionare, non pu� rompermi 
le palle e costringermi a trovare quel pelucco ficcato chiss� dove, non va 
bene per niente!!!
per la cronaca ho provato anche a fargli mettere il benedetto MAPIX=1 su 
win.ini ma niente
e ripeto
UFFFFFFFFFFFFFFFFFFFFFFFFFFF
Antonio 

>
Aggiungo poi una cosa:
sto tipo stesso ambiente usava la release precedente che mandava gli snp, ma 
non � tanto questo, quanto che invece di mandare con invia_msoe mandavo col 
classico sendobject (che aveva l'allegato residente)
quindi sendobject funzionava, msoe non funziona
Antonio 


creati un modulo di classe chiamato clsMAPISendMail
incollaci dentro:
Option Compare Database
Option Explicit
Public Enum eMAPIRecipient
     MAPI_TO = 1
     MAPI_CC = 2
     MAPI_BCC = 3
End Enum
Private Enum eMAPIErrors
     SUCCESS_SUCCESS
     MAPI_USER_ABORT
     MAPI_E_FAILURE
     MAPI_E_LOGIN_FAILURE
     MAPI_E_DISK_FULL
     MAPI_E_INSUFFICIENT_MEMORY
     MAPI_E_ACCESS_DENIED
     MAPI_E_TOO_MANY_SESSIONS
     MAPI_E_TOO_MANY_FILES
     MAPI_E_TOO_MANY_RECIPIENTS
     MAPI_E_ATTACHMENT_NOT_FOUND
     MAPI_E_ATTACHMENT_OPEN_FAILURE
     MAPI_E_ATTACHMENT_WRITE_FAILURE
     MAPI_E_UNKNOWN_RECIPIENT
     MAPI_E_BAD_RECIPTYPE
     MAPI_E_NO_MESSAGES
     MAPI_E_INVALID_MESSAGE
     MAPI_E_TEXT_TOO_LARGE
     MAPI_E_INVALID_SESSION
     MAPI_E_TYPE_NOT_SUPPORTED
     MAPI_E_AMBIGUOUS_RECIPIENT
     MAPI_E_MESSAGE_IN_USE
     MAPI_E_NETWORK_FAILURE
     MAPI_E_INVALID_EDITFIELDS
     MAPI_E_INVALID_RECIPS
     MAPI_E_NOT_SUPPORTED
End Enum
Private Type MAPIRecip
     Reserved As Long
     RecipClass As Long
     Name As String
     Address As String
     EIDSize As Long
     EntryID As String
End Type
Private Type MAPIFile
     Reserved As Long
     flags As Long
     Position As Long
     PathName As String
     FileName As String
     FileType As Long
End Type
Private 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
     FileCount As Long
     Files As Long
End Type
' Message Flags
'Private Const MAPI_RECEIPT_REQUESTED = 2
Private Const MAPI_DIALOG = &H8
' Session flags
Private Const MAPI_LOGON_UI = &H1
'Private Const MAPI_NEW_SESSION = &H2
Private Const MAPI_PASSWORD_UI = &H20000
Private Declare Function MAPILogon Lib "MAPI32.DLL" (ByVal UIParam As 
Long, ByVal User As String, ByVal Password As String, ByVal flags As 
Long, ByVal Reserved As Long, ByRef Session As Long) As Long
Private Declare Function MAPILogoff Lib "MAPI32.DLL" (ByVal Session As 
Long, ByVal UIParam As Long, ByVal flags As Long, ByVal Reserved As 
Long) As Long
Private Declare Function MAPISendMail Lib "MAPI32.DLL" (ByVal Session As 
Long, ByVal UIParam As Long, ByRef message As MAPIMessage, ByVal flags 
As Long, ByVal Reserved As Long) As Long
Private m_Attachments() As MAPIFile
Private m_AttachmentsCount As Long
Private m_Message As MAPIMessage
Private m_Recipients() As MAPIRecip
Private m_RecipientsCount As Long
Private m_SendImmediately As Boolean
Private m_SessionID As Long
Public Property Get AttachmentsCount() As Long
     AttachmentsCount = m_AttachmentsCount
End Property
Public Property Get RecipientsCount() As Long
     RecipientsCount = m_RecipientsCount
End Property
Public Property Get SendImmediately() As Boolean
     SendImmediately = m_SendImmediately
End Property
Public Property Let SendImmediately(ByVal newValue As Boolean)
     m_SendImmediately = newValue
End Property
Public Property Get SessionID() As Long
     SessionID = m_SessionID
End Property
Public Property Get Body() As String
     Body = m_Message.NoteText
End Property
Public Property Let Body(ByVal newValue As String)
     m_Message.NoteText = newValue
End Property
Public Property Get Subject() As String
     Subject = m_Message.Subject
End Property
Public Property Let Subject(ByVal newValue As String)
     m_Message.Subject = newValue
End Property
Public Sub AddRecipient(ByVal RecipType As eMAPIRecipient, ByVal Name As 
String, ByVal Address As String)
     Dim udtRecip As MAPIRecip
     With udtRecip
         .RecipClass = RecipType
         If Len(Name) > 0 Then .Name = StrConv(Name, vbFromUnicode)
         If Len(Address) > 0 Then .Address = StrConv(Address, vbFromUnicode)
     End With
     ReDim Preserve m_Recipients(m_RecipientsCount)
     m_Recipients(m_RecipientsCount) = udtRecip
     m_RecipientsCount = m_RecipientsCount + 1
End Sub
Public Sub AddTo(ByVal Name As String, ByVal Address As String)
     Call AddRecipient(MAPI_TO, Name, Address)
End Sub
Public Sub AddCC(ByVal Name As String, ByVal Address As String)
     Call AddRecipient(MAPI_CC, Name, Address)
End Sub
Public Sub AddBCC(ByVal Name As String, ByVal Address As String)
     Call AddRecipient(MAPI_BCC, Name, Address)
End Sub
Public Sub Clear()
     Erase m_Recipients
     Erase m_Attachments
     m_RecipientsCount = 0
     m_AttachmentsCount = 0
End Sub
Public Sub FileAdd(ByVal PathName As String)
     Dim udtFile As MAPIFile
     udtFile.PathName = StrConv(PathName, vbFromUnicode)
     ReDim Preserve m_Attachments(m_AttachmentsCount)
     m_Attachments(m_AttachmentsCount) = udtFile
     m_AttachmentsCount = m_AttachmentsCount + 1
End Sub
Public Function Send() As Long
     Dim lngFlags As Long
     Send = MAPI_E_INVALID_RECIPS
     With m_Message
         If m_AttachmentsCount > 0 Then
             .FileCount = m_AttachmentsCount
             .Files = VarPtr(m_Attachments(0))
         End If
         If m_RecipientsCount > 0 Then
             .RecipCount = m_RecipientsCount
             .Recipients = VarPtr(m_Recipients(0))
             If m_SessionID = 0 Then Call MAPILogon(ByVal 0&, 
vbNullChar, vbNullChar, MAPI_LOGON_UI Or MAPI_PASSWORD_UI, ByVal 0&, 
m_SessionID)
             If Not m_SendImmediately Then lngFlags = MAPI_DIALOG
             Send = MAPISendMail(ByVal 0&, ByVal 0&, m_Message, 
lngFlags, ByVal 0&)
         End If
     End With
End Function
Public Function NewMail(ByRef MsgTo As Variant, ByRef MsgCc As Variant, 
ByRef MsgBcc As Variant, ByVal MsgSubject As String, ByVal MsgBody As 
String, ByRef MsgFiles As Variant) As Long
     Dim lngCount As Long
     Clear
     For lngCount = LBound(MsgTo) To UBound(MsgTo)
         Call AddRecipient(MAPI_TO, "", MsgTo(lngCount))
     Next lngCount
     For lngCount = LBound(MsgCc) To UBound(MsgCc)
         Call AddRecipient(MAPI_CC, "", MsgCc(lngCount))
     Next lngCount
     For lngCount = LBound(MsgBcc) To UBound(MsgBcc)
         Call AddRecipient(MAPI_BCC, "", MsgBcc(lngCount))
     Next lngCount
     For lngCount = LBound(MsgFiles) To UBound(MsgFiles)
         Call FileAdd(MsgFiles(lngCount))
     Next lngCount
     Subject = MsgSubject
     Body = MsgBody
     NewMail = Send
End Function
Public Function MAPIError(ByVal ErrorNumber As Long) As String
     Select Case ErrorNumber
         Case SUCCESS_SUCCESS: MAPIError = ""
         Case MAPI_USER_ABORT: MAPIError = "User Abort"
         Case MAPI_E_FAILURE: MAPIError = "Failure"
         Case MAPI_E_LOGIN_FAILURE: MAPIError = "LogIn Failure"
         Case MAPI_E_DISK_FULL: MAPIError = "Disk Full"
         Case MAPI_E_INSUFFICIENT_MEMORY: MAPIError = "Insufficient Memory"
         Case MAPI_E_ACCESS_DENIED: MAPIError = "Access Denied"
         Case MAPI_E_TOO_MANY_SESSIONS: MAPIError = "Too Many Sessions"
         Case MAPI_E_TOO_MANY_FILES: MAPIError = "Too Many Files"
         Case MAPI_E_TOO_MANY_RECIPIENTS: MAPIError = "Too Many Recipients"
         Case MAPI_E_ATTACHMENT_NOT_FOUND: MAPIError = "Attachment Not 
Found"
         Case MAPI_E_ATTACHMENT_OPEN_FAILURE: MAPIError = "Attachment 
Open Failure"
         Case MAPI_E_ATTACHMENT_WRITE_FAILURE: MAPIError = "Attachment 
Write Failure"
         Case MAPI_E_UNKNOWN_RECIPIENT: MAPIError = "Unknown Recipient"
         Case MAPI_E_BAD_RECIPTYPE: MAPIError = "Bad Recipient Type"
         Case MAPI_E_NO_MESSAGES: MAPIError = "No Messages"
         Case MAPI_E_INVALID_MESSAGE: MAPIError = "Invalid Message"
         Case MAPI_E_TEXT_TOO_LARGE: MAPIError = "Text Too Large"
         Case MAPI_E_INVALID_SESSION: MAPIError = "Invalid Session"
         Case MAPI_E_TYPE_NOT_SUPPORTED: MAPIError = "Type Not Suppported"
         Case MAPI_E_AMBIGUOUS_RECIPIENT: MAPIError = "Ambiguous Recipient"
         Case MAPI_E_MESSAGE_IN_USE: MAPIError = "Message in Use"
         Case MAPI_E_NETWORK_FAILURE: MAPIError = "Network Failure"
         Case MAPI_E_INVALID_EDITFIELDS: MAPIError = "Invalid Edit Fields"
         Case MAPI_E_INVALID_RECIPS: MAPIError = "Invalid Recipient"
         Case MAPI_E_NOT_SUPPORTED: MAPIError = "Not Supported"
         Case Else: MAPIError = "MAPI Error " & CStr(ErrorNumber)
     End Select
End Function
Private Sub Class_Terminate()
     If m_SessionID <> 0 Then Call MAPILogoff(m_SessionID, ByVal 0&, 
ByVal 0&, ByVal 0&)
     m_SessionID = 0
End Sub
su un modulo metti:
Sub Invia_MSOE(TO1 As String, CC1 As String, BCC1 As String, ByVal OGG1 
As String, ByVal MSG1 As String, AFIL1 As String)
On Error GoTo errore
Dim SendMail As clsMAPISendMail
    Dim lngLoop As Long
    Dim lngResult As Long
    Set SendMail = New clsMAPISendMail
    With SendMail
        .Clear
         Call .AddTo("", TO1)
        .Subject = OGG1
        .Body = MSG1
         Call .FileAdd(AFIL1)
        .SendImmediately = True   ' metti false se non vuoi spedirla subito
        lngResult = .Send
        If lngResult > 0 Then
            MsgBox .MAPIError(lngResult), vbCritical Or vbOKOnly, 
"Errore nell'invio del messaggio"
        End If
    End With
    Set SendMail = Nothing
Exit Sub
errore:
MsgBox Err.description
End Sub
i parametri e come richiamare quest'ultima sub credo non abbia bisogno 
di spiegazione.
funziona con tutto tranne che con outlook 2010
ciao
BFS


sendobject in automatico crea la mail con il client di posta 
predefinito...equivale a fare tasto destro sopra un file e selezionare 
"invia a "-->"destinatario posta"
MSOE.dll presume che ci sia outlook express come client di 
posta...altrimenti non va
prova il mio codice...lo uso da anni e da win me a win 7 non ho alcun 
problema con nessun client di posta (MS outlook 2010 escluso)
fammi sapere
ciao
BFS

 posta...altrimenti non va
Mi sa che � questo il problema
stavo lavorando sul PC de sto tizio adesso con teamviewer e mi � parso di 
aver visto che ha outlook e non l'express
Antonio 

> non funzioni, ufffffffffffffffffff
Anto' scaricati ASPMAIL.DLL e risolvi...
-- 
--------------------------------
Pablitomf
Napoli sempre nel "Q"uore!


N'ANTRA (Tm.) ???????????????
Antonio 

 ha scritto nel messaggio 
news:j1b682$mih$1...@speranza.aioe.org...

Confermo: messo come predefinito OE, funziona tutto
lavorer� con MAPI e vediamo se riesco...
Antonio 

 aver visto che ha outlook e non l'express
Finalmente hai trovato la buca per le lettere!
-- 
ac (x=y-1)

 Finalmente hai trovato la buca per le lettere!
ma io volevo la busta che andava bene per tutte le buche del mondo
mo vediamo se MAPI � quella busta
Antonio 

 ha scritto:

io la uso da sempre... ï¿œ perfetta... silll'avuoi, te la invio...


 io la uso da sempre... � perfetta... silll'avuoi, te la invio...
� mejo o pejo de MAPI ?
Antonio 

 ï¿œ mejo o pejo de MAPI ?
fa "ER" suo! ;)


 fa "ER" suo! ;)
si, ma si lo fa facendome pass� er mare co li zoccoli, so dolori...
Antonio 

 si, ma si lo fa facendome passï¿œ er mare co li zoccoli, so dolori...
naaaaa so' "braccioli" ;)


>> Antonio
Se per questo c'� anche GIEMail ma � un ocx:
http://www.iacosoft.com/home/ocx.asp
Ciao, Carlo 

 si, ma si lo fa facendome passà er mare co li zoccoli, so dolori...
naaaaa so' "braccioli" ;)
Risposta:
Ciao,
prima di usare A2007 che ha il pdf integrato, usavo l'abbinata lebans+CDO 
come Ale cara, funzionava benissimo e a sforzo ZERO
MA