none
Script vbs invio email con Outlook, email bloccate in drafts

    Domanda

  • Buongiorno,

    ho bisogno di creare un script vbs che invii una serie di email giornalmente tramite Outlook a vari indirizzi.

    Lo script lo creo in maniera dinamica tramite un programma esterno in java. Provando da vari pc con installato Outlook 2013 e 2016 nessun problema nel gestire la "grande" mole di invio con questo script. Il problema sorge su un altro pc dove è installato Outlook 2010.

    Su questo pc lo script viene eseguito correttamente ma le email non vengono inviate, vengono solo salvate nella cartella Draft. Se poi tento di inviarle manualmente aprendo outlook, mi dice che c'è un errore in alcuni parametri della email e non me la invia. Se però faccio passare alcuni minuti prima di provare ad inviarle manualmente allora me le invia senza problemi. 

    Le prove svolte sui vari pc sono state fatte tutte con le stesse email di invio (stesso numero (settantina), stessi destinatari, stesso oggetto/corpo del messaggio). 

    Ho fatto anche una prova ad inviare le mail a blocchi da 10 per ogni script, e ogni script eseguito a distanza di un minuto l'uno dall'altro, pensando fosse un problema a gestire così tante email tutte assieme, ma niente. 

    Cosa può essere? avrei bisogno che fosse lo script ad inviarle ovviamente.

    Ogni piccolo consiglio sarà sicuramente d'aiuto.

    Per motivi di spazio vi propongo il caso di uno script che invia solamente due email a due destinatari ciascuna, in realtà poi nello script finale ci saranno circa una settantina di email con 2/3 destinatari ciascuno, ma il template per ogni oggetto email è lo stesso ripetuto solo tante volte.

    Const PR_ATTACH_MIME_TAG = "http://schemas.microsoft.com/mapi/proptag/0x370E001E"
    Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
    Const PR_ATTACHMENT_HIDDEN = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
    
    Sub SendMessage()
    dim list
    Set list = CreateObject("System.Collections.ArrayList")
    Set objOutlook = CreateObject("Outlook.Application")
    Set objOutlookMsg  = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
      Set .SendUsingAccount = objOutlook.Session.Accounts.item("account_invio@hotmail.com")
      Set myRecipient = .Recipients.Add ("indirizzo1@dominio.com")
      myRecipient.Type = 1
      Set myRecipient = .Recipients.Add ("indirizzo2@dominio.com")
      myRecipient.Type = 1
      .Subject = "Oggetto"
      .HTMLBody = "<html></html>"
      .Importance = 2
      .Save
    End With
    list.add objOutlookMsg
    
    Set objOutlookMsg  = objOutlook.CreateItem(olMailItem)
    With objOutlookMsg
      Set .SendUsingAccount = objOutlook.Session.Accounts.item("account_invio@hotmail.com")
      Set myRecipient = .Recipients.Add ("indirizzo1@dominio.com")
      myRecipient.Type = 1
      Set myRecipient = .Recipients.Add ("indirizzo2@dominio.com")
      myRecipient.Type = 1
      .Subject = "Oggetto"
      .HTMLBody = "<html></html>"
      .Importance = 2
      .Save
    End With
    list.add objOutlookMsg
    
    for each Item in list
        If Item.Class = 43 Then
            Dim oMail' As Outlook.MailItem
            Set oMail = Item
            oMail.Send
            WScript.Sleep 200
        End If
    next
    Set objOutlook = Nothing
    End Sub
    SendMessage()

     Grazie in anticipo.
    • Modificato samm995 mercoledì 13 giugno 2018 14:18
    martedì 12 giugno 2018 09:59