Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Inviare da codice VBA una e-mail con allegati e richiedere conferma di lettura

938 views
Skip to first unread message

cristian

unread,
Oct 31, 2010, 8:44:56 AM10/31/10
to
L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete dove
e come agire per poter richiedere la conferma di lettura ?

Ciao
Grazie
Chita

Qui sotto riporto il codice.
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


@Alex

unread,
Oct 31, 2010, 10:49:20 AM10/31/10
to
On 31 Ott, 13:44, "cristian" <crist...@came-snc.it> wrote:
> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete dove
> e come agire per poter richiedere la conferma di lettura ?
.....

Leggi questo:

http://support.microsoft.com/kb/243900/it

@Alex

cristian

unread,
Oct 31, 2010, 12:44:33 PM10/31/10
to
"@Alex" <ik2...@libero.it> ha scritto nel messaggio
news:b1ccb9a4-35e9-4a40...@x42g2000yqx.googlegroups.com...

Ho dato una letta ma ho capito poco, quel che chiedo si puo' fare sul codice
del sitocomune? Ma come?

Diversamente devo cambiare strada?

Mi interessa creare un pulsante nel mio applicativo access, in cui si
dovrebbe aprire outlook express con allegato il file che intendo inviare....
il destinatario e l'oggetto.
Chiaramente in questo caso la richiesta di lettura sarebbe impostata a
default in outlook express.

Ciao
Chita


@Alex

unread,
Oct 31, 2010, 12:58:59 PM10/31/10
to
...

> Ho dato una letta ma ho capito poco, quel che chiedo si puo' fare sul codice
> del sitocomune? Ma come?

Se sei in grado di comprendere il suggerimento che ho dato prima devi
modificare il Demo del S.C.
ovviamente non c'è una bacchetta magica che lo mette a posto....

> Diversamente devo cambiare strada?

Ma dipende...

> Mi interessa creare un pulsante nel mio applicativo access, in cui si
> dovrebbe aprire outlook express con allegato il file che intendo inviare....
> il destinatario e  l'oggetto.
> Chiaramente in questo caso la richiesta di lettura sarebbe impostata a
> default in outlook express.

Scordati OutlookExpress, non è pilotabile se non per inviare una Mail
singola non formattata e non sono gestibili Allegati.
OutlookExpress non offre interfaccia OLE ed è gestibile solo
attraverso le sue API peraltro non tutte compatibili con VB....

Sei certo di aver capito cosa sia MAPI...?

> Ciao
> Chita

Ciao
@Alex

Bruno Campanini

unread,
Oct 31, 2010, 1:51:05 PM10/31/10
to
cristian submitted this idea :

> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete dove
> e come agire per poter richiedere la conferma di lettura ?
>
> Ciao
> Grazie
> Chita
>
> Qui sotto riporto il codice.
> Private Type MAPIRecip
[...]

Che oscenità di codice!

Questo funziona con Outlook (non Outlook Express),
da Access; tra parentesi quadre i campi di una scheda.
==================================================
Private Sub SendMail_Click()
' References:
' Visual Basic for Applications
' Microsoft Outlook 14.0 Object Library
' Microsoft Office 14.0 Object Library
' Microsoft Office 14.0 Access database engine Object Library
' Microsoft Scripting Runtime
'
Dim NewMail As MailItem, S As String
Dim AttachmentArray(1 To 3) As String
Dim FSO As Object, TextStream As Object
Dim i As Integer

AttachmentArray(1) = "D:\aa2.txt"
AttachmentArray(2) = "D:\aa3.txt"
AttachmentArray(3) = "D:\aa4.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("D:\aa1.txt")
Do Until TextStream.AtEndOfStream
S = TextStream.ReadLine
Loop

Set NewMail =
CreateObject("Outlook.Application").CreateItem(olMailItem)
With NewMail
.To = [eMailAddress] ' ' "aaaaa@aaa; bbbbb@bbb; ccccc@ccc"
.CC = "brun...@libero.it; cmp...@gmail.com;bruno.c...@tin.it"
'.BCC = "brun...@libero.it; cmp...@gmail.com"
.Subject = [eMailSubject]
.Body = [eMailMessage] & vbCrLf & S
.ReadReceiptRequested = True
For i = 1 To 3
.Attachments.Add AttachmentArray(i)
Next
.Send
End With

End Sub
=========================================

Bruno


cristian

unread,
Oct 31, 2010, 2:19:18 PM10/31/10
to
"@Alex" <ik2...@libero.it> ha scritto nel messaggio
news:3ed20fc0-5b7d-4aae...@j2g2000yqf.googlegroups.com...

...
> Ho dato una letta ma ho capito poco, quel che chiedo si puo' fare sul
> codice
> del sitocomune? Ma come?

>Se sei in grado di comprendere il suggerimento che ho dato prima devi
>modificare il Demo del S.C.

Non sono in grado.
In ogni caso faro altri tentativi e ragionamenti ma probabilmente lascierò
perdere ... da solo non riesco.


>ovviamente non c'è una bacchetta magica che lo mette a posto....

Chiaro ci vuole la zucca.....

cut

>Sei certo di aver capito cosa sia MAPI...?

No mi devo documentare, è per questo che chiedo informazioni ...

Ciao
Chita


cristian

unread,
Oct 31, 2010, 2:22:06 PM10/31/10
to

"Bruno Campanini" <bruno...@libero.it> ha scritto nel messaggio
news:4ccdac8a$0$45266$4faf...@reader4.news.tin.it...

> cristian submitted this idea :
>> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete
>> dove e come agire per poter richiedere la conferma di lettura ?
>>
>> Ciao
>> Grazie
>> Chita
>>
>> Qui sotto riporto il codice.
>> Private Type MAPIRecip
> [...]
>
> Che oscenit� di codice!

il codice funziona e lo preso dal sito comune!

Grazie per il suggerimento ma intendo farlo funzionare con outlook express

Qualora avessi altre idee o suggerimenti...

Ciao
Chita

@Alex

unread,
Oct 31, 2010, 3:33:59 PM10/31/10
to
On 31 Ott, 19:22, "cristian" <crist...@came-snc.it> wrote:
> "Bruno Campanini" <brunoca...@libero.it> ha scritto nel messaggionews:4ccdac8a$0$45266$4faf...@reader4.news.tin.it...

>
> > cristian submitted this idea :
> >> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete
> >> dove e come agire per poter richiedere la conferma di lettura ?
>
> >> Ciao
> >> Grazie
> >> Chita
>
> >> Qui sotto riporto il codice.
> >> Private Type MAPIRecip
> > [...]
>
> > Che oscenit di codice!
>
> il codice funziona e lo preso dal sito comune!
>
> Grazie per il suggerimento ma intendo farlo funzionare con outlook express
>
> Qualora avessi altre idee o suggerimenti...
>
> Ciao
> Chita

Ma allora non hai capito....??!!!???
NON PUOI USARE OUTLOOK EXPRESS.

Saluti
@Alex

cristian

unread,
Oct 31, 2010, 6:41:43 PM10/31/10
to

"@Alex" <ik2...@libero.it> ha scritto nel messaggio
news:18f0518c-be62-48a0...@k22g2000yqh.googlegroups.com...

Scusa ma mi sono espresso male, intendevo dire che il codice suggerito dal
sito comune, invia la mail e l'archivia in outlook express, qualora fosse
possibile, come poter modificare l'istruzione sulla base di quello suggerito
dal link http://support.microsoft.com/kb/243900/it


Ciao
Chita


Carlo Costarella

unread,
Nov 1, 2010, 1:34:39 AM11/1/10
to

"cristian" <cris...@came-snc.it> ha scritto nel messaggio
news:4ccd64c8$0$26706$4faf...@reader1.news.tin.it...

> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se sapete
> dove e come agire per poter richiedere la conferma di lettura ?
>
> Ciao
> Grazie
> Chita

Oltre i consigli di Alex
mi sembra pi� semplice usare Blat.
In questi post trovi argomenti utili (ma anche in altri post di questo NG):
Blat, Invio mail del 12/04/2010
avere l'esito invio email da blat � possibile? del 08/10/2010

Ciao, Carlo


Paolo opg

unread,
Nov 2, 2010, 3:38:27 AM11/2/10
to
"cristian" <cris...@came-snc.it> wrote in
news:4ccd64c8$0$26706$4faf...@reader1.news.tin.it:

> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se
> sapete dove e come agire per poter richiedere la conferma di lettura ?
>

[cut]

ricordati che la conferma di lettura e' completamente opzionale, il
destinatario non ha nessun obbligo di mandarla e puo' tranquillamente NON
mandarla mai senza che ci siano errori o problemi di alcun genere.

questo per dire che se fai ragionamenti sul ricevimento di questa conferma
sono sballati per definizione, perche' basati su una cosa non affidabile.

--
Paolo opg

BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

Message has been deleted

Antonio Biso

unread,
Nov 4, 2010, 6:53:58 AM11/4/10
to

"Paolo opg" <spamc...@tiscali.it> ha scritto nel messaggio
news:Xns9E2457E8892F1sp...@193.43.96.1...

> "cristian" <cris...@came-snc.it> wrote in
> news:4ccd64c8$0$26706$4faf...@reader1.news.tin.it:
>
>> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se
>> sapete dove e come agire per poter richiedere la conferma di lettura ?
>>
> [cut]
>
> ricordati che la conferma di lettura e' completamente opzionale, il
> destinatario non ha nessun obbligo di mandarla e puo' tranquillamente NON
> mandarla mai senza che ci siano errori o problemi di alcun genere.
>
> questo per dire che se fai ragionamenti sul ricevimento di questa conferma
> sono sballati per definizione, perche' basati su una cosa non affidabile.

A meno di non avere una posta certificata...

Antonio


Paolo opg

unread,
Nov 4, 2010, 7:18:16 AM11/4/10
to
"Antonio Biso" <ab...@libero.it> wrote in
news:ahwAo.223920$9f6.4...@twister1.libero.it:

[cut]
>>
>> ricordati che la conferma di lettura e' completamente opzionale, il
>> destinatario non ha nessun obbligo di mandarla e puo' tranquillamente
>> NON mandarla mai senza che ci siano errori o problemi di alcun
>> genere.
>>
>> questo per dire che se fai ragionamenti sul ricevimento di questa
>> conferma sono sballati per definizione, perche' basati su una cosa
>> non affidabile.
>
> A meno di non avere una posta certificata...
>
> Antonio
>
>
>
>

se non ricordo male la posta certificata ti conferma la consegna, non la
lettura.

e' una raccomandata: sai che e' arrivata, ma se vuoi sapere che l'ho
aperta devi telefonarmi.

Antonio Biso

unread,
Nov 5, 2010, 4:10:47 AM11/5/10
to
"Paolo opg" <spamc...@tiscali.it> ha scritto nel messaggio
news:Xns9E267D2B24D0Dsp...@193.43.96.1...

> "Antonio Biso" <ab...@libero.it> wrote in
> news:ahwAo.223920$9f6.4...@twister1.libero.it:
>
> [cut]
>>>
>>> ricordati che la conferma di lettura e' completamente opzionale, il
>>> destinatario non ha nessun obbligo di mandarla e puo' tranquillamente
>>> NON mandarla mai senza che ci siano errori o problemi di alcun
>>> genere.
>>>
>>> questo per dire che se fai ragionamenti sul ricevimento di questa
>>> conferma sono sballati per definizione, perche' basati su una cosa
>>> non affidabile.
>>
>> A meno di non avere una posta certificata...
>>
>> Antonio
> se non ricordo male la posta certificata ti conferma la consegna, non la
> lettura.
>
> e' una raccomandata: sai che e' arrivata, ma se vuoi sapere che l'ho
> aperta devi telefonarmi.

Sicuramente.
Ma spero che gli intendimenti siano semplicemente quelli di essere sicuri
che la mail è arrivata.
Se poi uno non la legge... beh, se non vuoi il dubbio allora abbandoniamo
mail, fax, sms o latori di messaggi verbali e alziamo il vecchio e caro
telefono:
"oh, sei tu? guarda che .... HAI CAPITO???"

Antonio


RobertoA

unread,
Nov 9, 2010, 4:05:53 AM11/9/10
to
>>> L'esempio 6.129 presente sul sitocomune funziona bene, chiedo se
>>> sapete dove e come agire per poter richiedere la conferma di lettura ?
>>>
>> ricordati che la conferma di lettura e' completamente opzionale, il
>> destinatario non ha nessun obbligo di mandarla e puo' tranquillamente NON
>> mandarla mai senza che ci siano errori o problemi di alcun genere.
>>
>> questo per dire che se fai ragionamenti sul ricevimento di questa
>> conferma
>> sono sballati per definizione, perche' basati su una cosa non affidabile.
>
> Giusto!
> Siccome il modulo funziona, direi che abbandono l'idea della conferma di
> lettura.

Non risponde esattamente alla tua richiesta, ma hai preso in considerazione
Blat ?
E' uno strumento davvero molto potente ed efficace
Ciao
RobertoA


cristian

unread,
Nov 14, 2010, 6:57:32 AM11/14/10
to

"RobertoA" <amor...@tiscalinet.it> ha scritto nel messaggio
news:4cd90b78$1...@newsgate.x-privat.org...

Ho provato e fatto alcune prove, ma l'ho abbandonato in quanto l'invio della
mail non me lo storicizza attraverso outlook (� chiaro in quanto lo fa
attraverso la sua piattaforma).
Per ora sto lavorando con l'esempio 6.129 senza conferma di lettura!

Grazie
Ciao
Chita


Paolo opg

unread,
Nov 15, 2010, 2:40:46 AM11/15/10
to
"cristian" <cris...@came-snc.it> wrote in
news:4cdfceaf$0$27965$4faf...@reader5.news.tin.it:

[cut]


>>
>> Non risponde esattamente alla tua richiesta, ma hai preso in
>> considerazione Blat ?
>> E' uno strumento davvero molto potente ed efficace
>> Ciao
>> RobertoA
>>
>
> Ho provato e fatto alcune prove, ma l'ho abbandonato in quanto l'invio

> della mail non me lo storicizza attraverso outlook (è chiaro in quanto


> lo fa attraverso la sua piattaforma).
> Per ora sto lavorando con l'esempio 6.129 senza conferma di lettura!
>
> Grazie
> Ciao
> Chita
>
>

per avere copia delle email inviate tramite altri sistemi, a volte puo'
essere comodo usare il campo bcc/ccn; invii l'email e te ne arriva una
copia senza che il destinatario ne abbia evidenza.

cristian

unread,
Nov 16, 2010, 8:58:59 AM11/16/10
to
"Paolo opg" <spamc...@tiscali.it> ha scritto nel messaggio
news:Xns9E31584E0D98Fsp...@193.43.96.1...

Giusta osservazione, proverò a fare delle prove!

Grazie
Ciao
Chita


0 new messages