Uteis
Css
Json
Nfe
Windev
ler sobre isso email
=== ler sobre isso email
[23:46, 25/09/2024] Adriano Boller: Melhorias de Send mail na v 29
[23:46, 25/09/2024] Adriano Boller: Recursos mais modernos disponíveis na versão 29 do WinDev. Isso permitirá que a procedure seja mais flexível e reutilizável.
### Procedure com passagem de parâmetros e recursos da versão 29:
Na versão 29, temos melhorias na segurança e na codificação de mensagens. Vamos passar os seguintes parâmetros para a procedure:
- *SMTP server*: endereço do servidor SMTP.
- *Port*: porta usada para o envio (587 para TLS).
- *Sender email*: o e-mail do remetente.
- *Password*: senha do e-mail do remetente.
- *Recipient email*: e-mail do destinatário.
- *Subject*: assunto do e-mail.
- *Message*: corpo da mensagem.
Aqui está a procedure atualizada:
wlanguage
//##############################
// Procedure para enviar e-mail com passagem de parâmetros e recursos da versão 29
PROCEDURE SendEmailWithParams(smtpServer is string, smtpPort is int, senderEmail is string, password is string, recipientEmail is string, subject is string, messageText is string)
// Declaração de variáveis para a configuração do SMTP
smtpSession is EmailSMTPSession
smtpSession.ServerAddress = smtpServer // Endereço do servidor SMTP
smtpSession.Name = senderEmail // E-mail do remetente
smtpSession.Password = password // Senha do e-mail
smtpSession.Port = smtpPort // Porta SMTP (padrão 587 para TLS)
smtpSession.Option = emailOptionSecuredTLS // Usar TLS para criptografia (mais seguro)
// Iniciar a sessão SMTP
IF NOT EmailStartSMTPSession(smtpSession) THEN
Error("Erro ao iniciar a sessão SMTP: ", ErrorInfo(errMessage))
RETURN
END
// Configurando a mensagem de e-mail
emailMessage is Email
emailMessage.Sender = senderEmail // Endereço de quem envia
emailMessage.Recipient[1] = recipientEmail // Endereço do destinatário
emailMessage.Subject = subject // Assunto do e-mail
emailMessage.Message = messageText // Corpo da mensagem
// Exemplo de anexo usando recurso da versão 29
// Anexar arquivos usando um array, disponível na versão 29 para maior flexibilidade
attachments is array of string
attachments = ["C:\caminho\para\arquivo.pdf", "C:\caminho\para\outro_arquivo.txt"]
FOR EACH file OF attachments
emailMessage.Attach(file)
END
// Enviar o e-mail
IF NOT EmailSendMessage(smtpSession, emailMessage) THEN
Error("Erro ao enviar o e-mail: ", ErrorInfo(errMessage))
RETURN
END
// Fechar a sessão SMTP
EmailCloseSession(smtpSession)
Info("E-mail enviado com sucesso!")
//##############################
### Explicação do código atualizado:
1. *Passagem de parâmetros*:
- *smtpServer*: O endereço do servidor SMTP é passado como parâmetro (exemplo: "smtp.gmail.com").
- *smtpPort*: A porta usada para a conexão SMTP (geralmente 587 para TLS).
- *senderEmail* e *password*: O e-mail do remetente e a senha também são passados como parâmetros, permitindo flexibilidade.
- *recipientEmail*: O e-mail do destinatário é passado como parâmetro.
- *subject* e *messageText*: O assunto e o corpo do e-mail são personalizados através da passagem de parâmetros.
2. *Recursos da versão 29*:
- *Array para anexos: Um recurso interessante na versão 29 é a possibilidade de usar um **array* para anexos, tornando o código mais flexível e organizado.
- *Melhorias de segurança: O uso de **TLS* para criptografia é mantido com a opção emailOptionSecuredTLS, garantindo segurança durante o envio.
3. *Validação de erros aprimorada*:
- *ErrorInfo(errMessage)*: Utilizamos essa função para obter informações detalhadas sobre erros, proporcionando uma melhor experiência de depuração.
### Como usar:
Você pode chamar a procedure *SendEmailWithParams* passando os parâmetros necessários:
wlanguage
SendEmailWithParams("smtp.gmail.com", 587, "seuemail@exemplo.com", "sua_senha", "destinatario@exemplo.com", "Assunto do E-mail", "Aqui está o corpo da mensagem.")
### Notas adicionais:
- *Segurança*: No caso de servidores de e-mail como Gmail, certifique-se de ativar o suporte para "apps menos seguros" ou configurar um token de autenticação específico, dependendo do provedor de e-mail.
- *Anexos*: No exemplo, mostramos como anexar múltiplos arquivos usando um array. Se quiser enviar sem anexos, basta não definir o array attachments.
Essa abordagem torna o envio de e-mail flexível e seguro, utilizando os recursos modernos da versão 29 do WinDev.
Se tiver uma sugestão melhor mande aqui
Nenhum comentário:
Postar um comentário