Newsgroup: it.comp.appl.access
Titolo: decidere quale client posta far partire con SendObject

DoCmd.SendObject acSendReport, "fattura", "PDFFormat(*.pdf)", Me.Email, , , oggetto, testo, True
 
ho installato thunderbird ma pur avendolo impostato come client di default apparentemente ovunque in windows 10 non c'è modo di avviarlo automaticamente, parte sempre windows live mail
 
Qualcuno ha qualche consiglio da darmi?


con tb puoi inviare facilmente una mail cosi
 
Dim percorsoTB As String
Dim thund As String
 
If Len(Nz(Dir("C:\Program Files (x86)\Mozilla 
Thunderbird\thunderbird.exe"), 0)) > 0 Then
     percorsoTB = "C:\Program Files (x86)\Mozilla 
Thunderbird\thunderbird.exe  "
Else
     percorsoTB = "C:\Program Files\Mozilla Thunderbird\thunderbird.exe  "
End If
 
thund = percorsoTB & _
             "-compose " & """" & _
             "to='
in...@gmail.com
'," & _
             "cc='
in...@gmail.com
'," & _
             "bcc='
in...@gmail.com
'," & _
             "subject='bla bla bla'," & _
             "attachment='c:\test.pdf'," & _
             "body='saluti'" & """"
 
 
 
 
 
Call Shell(thund, vbNormalFocus)
 
 
 
BFS
 
 
 
 
-- 
Questa email è stata esaminata alla ricerca di virus da AVG.
http://www.avg.com
 
 


una bomba! 
L'ho adattato con le mie variabili stringa
grazie.
 
thund = percorsoTB & _
"-compose " & """" & _
"to='" & dest & "'," & _
"cc='" & destCC & "'," & _
"bcc='" & destCCN & "'," & _
"subject='" & oggetto & "'," & _
"attachment='" & allegato & "'," & _
"body=" & testo


bene
qui trovi altri parametri che potrebbero tornare utili, esempio per 
multi allegati o per scrivere la mail in html
 
 
http://kb.mozillazine.org/Command_line_arguments_-_Thunderbird#Compose_new_mail_with_command_line
 
 
BFS
 


grazie molte

Si potrebbe usare una cosa simile per trovare il Path, da verificare però, funziona sicuramente con i programmi Installati che vanno nei Registri, ovviamente no per roba Portable:
 
#If VBA7 Then
    Declare PtrSafe Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _
        (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
#Else
    Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _
        (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
#End If
 
Const SYS_OUT_OF_MEM        As Long = &H0
Const ERROR_FILE_NOT_FOUND  As Long = &H2
Const ERROR_PATH_NOT_FOUND  As Long = &H3
Const ERROR_BAD_FORMAT      As Long = &HB
Const NO_ASSOC_FILE         As Long = &H1F
Const MIN_SUCCESS_LNG       As Long = &H20
Const MAX_PATH              As Long = &H104
 
Const USR_NULL              As String = "NULL"
Const S_DIR                 As String = "C:\" '// Change as required (drive that .exe will be on)
 
 
Function GetInstallDirectory(ByVal usProgName As String) As String
 
    Dim fRetPath As String * MAX_PATH
    Dim fRetLng As Long
 
    fRetLng = FindExecutable(usProgName, S_DIR, fRetPath)
 
    If fRetLng >= MIN_SUCCESS_LNG Then
        GetInstallDirectory = Left$(Trim$(fRetPath), InStrRev(Trim$(fRetPath), "\"))
    'Else
    '    Select Case fRetLng 
    '              Case ERROR_FILE_NOT_FOUND  
    '              Case ERROR_PATH_NOT_FOUND  
    '              Case NO_ASSOC_FILE         
    '             '.......
    '     End Select    
    '    Gestione dei codici di errore da valutare...
    End If
 
End Function
 
@Alex

 Call Shell(thund, vbNormalFocus) 
 
 
Molto bello.
Uso Mapi con Thunderbird, ma talvolta ho avuto problemi di affidabilità: presumo che questo sistema sia solido oltre che semplice.
Se non ricordo male con Outlook da linea di comando è richiesta all'operatore la pressione del pulsante d'invio.
 
Saluti
 

Il giorno mercoledì 13 aprile 2022 alle 08:03:59 UTC+2 BFS ha scritto:

Sai se è possibile inviare la mail con thunderbird ma senza aprirla in anteprima? inviandola direttamente? 
grazie.

 Sai se è possibile inviare la mail con thunderbird ma senza aprirla in anteprima? inviandola direttamente? 
 
Pure io m'ero illuso per una mezz'ora, ma funziona esattamente come con outlook.exe da linea di comando: necessario pulsante invio.
 
Saluti
 


personalmente con MAPI mai avuto problemi con TB da windows 7 a windows 11
sia con invio automatico sia con invio con click dell'utente
ovviamente con tb impostato come client predefinito
 
 
BFS
 
 
 
 


Scrivi che funziona come outlook ma outlook invia anche senza interazione da parte dell'operatore, forse ti riferisci ad Outlook Express? perchè so per certo che Microsoft Outlook Invia messaggi senza necessità di nessuna iterazione.


 
Considera che normalmente invio mail da outlook utilizzando MAPI oppure automazione OLE, l'utilizzo di Outlook.exe da linea di comando per me risale a molti anni fa.
A quell'epoca (non ricordo fino a quale versione) tale modalità non consentiva la spedizione diretta senza cliccare su "invia". 
E' cambiato qualcosa con versioni recenti del prodotto?
 
Saluti


non saprei se è cambiato qualcosa, io uso questo codice con outlook e invia senza necessità di interazione, mi serviva la stessa cosa per thunderbird
 
    Dim OutlookApp As Outlook.Application
    Dim MItem As Object
    Dim Recipient As String, Subj As String
    Dim Msg As String, fname As String
 
    On Error Resume Next
    Subj = "Allegato PDF"
 
    Set OutlookApp = New Outlook.Application
    Set MItem = OutlookApp.CreateItem(olMailItem)
    With MItem
        .to = destinatario 
        '.CC = "" 
        '.BCC = "" 
 
        .Subject = oggetto
        .Body = testo
        .Attachments.Add allegato
        '.SentOnBehalfOfName = "
mitt...@pec.it
" 'Mittente in caso si voglia modificare tra quelli disponibili in outlook
        '.display 'se non commentato la mail si apre in anteprima se commentato la mail viene inviata senza interazione con l'operatore
        .Send
    End With
 
    Set OutlookApp = Nothing
 
 
 
 
 
 
 

 non saprei se è cambiato qualcosa, io uso questo codice con outlook e invia senza necessità di interazione, mi serviva la stessa cosa per thunderbird 
 
Dim OutlookApp As Outlook.Application
Dim MItem As Object
Dim Recipient As String, Subj As String
Dim Msg As String, fname As String
 
On Error Resume Next
Subj = "Allegato PDF"
 
Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.to = destinatario
'.CC = ""
'.BCC = "" 
 
(cut)
 
 
Certo che funziona, ma si tratta di automazione OLE, io mi riferivo esclusivamente all'utilizzo di thunderbird.exe da linea di comando, ovvero il codice suggerito da BFS.
Se vuoi inviare mail direttamente dal client puoi utilizzare le routine MAPI che già usi per Outlook (comunque le trovi facilmente in rete).
 
Saluti

Errata corrige: 
 
 io mi riferivo esclusivamente all'utilizzo di    outlook.exe    da linea di comando, ovvero la modalità suggerita da BFS.