Publicidade

Sames Davis

Enviar email Outlook qualquer versão Office

Olá pessoal,

Tenho um sistema que roda em vários micros e cada um deles com versões diferentes do office.

O meu código não está dando certo, segue

referenciei o outlook e usei o imports

Imports Microsoft.Office.Interop
    Private Sub btnEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnviar.Click
        Cursor.Current = Cursors.WaitCursor
        Try
            Dim tempApp As Microsoft.Office.Interop.Outlook.Application = New Microsoft.Office.Interop.Outlook.Application
            'Dim tempApp = GetObject(, "Outlook.Application")
            Dim tempNS As Outlook.NameSpace
            Dim MailFolder As Outlook.MAPIFolder
            tempNS = tempApp.GetNamespace("MAPI")
            tempNS.Logon(, , True, True)
            Dim newMail As Outlook.MailItem = Nothing
            MailFolder = tempNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox)
            newMail = MailFolder.Items.Add(Outlook.OlItemType.olMailItem)
            With newMail
                .To = txtPara.Text
                .Subject = txtAssunto.Text
                .Body = txtMensagem.Text
                .Send()
            End With
            newMail = Nothing
            MailFolder = Nothing
            tempNS = Nothing
            tempApp = Nothing
            DialogResult = DialogResult.Yes
        Catch ex As Exception
            MsgBox(ex.ToString())
            DialogResult = DialogResult.No
        Finally
            Cursor.Current = Cursors.Default
        End Try
    End Sub

 

se eu usar essa linha

Dim tempApp As Microsoft.Office.Interop.Outlook.Application = New Microsoft.Office.Interop.Outlook.Application

ele só funciona no office2007

se eu usar essa linha, ele dá a mensagem de que não posso criar objeto activex

Dim tempApp = GetObject(, "Outlook.Application")

o que faço ?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhá recomendo você usar as bibliotecas do .net (https://msdn.microsoft.com/pt-br/library/system.net.mail(v=vs.110).aspx) para disparar ao invés de tentar usar as do office.

Assim não terá nenhum problema de versão do office!

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque usar o outlook para realizar o envio se a aplicação já pode chamar diretamente o servidor SMTP/Exchange para enviar o e-mail?

 

SMTP:

http://www.andrealveslima.com.br/blog/index.php/2015/05/13/enviando-e-mails-com-c/

https://msdn.microsoft.com/en-us/library/swas0fwc(v=vs.110).aspx

 

Exchange:

https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos

  • Conteúdo Similar

    • Por Maykel-ctba
      Boa tarde!



      Gostaria de saber se há uma solução para o seguinte caso. Tenho um cliente hipotético que utiliza algo em torno de 30 assinaturas diferentes (uma com destaque para cada produto que comercializa). Hoje, cadastramos manualmente cada assinatura e ao enviar o e-mail, escolhemos uma delas para ser utilizada.



      Existe alguma configuração que faça esta escolha ser randômica automaticamente? Ou algum outro jeito?



      Utilizo Microsoft Outlook for Mac ou a suite Office 2016 para Windows 10.

    • Por Rhayan Soares
      Boa tarde comunidade, eu estou com uma duvida e queria saber se podem me auxiliar.

      Bem, aqui na empresa eu tenho vários problemas com o outlook excedendo o tamanho do .pst
      e pesquisando vi que alterando os registros no regedit poderia sanar meu problema. Porém eu
      queria automatizar esse processo já que são varios computadores e varias variaveis a serem alteradas
      criando uma regra (.reg) que alterasse de uma vez só os registros MaxLargeFileSize, WarnFileSize,
      WarnLargeFileSize com tamanhos já definidos por mim.

      Obrigado,

      Att: Rhayan Soares
    • Por barajasrichie
      Olá. Quando eu começar o meu Outlook eu recebo esta mensagem:
      Desculpe, não parece ser um problema com o Outlook no momento.
      Como reparar Outlook?

      obrigado
    • Por Mitaco
      Galéra boa tarde!
      Estou trabalhando num projeto que estamos construindo uma tela em WindowsForm que interage no Outlook. Preciso retornar do GAL(lista de todos os contatos do outlook). Isso já está feito. Minha dúvida neste momento é como filtrar essas informações. Pensei na maneira mais fácil, converter o objeto em um tipo IEnumerable e fazer uma consulta via linq retornando somente os contatos que eu preciso, mas quando por incrivel que pareça isso não está dando certo, não sei se por falta de atenção ou por burrice mesmo. Poderiam me dar uma luz?
      Segue um exemplo do que estou fazendo para filtrar a lista de contatos:
      Por algum motivo no Where o "x" está nullo, como se o objeto não estivesse conseguindo dar o cast.
      Evandro é um objeto do tipo List<Contato>
      Evandro.AddRange(Gal.Application.Session.GetGlobalAddressList().AddressEntries.Cast<Outlook.AddressEntry>() .Where(x => x.Name.Contains(NOME_QUE_ESTOU_BUSCANDO)) .Select( b => new ContatoTeste { IdContato = b.ID, NomeContato = b.Name }).Take(400)); Estou utilizando o VS 2008 Framework 3.5
      Valeu..