Atualmente, para poder utilizar no TOTVS | Application Server uma conta GMail para envio e recebimento de e-mails, é necessário configurar o protocolo de recebimento que será utilizado e configurar a utilização de aplicativos menos seguros.
Uma vez feita essa configuração, para poder utilizar a conta do GMail com o TOTVS | Application Server, é necessário configurar a chave Protocol na seção Mail no arquivo INI e utilizar o endereço de e-mail e senha da conta ao configurar um objeto da classe TMailManager ou TMailMng. A TMailMng não tem dependência da chave Protocol, devendo configurar o protocolo usando o construtor da classe (TMailMng:New).
Contudo, a partir de o Google, por motivo de segurança, irá descontinuar a configuração de aplicativos menos seguros. Para continuar usando a conta GMail com o TOTVS | Application Server após essa data, o é necessário configurar as Senhas de App. A documentação do Google para a utilização está em https://support.google.com/accounts/answer/185833 .
Para habilitar o uso de Senhas de App é necessário habilitar a Verificação em duas etapas. A documentação para habilitar essa configuração está disponível em https://support.google.com/accounts/answer/185839?hl=pt-BR .
Após habilitar a Verificação em duas etapas, aparecerá a opção de Senhas de App.
Clicando em Senhas de app, clique em Selecionar app, escolha Outro (nome personalizado), coloque um nome (Protheus, por exemplo) e clique em Gerar.
A senha será gerada e deve ser anotada, pois não ficará disponível após clicar em Concluído.
Essa configuração é independente da ativação dos protocolos POP e/ou IMAP nas configurações do e-mail Google. A definição de uso dos protocolos continua sendo necessária para o uso com o TOTVS | Application Server.
Uma vez que a senha tenha sido gerada e está definido qual protocolo será utilizado, para poder enviar e/ou receber e-mails é só configurar no TOTVS | Application Server o endereço de e-mail e essa senha gerada, não mais a senha da conta. A senha pode ser utilizada sem espaço entre os blocos que são mostrados.
user function gmail() Local oServer := TMailManager():New() Local oMsg := TMailMessage():New() Local cSnd := "smtp.gmail.com" Local cRcv := "imap.gmail.com" Local nSndPort := 0 Local nRcvPort := 0 Local cUser := "[email protected]" Local cPass := "gikzztcmxdcrnwhi" Local cTo := "[email protected]" Local nMessages := 0 oServer:SetUseTLS( .T. ) if oServer:Init( cRcv, cSnd, cUser, cPass, nRcvPort, nSndPort ) <> 0 conout( "Erro init" ) return endif //connect on SMTP server, to send e-mails conout( "Connecting" ) if oServer:SMTPConnect() <> 0 conout( "SMTPConnect error" ) return endif conout( "Authenticating" ) if oServer:SMTPAuth( cUser, cPass ) <> 0 conout( "Error authenticating account " + cUser ) return endif oMsg:cDate := cValToChar( Date() ) oMsg:cFrom := cUser oMsg:cTo := cTo oMsg:cCc := Nil oMsg:cBcc := Nil oMsg:cSubject := "Subject: test" oMsg:MsgBodyType( "text/plain" ) oMsg:MsgBodyEncode( 1 ) oMsg:cBody := "Test" conout( "Sending message" ) nError := oMsg:Send( oServer ) If nError <> 0 conout( "Error: " + oServer:getErrorString( nError ) ) else conout( "Message sent" ) endif //disconnect from SMTP server oServer:SMTPDisconnect() //connect on IMAP server, to receive e-mails xRet := oServer:IMAPConnect() if xRet <> 0 conout( "IMAPConnect error" ) return endif oMsg:Clear() oServer:GetNumMsgs( @nMessages ) //if there is messages in the account if nMessages > 0 //receiving just 1 e-mail xRet := oMsg:Receive( oServer, 1 ) if xRet <> 0 conout( "Error on receive" ) else conout( " Date: " + oMsg:cDate ) conout( " From: " + oMsg:cFrom ) conout( " To: " + oMsg:cTo ) conout( "Subject: " + oMsg:cSubject ) conout( " Body: " + oMsg:cBody ) endif endif //disconnect from IMAP server xRet := oServer:IMAPDisconnect() if xRet <> 0 conout( "IMAPDisconnect error" ) return endif conout( "Success!!!" ) return