Skip to content

VBS – Invio mail con allegato

3 agosto 2010

Come inviare una mail con VBScript con allegato.

Può capitare di dover far leggere un log, un file txt, un risultato di una elaborazione a una postazione remota senza la possibilità di condividere il file.

Il modo più semplice è quello di spedire il file tramite mail. VBS ci viene in aiuto!

Con questo sistema ho più volte superato la mancanza della funzione d’ invio dei log in NTBackup sui server Windows 2000 e 2003 pianificandolo tramite le operazioni schedulate di Microsoft.

Nello script d’esempio la funzione SendMail è esterna ed è facile richiamarla inserendola in altri script…ad esempio per il monitoraggio della dimensione delle cartelle condivise, per il riavvio dei servizi…oppure ogni qualvolta serva periodicamente spedire un file.

Gli unici parametri da impostare sono:

  • Sender: il mittente della mail;
  • Recipient: il destinatario della mail;
  • Subject: il soggetto della mail;
  • Body: il corpo della mail;
  • SMTPServer: il server di destinazione della mail ( ossia quello su cui è attivo il record MX della cesella mail di destinazione )
  • Attachment: il path completo del file da spedire;

…ovviamente poi il file va lanciato tramite le operazioni pianificate.

On Error Resume Next

Dim strSMTPServer
Dim strEmailFrom
Dim strEmailTo
Dim Subject
Dim Body
Dim Attachment

‘————————————–Parametri invio Mail—————————————
strSMTPServer = “IP_serverSMTP_Mail”
strEmailFrom = “log@consulentiit.it”
strEmailTo = “info@consulentiit.it”
Subject = “BackUp ScoUnix: Controllare il log in allegato”
Body = “Lo script di backup è stato completato. Controllare il log in allegato all’email per verificare l’esito dello script.”
Attachment=”C:\FileLog.txt”

‘*****************************************************************
‘* Funzione Per Inviare una mail di notifica                     *
Call Send_MailCDO(strSMTPServer,strEmailFrom, strEmailTo, Subject, Body, Attachment)

‘******************************************************************************
‘   FUNZIONI INVIO MAIL
‘******************************************************************************
Function Send_MailCDO(SMTPServer,Sender,Recipient,Subject,Text,Attachment)
Dim objEmail
Set objEmail = CreateObject(“CDO.Message”)
objEmail.From = Sender
objEmail.To = Recipient
objEmail.Subject = Subject
objEmail.Textbody = Text
objEmail.AddAttachment Attachment
objEmail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2
objEmail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserver”) = SMTPServer
objEmail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Set objEmail = Nothing
End Function

4 commenti
  1. luca permalink

    Ciao,

    ho trovato questo script che potrebbe essere utile ma non riesco a farlo funzionare.
    Forse non ho capisto esattamente..
    La mia esigenza è inviare durante la notte, attraverso l’operazione pianificata, un file excel via mail.

    Con questo script posso farlo?
    Mi potete aiutare?

    • Ciao, puoi farlo semplicemente modificando la riga “Attachment=”C:\script\log.txt” ” inserendo il percorso completo del file da allegare.
      Se ci sono problemi scivimi pure.

  2. luca permalink

    Ciao perdonami ma non avevo visto la risposta…e comunque grazie mille per la tua.
    Ho provato a fare come indicato ma lanciando lo script vbs mi da degli errori su diverse righe per carattere non valido.

    Esempio riga 2 carattere 1

    Io ho semplicemnte copiato lo script indicato variando ovviamente il percorso di attach su un file mail.VBS
    E’ possibile che stia sbagliando qualcosa??

    • Ciao Luca,
      ho aggiornato lo script semplificandolo, mi sono accorto che non mi aveva inserito le parentesi nella chiamata della funzione.
      Devi andare a modificare secondo le tue esigenze il parametri per l’invio mail:

    • strSMTPServer: indirizzo ip del server smtp a cui ti appoggerai per l’invio;
    • strEmailFrom: indirizzo del mittente;
    • strEmailTo: indirizzo del destinatario;
    • Subject: oggetto della mail;
    • Body: corpo della mail;
    • Attachment: path completo del file allegato da spedire;
    • Ti dico che come strSMTPServer puoi impostare anche il server mail del destinatario della mail;
      Se hai dei dubbi su cosa inserire e se ci sono ancora errori con lo script sono a tua disposizione.

      PS: Le parti di codice…
      Body = “Lo script di backup è stato completato. Controllare il log in allegato all’email per verificare l’esito dello script.”

      Call Send_MailCDO(strSMTPServer,strEmailFrom, strEmailTo, Subject, Body, Attachment)

      objEmail.Configuration.Fields.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2

      …sono tutte in una sola riga.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...