Envio de E-mail pelo formulário LATROMI

Olá @Framos!

Vou mostrar um exemplo de como enviar para o GMail. Dependendo do servidor de e-mails pode ter alguma diferença no valor dos parâmetros. Aí tem que testar pra ver se funciona.

Procedimento

Neste meu exemplo, o procedimento que envia o e-mail tem duas instruções fundamentais:

  1. Criar Record - Usado para acessar o banco de dados e carregar as configurações de SMTP.
  2. Executar Comando C# - Usado para executar o código C# que faz o envio do e-mail.

Criar Record

Use um comando SQL que retornar as configurações SMTP. Abaixo um exemplo bem simples trazendo os valores fixos, em uma record chamada rSMTP:

SELECT 
	'smtp.gmail.com' 			AS smtp_host
	, 587 						AS smtp_port
	, 'user@gmail.com' 	        AS smtp_name
	, 'senha_do_email' 			AS smtp_password

Executar Comando C#

Agora vamos adicionar uma instrução “Executar Comando C#”. No código que vamos utilizar, os dados da configuração SMTP serão capturados da Record e usados para configurar o objeto System.Net.Mail.SmtpClient:

using System.Net;
using System.Net.Mail;
using System.Net.Mime;

// Obtem as configurações da Record
var rSMTP = GetRecord("rSMTP");

string smtp_host = (string)rSMTP["smtp_host"];
int smtp_port = Convert.ToInt32(rSMTP["smtp_port"]);
string smtp_address = (string)rSMTP["smtp_name"];
string smtp_alias = "Latromi não responda";
string smtp_username = smtp_address;
string smtp_password = (string)rSMTP["smtp_password"];

// Valida campo obrigatórios
if (string.IsNullOrEmpty(smtp_host))
	throw new InvalidOperationException("Endereço do Servidor SMTP não informado.");

if (smtp_port == 0)
	throw new InvalidOperationException("Porta do Servidor SMTP não informado.");

if (string.IsNullOrEmpty(smtp_username) || string.IsNullOrEmpty(smtp_username))
	throw new InvalidOperationException("Endereço de e-mail não informado.");

// Texto da mensagem
var messageBuilder = new StringBuilder()
	.AppendLine("Olá!")
	.AppendLine("Essa é uma mensagem de teste...")
	.AppendLine("Tchau!");

using (SmtpClient client = new SmtpClient())
{
    MailMessage message = new MailMessage()
    {
        From = new MailAddress(smtp_address, smtp_alias),
        // Assunto
        Subject = "Email de Teste",
        SubjectEncoding = Encoding.UTF8,
        IsBodyHtml = false,
        // Mensagem
        Body = messageBuilder.ToString(),
        BodyEncoding = Encoding.UTF8,
    };

    // Adiciona destinatarios
    message.To.Add(new MailAddress("endereco de email do destinatário", "nome do destinatário"));
                
    // Para adicionar endereços em cópia, descomente a linha abaixo
    //message.CC.Add(new MailAddress("endereco de email de CC", "nome do destinatário CC"));

    // Configuração do SMTP
    client.Host = smtp_host;
    client.Port = smtp_port;
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;

    // Autenticação
    client.Credentials = new NetworkCredential(smtp_username, smtp_password);

    // Envia o e-mail (síncrono)
    client.Send(message);
}

O e-mail recebido ficaria mais ou menos assim:

image


Atualização

Um novo tipo de Objeto chamado Bot de Mensagens pode ser usado para enviar mensagens pelo LATROMI. É uma solução muito melhor do que a abordada acima.

Mais informações no link abaixo: