C# - Enviando Emails PDF
C# - Enviando Emails PDF
C# - Enviando Emails PDF
C#
- Enviando Emails
//cria
uma mensagem 'cria
uma mensagem
MailMessage mail = new MailMessage(); Dim mail As New MailMessage()
MailMessage
- Classe que representa uma mensagem de email que pode ser
enviada;
Nome Descrição
MailMessage() Inicia uma instância vazia
da classe
MailMessage(MailAddress, MailAddress) Inicia uma nova instância
da classe usando os objetos da classe MailAddress.
MailMessage(String, String) Inicia uma nova instância
da classe usando os objetos da classe String.
MailMessage(String, String, String,
String) Inicia uma nova instância
da classe MailMessage
A mensagem é composta do
assunto : Subject e do Texto do assunto :
Body.
MailAddress
- Representa um endereço de email do remetente e/ou
destinatário; Um endereço de
Email é composto pelo nome de
Usuário, nome do Host e,
opcionalmente, um nome de exibição.
Fazemos assim:
1. Informamos o nome do
servidor host SMTP que usaremos para enviar o
email;
A propriedade Host
define nome do host pode ser o nome ou o
endereço IP;
A propriedade Port
define a porta usada do servidor;
<configuration>
https://www.macoratti.net/10/12/c_email2.htm 1/7
07/06/22, 15:18 C# - Enviando Emails
<system.net>
<mailSettings>
<smtp deliveryMethod="network">
<network
host="localhost"
port="25"
defaultCredentials="true"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
2. Definimos as
credenciais para a autenticação quando exigidas
pelo servidor SMTP;
A propriedade Credentials
define as credenciais usadas para autenticar
o cliente que vai enviar o
email;
3. Informamos o endereço
de email do remetente;
4. Informamos o endereço
de email ou a lista de endereço de email dos
destinatários;
5. Montamos a mensagem
definindo o Subject e o Body;
6. Enviamos a mensagem
usando método Send ou SendAsync;
OBS: Se você estiver usando a aplicação no seu servidor então não há necessidade de nenhuma configuração. Se estiver usando localmente
terá que configurar o servidor SMTP .
System.Net.Mail
System.Net.Mime
System.Net.Configuration
System.Net
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
</smtp>
</mailSettings>
</system.net>
</configuration>
Para obter os valores do arquivo de configuração você pode usar o seguinte código:
//obtem os valores smtp do arquivo de configuração . Não vou usar estes valores estou apenas mostrando como obtê-los
Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(null);
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
if (mailSettings != null)
{
string host = mailSettings.Smtp.Network.Host;
string password = mailSettings.Smtp.Network.Password;
string username = mailSettings.Smtp.Network.UserName;
int port = mailSettings.Smtp.Network.Port;
}
https://www.macoratti.net/10/12/c_email2.htm 2/7
07/06/22, 15:18 C# - Enviando Emails
Obs: Para tornar
mais segura estas informações podemos criptografar o arquivo de
configuração mas isso eu vou falar em outro
artigo.
Abra o Visual C# 2010 Express Edition e crie um novo projeto do tipo Windows
Application com o nome EmailHandler;
3 controles GroupBox :
grpDePara , grpMensagem e grpAnexos;
No groupBox grpDePara inclua 3
Labels e 3 TextBox : txtEnviarPara, txtEnviadoPor e
txtAssuntoTitulo;
No groupBox grpMensagem inclua
1 TextBox Multiline=True, txtMensagem;
No groupBox grpAnexos inclua 1
TextBox txtAnexos e 1 Button btnIncluir;
Inclua também mais dois
Buttons no formulário: btnEnviar, btnCancelar e 1
controle OpenFileDialog - ofd1;
EnviarMensagemEmail();
EnviarMensagemComAnexos();
ValidarEnderecoEmail();
using System;
using System.Collections;
using System.Net.Mail;
using System.Net.Mime;
using System.Net;
using System.Text.RegularExpressions;
using System.Net.Configuration;
namespace Macoratti.EnviaEmail
https://www.macoratti.net/10/12/c_email2.htm 3/7
07/06/22, 15:18 C# - Enviando Emails
Vamos iniciar definindo o método
EnviarMensagemEmail() mas antes de iniciar com o código da mesma
vamos documentar o nosso
método teclando 3 barras (/) de forma
que o Visual C# abra o bloco <summary> para documentação
do método e em seguida
vamos declarar quais os parâmetros
usados no método e qual o seu retorno:
/// <summary>
/// Transmite uma mensagem de email sem anexos
/// </summary>
/// <param name="Destinatario">Destinatario
(Recipient)</param>
/// <param name="Remetente">Remetente
(Sender)</param>
/// <param name="Assunto">Assunto da mensagem
(Subject)</param>
/// <param name="enviaMensagem">Corpo da
mensagem(Body)</param>
/// <returns>Status da mensagem</returns>
public static string EnviaMensagemEmail(string Destinatario, string Remetente,string Assunto, string enviaMensagem)
{
try
{
// valida o email
bool bValidaEmail = ValidaEnderecoEmail(Destinatario);
return "Mensagem enviada para " + Destinatario + " às " + DateTime.Now.ToString() + ".";
}
catch (Exception ex)
{
string erro = ex.InnerException.ToString();
return ex.Message.ToString() + erro ;
}
}
O código da classe EnviarMensagemComAnexos() a é dado a seguir. Ele faz a mesma coisa que o método anterior obtendo os anexos e os
incluindo na mensagem para envio;
if (bValidaEmail == false)
return "Email do destinatário inválido:" + Destinatario;
https://www.macoratti.net/10/12/c_email2.htm 4/7
07/06/22, 15:18 C# - Enviando Emails
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
NetworkCredential cred = new NetworkCredential("[email protected]", "SUA_SENHA");
client.Credentials = cred;
// Inclui as credenciais
client.UseDefaultCredentials = true;
// envia a mensagem
client.Send(mensagemEmail);
return "Mensagem enviada para " + Destinatario + " às " + DateTime.Now.ToString() + ".";
}
catch (Exception ex)
{
string erro = ex.InnerException.ToString();
return ex.Message.ToString() + erro;
}
}
O método para validar emails é dado abaixo. Ela usa uma expressão regular para validar o email informado;
/// <summary>
/// Confirma a validade de um email
/// </summary>
/// <param name="enderecoEmail">Email a ser validado</param>
/// <returns>Retorna True se o email for valido</returns>
public static bool ValidaEnderecoEmail(string enderecoEmail)
{
try
{
//define a expressão regulara para validar o email
string texto_Validar = enderecoEmail;
Regex expressaoRegex = new Regex(@"\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}");
Agora só nos resta definir o código usado no formulário frmTesteEmail.cs que irá ser usado nos eventos dos botões de comando : Incluir,
Cancelar e Enviar;
/// <summary>
/// Um array lista contento todos os anexos
/// </summary>
ArrayList aAnexosEmail;
/// <summary>
/// Envia uma mensagem de mail com ou sem anexos
/// </summary>
https://www.macoratti.net/10/12/c_email2.htm 5/7
07/06/22, 15:18 C# - Enviando Emails
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnEnviar_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(txtEnviarPara.Text))
{
MessageBox.Show("Endereço de email do destinatário inválido.", "Erro ");
return;
}
if (String.IsNullOrEmpty(txtEnviadoPor.Text))
{
MessageBox.Show("Endereço de email do remetente inválido.", "Erro ");
return;
}
if (String.IsNullOrEmpty(txtAssuntoTitulo.Text))
{
MessageBox.Show("Definição do assunto inválida.", "Erro ");
return;
}
if (String.IsNullOrEmpty(txtMensagem.Text))
{
MessageBox.Show("Mensagem inválida.", "Erro ");
return;
}
O código valida o email e verifica se existem anexos chamando a rotina pertinente conforme o caso.
/// <summary>
/// Incluir arquivos a serem anexaso na mensagem
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnIncluir_Click(object sender, EventArgs e)
{
if (ofd1.ShowDialog() == DialogResult.OK)
{
try
{
string[] arr = ofd1.FileNames;
aAnexosEmail = new ArrayList();
txtAnexos.Text = string.Empty;
https://www.macoratti.net/10/12/c_email2.htm 6/7
07/06/22, 15:18 C# - Enviando Emails
aAnexosEmail.AddRange(arr);
///
<summary>
/// Sai da aplica‡Æo
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
private void btnCancelar_Click(object sender, EventArgs
e)
{
Application.Exit();
}
Com isso temos tudo pronto para testar o projeto para envio de emails.
Referências:
Enviando emails com ASP.NET : HTML e anexos -
Macoratti.net
Emails , emails , emails... - Macoratti.net
Enviando emails com ASP.NET - Macoratti.net
Envio de Cartões Postais - Parte 02 - José Carlos Macoratti - ASP
https://www.macoratti.net/10/12/c_email2.htm 7/7