Ao usar várias contas, como garantir que os e-mails sejam enviados da conta correta

1

Eu uso duas contas de e-mail com o Outlook. Um para o trabalho, um para pessoal.

O problema que tenho é que estou sempre enviando e-mails de trabalho da minha conta pessoal!

Como faço para configurar uma lista de "não enviar e-mails para esses endereços, se enviados de uma conta específica"?

    
por Dave 10.04.2014 / 12:16

1 resposta

4

Eu já vi variações desta questão antes, mas não consigo encontrar nenhuma agora, então pensei em perguntar e responder.

Eu escrevi este VBa para resolver o problema! Agora, quando clico em enviar, se não estiver enviando uma conta específica, ele procurará pelo "enviar para a lista" e solicitará que eu cancele ou continue. Isto significa que é maravilhosamente não invasivo! Se eu clicar em cancelar (não enviar), o email permanecerá aberto e inalterado.

Abra a faixa do desenvolvedor, abra o Visual Basic. Abra o 'ThisOutlookSession' e cole o seguinte código

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim oMail As MailItem
  Set oMail = Item

  Dim shouldSend As Boolean
  shouldSend = ShouldSendEmailFromBusinessAccount(oMail)
If Not (shouldSend) Then
    MSG1 = MsgBox("Are you sure you want to send this from the account you're using?", vbYesNo, "Are you sure?")
End If

If MSG1 = vbNo Then
    Cancel = True
End If

'Cancel = True

End Sub

Private Function ShouldSendEmailFromBusinessAccount(ByVal oMail As MailItem) As Boolean

    ShouldSendEmail = True

 'Set the recipients domains/email addresses you want to check.
    Dim sendToEmails(0 To 2) As String
    sendToEmails(0) = "@domain.co.uk" ' block a domain by TLD
    sendToEmails(1) = "domiain2" ' block an entire domain
    sendToEmails(2) = "[email protected]" ' block a person



'The only account you want to send emails to
    Dim theAccountsToSendEmailsFrom(0 To 0) As String
    theAccountsToSendEmailsFrom(0) = "[email protected]"

    Dim recCount As Integer
    Dim myRec As Outlook.Recipient
    Dim mySender As String

    mySender = oMail.SendUsingAccount

    For a = 0 To UBound(theAccountsToSendEmailsFrom)

    theAccountToSendEmailsFrom = theAccountsToSendEmailsFrom(a) ' note, one is plural

        If (InStr(mySender, theAccountToSendEmailsFrom) = 0) Then

            recCount = oMail.Recipients.Count
            For i = 1 To recCount

                Set myRec = oMail.Recipients(i)
                myAddress = myRec.Address

                For j = 0 To UBound(sendToEmails)
                    If (InStr(LCase(myAddress), LCase(sendToEmails(j)))) Then
                        MsgBox ("Ooops, you are going to send to: " & sendToEmails(j) & " from " & mySender)
                        ShouldSendEmail = False
                        Exit For
                    End If
                Next

            Next
        End If

    Next

    ShouldSendEmailFromBusinessAccount = ShouldSendEmail

End Function

Como só desejo enviar para os domínios da minha conta de trabalho, se eu tentar enviar de qualquer outro, recebo:

Caso contrário, ele será enviado normalmente.

O código acima irá verificar todos os endereços de e-mail enviados! Isto significa que irá verificar o para, CC e BCC ... Assim que encontrar um único destinatário correspondente, ele mostrará o prompt perguntando se você deseja enviar ou não.

    
por 10.04.2014 / 12:16