Newsgroup: it.comp.appl.access
Titolo: Invio allegati con Lotus Notes.

Buon pomeriggio ragazzi (e ragazze),
Win2K, A97, Lotus Notes 6.
Desidererei sapere se è possibile inviare allegati, esterni al DB,
utilizzando A97 e Lotus Notes (sia in automatico che dopo averli scelti
attraverso una finestra di Esplora risorse). Col comando DoCmd.SendObject
non ho problemi con Lotus Notes ma dovrei spedire anche altri attachment
che non fanno parte degli oggetti del DB.
Muchas gracias,
TANNHASUER
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

VAN ha scritto:



Va,
grazie di aver preso in considerazione il mio messaggio. Potresti essere
un po' più dettagliato in modo ch'io possa capire meglio?
Grazie,
TANNHAUSER
-- 



Hai ragione, scusami, ma sono un po' preso ed inoltre sono un paio di anni
che non programmo piu' in Notes. Comunque, aggiungi un paio di riferimenti
al tuo client Access, uno e' la domino class e l'altra dovrebbe essere la
notes automation class (o qualcosa del genere). Chiaramente dovrai avere il
client Notes installato sulla macchina.
Inizializza una variabile :
 Dim mSession as NotesSession
set msession = createObject("Lotus.notesSession")
e accedi alla prima classe di L.N. Se non conosci l'OD di Notes, la cosa non
e' cosi' immediata e spiegarlo mi risulta un po' difficile.
Aggiungo solamente uno script LN che utilizzavo per inviare e-mail, cosi'
forse ti puo' essere di spunto per iniziare, tanto piu' che ti consente di
allegare file.
Se hai bisogno di qualcosa in piu', scrivimi in privato togliendo XXX
dall'indirizzo e-mail e con un po' piu' di tempo ti potro' aiutare.
Sub Invio(doc As NotesDocument, Oggetto As String, Testo As String,
destinatario As String)
	On Error Goto FINE
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	Set newDoc = db.CreateDocument
	newDoc.Form = "Memo"
	Set rtitem = New NotesRichTextItem( newDoc, "Body" )
	Call rtitem.AddNewLine( 1 )
	Call rtitem.AppendText( Testo )
	Call rtitem.AddTab( 1 )
	Call rtitem.AppendDocLink( doc, db.Title )
	newDoc.Subject = Oggetto
	Set NomeNormale = New NotesName(destinatario)
	destinatario = NomeNormale.Abbreviated
	newDoc.SendTo = destinatario
	Call newDoc.Send( False )
	Exit Sub
FINE:
	Messagebox Error
End Sub
Ciao


 Ciao
Grazie ancora Van,
so che devo aggiungere le classi attraverso il menu Strumenti/Riferimenti
di Access quando scrivo il codice in un modulo, però non so quale sia il
nome del file che corrispondente alle due classi che mi hai citato. Dopo
proverò anche il codice.
Grazie ancora,



          notes32.tlb e dominobj.tlb
PS: io ho la 5 installata, non so' con la 6. Puoi sempre chiedere al
newsgroup domino.


 TANNHASUER
Vai sul Sito Comune (link qui sotto) e nella Sezione General leggi le
seguenti FAQ:
1) Inviare e-mail ad una lista di utenti (mailing list) con MSAccess
utilizzando il winsock di Maurizio Cenere
2) Inviare e-mail con MSAccess utilizzando il winsock di Paolo Beltrame
3) Inviare e-mail con MSAccess utilizzando la libreria mapi32.dll di Carlo
costarella
In alternativa usa la soluzione di Andrea Barchetti che sta per essere
pubblicata sul Sito Comune:
===================================
Il codice che segue non è tutta farina del mio sacco ma frutto di una
ricerca estenuante.
Ho deciso di inviare il materiale al Sito Comune per le numerose richieste
che ho avuto nel NewsGroup.
Inserire in un modulo del database il seguente codice VBA:
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 MAPIFileTag
    Reserved As Long
    TagLength As Long
    Tag() As Byte
    EncodingLength As Long
    Encoding() As Byte
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
Public Declare Function MAPISendMail Lib "c:\programmi\outlook
express\msoe.dll" (ByVal Session As Long, _
ByVal UIParam As Long, ByRef message As MAPIMessage, ByVal Flags As Long,
ByVal Reserved As Long) As Long
Private Const MAPI_E_NO_LIBRARY = 999
Private Const MAPI_E_INVALID_PARAMETER = 998
Private Const MAPI_ORIG = 0
Private Const MAPI_TO = 1
Private Const MAPI_CC = 2
Private Const MAPI_BCC = 3
Private Const MAPI_UNREAD = 1
Private Const MAPI_RECEIPT_REQUESTED = 2
Private Const MAPI_SENT = 4
Private Const MAPI_LOGON_UI = &H1
Private Const MAPI_NEW_SESSION = &H2
Private Const MAPI_DIALOG = &H8
Private Const MAPI_UNREAD_ONLY = &H20
Private Const MAPI_ENVELOPE_ONLY = &H40
Private Const MAPI_PEEK = &H80
Private Const MAPI_GUARANTEE_FIFO = &H100
Private Const MAPI_BODY_AS_FILE = &H200
Private Const MAPI_AB_NOMODIFY = &H400
Private Const MAPI_SUPPRESS_ATTAch = &H800
Private Const MAPI_FORCE_DOWNLOAD = &H1000
Private Const MAPI_OLE = &H1
Private Const MAPI_OLE_STATIC = &H2
Dim mAf() As MAPIFile
Dim mAr() As MAPIRecip
Dim lAr As Long
Dim lAf As Long
Dim mM As MAPIMessage
Dim aErrors(0 To 26) As String
Private Sub Class_Initialize()
    aErrors(0) = "Success"
    aErrors(1) = "User Abort"
    aErrors(2) = "Failure"
    aErrors(3) = "LogIn Failure"
    aErrors(4) = "Disk Full"
    aErrors(5) = "Insufficient Memory"
    aErrors(6) = "Block Too Small"
    aErrors(8) = "Too Many Sessions"
    aErrors(9) = "Too Many Files"
    aErrors(10) = "Too Many Recipients"
    aErrors(11) = "Attachment No Found"
    aErrors(12) = "Attachment Open Failure"
    aErrors(13) = "Attachment Write Failure"
    aErrors(14) = "Unknown Recipient"
    aErrors(15) = "Bad Recipient"
    aErrors(16) = "No Messages"
    aErrors(17) = "Invalid Message"
    aErrors(18) = "Text Too Large"
    aErrors(19) = "Invalid Session"
    aErrors(20) = "Type Not Suppported"
    aErrors(21) = "Ambiguous Recipient"
    aErrors(22) = "Message in Use"
    aErrors(23) = "Network Failure"
    aErrors(24) = "Invalid Edit Fields"
    aErrors(25) = "Invalid Recipient"
    aErrors(26) = "Not Supported"
End Sub
Public Sub Azzera_Email()
lAr = 0
lAf = 0
End Sub
Public Sub BCCAddressAdd(ByVal strAddress As String)
    RecipientAdd MAPI_BCC, , strAddress
End Sub
Public Sub BCCAdd(ByVal strName As String, ByVal strAddress As String)
    RecipientAdd MAPI_BCC, strName
End Sub
Public Sub BCCNameAdd(ByVal strName As String)
    RecipientAdd MAPI_BCC, strName, strAddress
End Sub
Public Sub CCAddressAdd(ByVal strAddress As String)
    RecipientAdd MAPI_CC, , strAddress
End Sub
Public Sub CCNameAdd(ByVal strName As String)
    RecipientAdd MAPI_CC, strName
End Sub
Public Sub MessageIs1(ByVal strNoteText As String)
    mM.NoteText = strNoteText
End Sub
Public Sub SubjectIs1(ByVal strSubject As String)
    mM.Subject = strSubject
End Sub
Public Sub ToAddressAdd(ByVal strAddress As String)
    RecipientAdd MAPI_TO, , strAddress
End Sub
Public Sub ToNameAdd(ByVal strName As String)
    RecipientAdd MAPI_TO, strName
End Sub
Public Sub FileAdd(ByVal strPathName As String)
    Dim F As MAPIFile
    With F
        .PathName = StrConv(strPathName, vbFromUnicode)
    End With
    ReDim Preserve mAf(lAf)
    mAf(lAf) = F
    lAf = lAf + 1
End Sub
Public Sub Send1()
    Dim r As Long
    With mM
        If lAf > 0 Then
            .FileCount = lAf
            .Files = VarPtr(mAf(0))
        End If
        If lAr > 0 Then
            .RecipCount = lAr
            .Recipients = VarPtr(mAr(0))
            r = MAPISendMail(0, 0, mM, 0, 0)
            If r <> 0 Then
                If aErrors(r) = "" Then
                    MsgBox " Email non creata "
                Else
                    MsgBox aErrors(r) & " - Email non creata"
                End If
            Else
            End If
        End If
    End With
End Sub
Public Sub RecipientAdd(ByVal lngType As Long, Optional ByVal strName As
String, Optional ByVal strAddress As String)
    Dim r As MAPIRecip
    r.RecipClass = lngType
    If strName <> "" Then r.Name = StrConv(strName, vbFromUnicode)
    If strAddress <> "" Then r.Address = StrConv(strAddress, vbFromUnicode)
    ReDim Preserve mAr(lAr)
    mAr(lAr) = r
    lAr = lAr + 1
End Sub
Sub Invia_MSOE(TO1 As Variant, CC1 As Variant, BCC1 As Variant, ByVal OGG1
As String, ByVal MSG1 As String, AFIL1 As Variant)
    Dim T1, B1, C1, A1 As Long
'NUOVA TRASMISSIONE
    Azzera_Email
'ACCODA TO
        For T1 = LBound(TO1) To UBound(TO1)
        If TO1(T1) <> "" Then
            ToAddressAdd TO1(T1)
        Else
            MsgBox "MANCA IL DESTINATARIO - CHIUDO"
        Exit Sub
        End If
        Next T1
'ACCODA CC
        For C1 = LBound(CC1) To UBound(CC1)
        If CC1(C1) <> "" Then
            CCAddressAdd CC1(C1)
        Else
        End If
        Next C1
'ACCODA BCC
        For B1 = LBound(BCC1) To UBound(BCC1)
        If BCC1(B1) <> "" Then
            BCCAddressAdd BCC1(B1)
        Else
        End If
        Next B1
'INSERISCI TESTO MESSAGGIO
    MessageIs1 MSG1
'INSERISCI OGGETTO MESSAGGIO
    SubjectIs1 OGG1
'ACCODA ALLEGATI
    For A1 = LBound(AFIL1) To UBound(AFIL1)
    If AFIL1(A1) <> "" Then
        FileAdd AFIL1(A1)
    Else
    End If
    Next A1
'INVIA
    Send1
End Sub
Questo è un esempio di un invio di una e-mail a più destinatari e che ha
come allegati tre file:
Dim MSGX, OBJX As Variant
Dim aTO(0 To 1) As String
Dim aCC(0 To 1) As String
Dim aBCC(0 To 0) As String
Dim aFiles(0 To 2) As String
        aFiles(0) = "C:\EMAIL\Qui.ZIP"
        aFiles(1) = "C:\EMAIL\Quo.ZIP"
        aFiles(2) = "C:\DOC\Qua.PDF"
        aTO(0) = "
pi...@pluto.it
"
        aTO(1) = "
eta...@pluto.it
"
        aCC(0) = "
pape...@pluto.it
"
        aCC(1) = "
Pape...@pluto.it
"
        aBCC(0) = "
topo...@pluto.it
"
        OBJX = "Oggetto del messaggio"
        MSGX = "Testo del messaggio"
        Invia_MSOE aTO, aCC, aBCC, OBJX, MSGX, aFiles
Il codice VBA di cui sopra è stato testato con Access 97.
========================
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Ciao
Grazie del codice e delle indicazioni sui riferimenti. Ho dei problemi con
la gestione del codice, nel senso che alcune righe di odice mi rimangono
in rosso, segnalando quindi un errore. Esattamente che parte del codice
devo associare al pulsante di invio e quale, invece, devo mettere in un
modulo?
Grazie,


 pubblicata sul Sito Comune:
Roberto,
grazie per le segnalazioni. Avevo già letto le FAQ e sperimentato i codici
relativi ma sembra che con non abbia fortuna con Notes. Forse c'è qualcosa
che dovrei sapere anche di Notes, oltre che di Access, e che non è mai
stato preso in considerazione prima.
Ho provato anche il codice di Andrea Barchetti, seguendo fedelmente le
indicazioni e, purtroppo, non ho avuto maggior fortuna. Laconica risposta
di "E-mail non creata". Anche in questo caso credo dipenda da Notes, più
che da Access (e dire che con il DoCmd.SendObject Notes compilava tutto il
form della mail: peccato che non potessi aggiungere allegati "on the fly").
Ciao,
TANNHAUSER
