domingo, 6 de outubro de 2013

Anexando...

Este tema também já é antigo, mas sempre causa duvidas nas pessoas, já tínhamos postado sobre o Genexus Mail! versão em código nativo, mas não explorado muito sobre arquivos anexados que é muito simples também.

Neste caso, caso necessite incluir algum arquivo ao email, existe uma opção no tipo MailMessage, &mailmessage. Attachments, que é uma coleção de links de arquivos que podem ser incluídos por meio de uma operação Add()

 Event Enter

 // Conexao no provedor de email
 &smtpsession.Host     = 'smtp.gmail.com'
 &smtpsession.Port     = 465
 &smtpsession.Secure    = 1
 &smtpsession.Authentication  = 1
 &smtpsession.UserName    =
'***email sender***'
 &smtpsession.Password    = '*****'

  // remetente
  &smtpsession.Sender.Address  =
'***email sender***'
  &smtpsession.Sender.Name   = '*** Seu nome ***'

 &smtpsession.Login()
 if &smtpsession.ErrCode <> 0
  // composicao da mensagem
 &mailmessage.Text     = 'texto da mensagem'
 &mailmessage.Subject   ='titulo'

 // enviar para
 &mailrecipient.Address    =
'***email a enviar***'
 &mailrecipient.Name    = '*** nome da pessoa a receber ***'
 &mailmessage.To.Add(&mailrecipient)

 // anexos
 &arquivo      = 'C:\imagem.png'
 &mailmessage.Attachments.Add(&arquivo)


  msg(&smtpsession.ErrDescription)
 else
  &smtpsession.Send(&mailmessage)
   msg(&smtpsession.ErrDescription)
 endif

Endevent


Observe que a referencia ao arquivo a ser anexado é por meio do endereço físico do mesmo no diretório, não importando  a raiz da Web. Uma observação apenas, lembre-se que é possível utilizar uma procedure para gerar um relatório PDF que pode ser anexado, ou mesmo um arquivo XLS.

Neste ultimo caso, caso o arquivo seja grande, você deverá esperar até que o mesmo seja gerado fisicamente antes de anexar e enviar a mensagem, em certos casos é necessário programar um Delay devido ao processamento do arquivo.