Ola,
Uma solução que adotei, devido ao oficce365 nao permitir tambem o uso do CDO, foi o envio através do UNIDANFE.
É possÃvel usar o UniDANFE para enviar e-mails de outras aplicações, como por exemplo,
enviar boletos de cobranças e outras mensagens geradas pelo ERP.
Para isso, basta gerar um XML com a estrutura abaixo, e salvá-lo na pasta 'Email\Enviar',
que fica dentro da pasta onde o UniDANFE está instalado
(ex: c:\unimake\uninfe\email\enviar\boletos-fat-1234.xml), com qualquer nome único.
Após gerar o arquivo de e-mail, o UniDANFE tentará enviá-lo automaticamente na próxima vez em que um e-mail normal dele for gerado.
Para forçar o envio imediatamente, após gerar o arquivo execute o UniDANFE para fazer isso. Ex: UniDANFE.exe envia_email=1
Estrutura do arquivo XML com o conteúdo do e-mail a ser enviado pelo UniDANFE:
<?xml version="1.0" encoding="UTF-8" ?>
<emailExt>
<EmailRemetente>
nfe@meudominio.com.br</EmailRemetente>
<NomeRemetente> Meu Nome Ltda</NomeRemetente>
<Data> 2015-12-25</Data>
<Destinatarios>
destinatario@gmail.com</Destinatarios>
<CC>
ccemail1@mail.com;outro@novomail.com</CC>
<BCC>
bcc@email.com;dois@novoemail.com;tres@dominio.com</BCC>
<ReplyTo>
responder-para@meudominio.com</ReplyTo>
<Assunto> Boletos para pagamento</Assunto>
<Anexo1> c:\pasta\boleto1.pdf</Anexo1>
<Anexo2> c:\outrapasta\novoarquivo.xml</Anexo2> // ate 9 anexos
<ComprovanteTEF1> c:\pasta\boleto1.pdf</ComprovanteTEF1>
<SolicitarConfirmacaoLeitura>0</SolicitarConfirmacaoLeitura>
<Prioridade> 3</Prioridade>
<ClienteEmailExterno>0</ClienteEmailExterno>
<Texto> Bem vindo ao uso de e-mail externo para o UniDANFE.;;Esse é um exemplo de texto para o corpo do e-mail.;Use o ponto-e-vÃrgula para quebrar linhas.;;att,;Minha empresa</Texto>
</emailExt>
Basta criar um xml e colocar na pastas de envio de email do UNIDANFE.
FUNCTION ENVIA_UNIDANFE( cMSG_HT, aDesti, aAssu, Ane1, Ane2 )
PRIVATE cXml := []
PRIVATE aEmailRemetente := [noreply@teste.med.br]
PRIVATE aNomeRemetente := [Medicamentos]
PRIVATE aData := dtoc(date())
PRIVATE aDestinatarios := aDesti
PRIVATE aCC
PRIVATE aBCC
PRIVATE aReplyTo
PRIVATE aAssunto := aAssu
PRIVATE aAnexo1 := Ane1
PRIVATE aAnexo2 := Ane2
PRIVATE aComprovanteTEF1
PRIVATE aSolicitarConfirmac
PRIVATE aPrioridade := [0]
PRIVATE aClienteEmailExtern
PRIVATE aTexto := []
PRIVATE cMSG_HTML := cMSG_HT
PRIVATE cXml_ARQ := [C:\Unimake\UniNFe\email\enviar\ENVIA]+SUBSTR(TIME(),1,2)+SUBSTR(TIME(),4,2)+SUBSTR(TIME(),7,2)+[.XML]
if cUSUARIO = [GILBERTO]
aDestinatarios := [gilberto@gmail.com,]+aDESTI
endif
cXml += [<?xml version="1.0" encoding="UTF-8" ?>]
cXml += [<emailExt>]
cXml += XmlTag( [EmailRemetente] , StringXml( aEmailRemetente ) )
cXml += XmlTag( [NomeRemetente] , StringXml( aNomeRemetente ) )
cXml += XmlTag( [Data] , StringXml( aData ) )
cXml += XmlTag( [Destinatarios] , StringXml( aDestinatarios ) )
//cXml += XmlTag( [CC] , StringXml( aCC ) )
//cXml += XmlTag( [BCC] , StringXml( aBCC ) )
//cXml += XmlTag( [ReplyTo] , StringXml( aReplyTo ) )
cXml += XmlTag( [Assunto] , StringXml( aAssunto ) )
IF !EMPTY(aAnexo1)
cXml += XmlTag( [Anexo1] , StringXml( aAnexo1 ) )
ENDIF
IF !EMPTY(aAnexo2)
cXml += XmlTag( [Anexo2] , StringXml( aAnexo2 ) )
ENDIF
//cXml += XmlTag( [ComprovanteTEF1] , StringXml( aComprovanteTEF1 ) )
//cXml += XmlTag( [SolicitarConfirmacaoLeitura] , StringXml( aSolicitarConfirmac ) )
cXml += XmlTag( [Prioridade] , StringXml( aPrioridade ) )
//cXml += XmlTag( [ClienteEmailExterno] , StringXml( aClienteEmailExtern ) )
cXml += XmlTag( [Texto] , StringXml( cMSG_HTML ) )
cXml += [</emailExt>]
MemoWrit( cXml_ARQ, cXml)
inkey(0.5)
cComando:= [C:\Unimake\UniNFe\UniDANFE.exe envia_email=1]
xhbrun( cComando, .f., )
RETURN NIL
Achei também na net o envio pelo powershell, so que não consegui fazer funcionar devido as minhas limitações.
Se alguem souber como usar via power, seria interessante disponibilizar, para termos mais um recurso.
Prezados,
Segue o script em Power Shell para enviar e-mail autenticado:
Obs.Basta salvar com extensão *.ps1
$SMTPServer = 'smtp.xxx.com.br'
$SMTPPort = '587'
$Username =
'alerta@xxx.com.br'
$Password = 'sua-senha'
$to =
'alerta@xxx.com.br'
$cc =
'suporte@xxxxx.com.br'
$subject = 'Teste Felipe'
$body = 'Teste de Backup'
$attachment = 'c:\Temp\texto.txt'
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($to)
$message.cc.add($cc)
$message.from = $username
$message.attachments.add($attachment)
$attachment = 'C:\Script\Anexo1.htm'
$attachment2 = 'C:\Script\Anexo2.htm'
$message.attachments.add($attachment)
$message.attachments.add($attachment2)
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
write-host 'Mail Sent'
Fica a dica...