Newsgroup: it.comp.appl.access
Titolo: Invio mail usando MAPI (sitocomune 6.241) - problema con outlook "Non  recapitato"

Ciao a tutti,
sono sempre stato un assiduo lettore del ng e sono stato ad un paio di
Cisa. Ho sempre scritto molto poco perchè ho sempre trovato le
soluzioni con "cerca" e non mi permetto di dare risposte perchè sono
uno spaghetti-programmer.
Detto questo mi sono un attimo inchiodato su una questione che cerco
di spiegare. A chi venisse sonno a metà chiedo venia in anticipo ma
cerco di darvi tutte le informazioni necessarie a risolvere il
problema.
Mi è stato chiesto da un cliente di predisporre un pulsante
dall'elenco fatture che prenda la fattura relativa, prepari il pdf,
crei la mail da spedire in outlook.
Per la parte pdf ho utilizzato gli script di pdfcreator contenuti in C:
\Program Files\PDFCreator\COM\MS Office\modPDFCreatorAccess2000.bas
che van benone.
Per la parte outlook ho violentato l'esempio del sitocomune 6.241 con
il metodo taglia incolla che mi contraddistingue ed arrivo a fargli
creare il messaggio col suo bell'allegato. Problemino secondario non
so come dargli gli spazi nel testo, ho provato con <br> ma
probabilmente bisogna passargli che è in html invece di solo testo ma
è una cosa secondaria.
Unica cosa quando in outlook clicchi su invia ovviamente il lato
access ti dice messaggio inviato correttamente, quando poi fai invia e
ricevi ti arriva un bel messaggio come segue:
Da: Amministratore di sistema
Inviato: lunedì 17 maggio 2010 9.34
A: test
Oggetto: Non recapitato Invio fattura elettronica
Il messaggio non ha raggiunto alcuni o tutti i destinatari.
      Oggetto:	Invio fattura elettronica
      Inviato:	17/05/2010 9.34
Impossibile raggiungere i destinatari seguenti:
      '
er...@chemolli.com
' 17/05/2010 9.34
            Impossibile inviare messaggi al destinatario con alcun
account di posta elettronica disponibile.
L'account di posta elettronica funziona (uso microsoft outlook 2007 su
un account aruba e sia il mittente che il destinatario funzionano).
Posso presumere che al messaggio outlook manchi qualche parametro
minimo (che ne so passargli un encoding diverso).
Comunque la struttura che fa funzionare l'ambaradan è la seguente.
Modulo contenente PrintRep che è quanto contenuto nello script di
pdfcreator in C:\Program Files\PDFCreator\COM\MS Office
\modPDFCreatorAccess2000.bas
MASCHERA ELENCO FATTURE con campi EMAILFORINVOICES e NOMEFILEPDF,
pulsante che crea le e-mail con il seguente codice (occhio ai ' che ho
disattivato un pò di roba)
Private Sub Comando52_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "119_INVPDFNAME"
DoCmd.SetWarnings True
PrintRep ("FatturaCogesilPDF")
'   If Me.lbRecipients.ListCount = 0 Then
'      MsgBox "Nessun Destinatario di posta è inserito...!",
vbCritical, "Avviso"
'      Exit Sub
'   End If
'   If Len(Me.txtSubject) = 0 Then
'      MsgBox "Nessun Oggetto è stato inserito...!", vbCritical,
"Avviso"
'      Me.txtSubject.SetFocus
'      Exit Sub
'   End If
'   If Len(Me.txtBody) = 0 Then
'      MsgBox "Nessun contenuto è stato inserito...!", vbCritical,
"Avviso"
'      Me.txtBody.SetFocus
'      Exit Sub
'   End If
   Dim SendMail As clsMAPISendMail
   Dim lngLoop As Long
   Dim lngResult As Long
   Set SendMail = New clsMAPISendMail
   With SendMail
       .Clear
       'For lngLoop = 0 To lbRecipients.ListCount - 1
           'Select Case lbRecipients.Column(0, lngLoop)
            '   Case "To": Call .AddTo("", lbRecipients.Column(1,
lngLoop))
            '   Case "Cc": Call .AddCC("", lbRecipients.Column(1,
lngLoop))
            '   Case "Bcc": Call .AddBCC("", lbRecipients.Column(1,
lngLoop))
           'End Select
           Call .AddTo(Me.EMAILFORINVOICES, Me.EMAILFORINVOICES)
           'Next lngLoop
       .SUBJECT = "Invio fattura elettronica"
       .Body = "Gentile Cliente, come da accordi Le inviamo in
allegato fattura in formato PDF.<br><br> Cordiali Saluti."
       'For lngLoop = 0 To lbAttachments.ListCount - 1
           Call .FileAdd("c:\" & Me.NOMEFILEPDF & ".pdf")
           'Next lngLoop
       .SendImmediately = False
       lngResult = .Send
       If lngResult > 0 Then
           MsgBox .MAPIError(lngResult), vbCritical Or vbOKOnly,
"Errore nell'invio del messaggio"
       Else
           MsgBox "Messaggio inviato con successo", vbInformation Or
vbOKOnly, "Invio del messaggio riuscito"
       End If
   End With
   Set SendMail = Nothing
End Sub
Mi sembra di avervi messo più o meno tutto se qualche buon'anima ha un
barlume di soluzione riesco a risolvere! Grazie 1000 in anticipo per
l'aiuto!


Ciao Eros
il problema � su outlook non su Access
Prova a fare un sendobject con quel destinatario 

 Prova a fare un sendobject con quel destinatario
Spettacolo risolto tutto con una (una) riga di codice quel che avevo
impostato in ottantamila
DoCmd.SendObject acSendReport, "fattura", , "
te...@chemolli.com
", , ,
"Prova di invio", "Ecco il messaggio testa di pupù"
Ecco il motivo per cui per te Access è un lavoro a tempo pieno per me
un lavoretto di contorno a spot.
Grazie mille MA.
Ciaooo