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:
- Criar Record - Usado para acessar o banco de dados e carregar as configurações de SMTP.
- 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:
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: