Apresento a vocês o script pronto e funcional para se criar em C# ASP.NET uma página de contatos que pode ser inclusa em qualquer site para envio de e-mail.
Neste exemplo além de aprender a enviar e-mails com o ASP.NET em C#, aprenderemos a criar uma classe para ler arquivos XML para preenchimentos de objetos do tipo ComboBox, isto é uma tarefa útil pois evita acessos desnecessários ao banco de dados.
Neste exemplo utilizaremos 4 arquivos Default.aspx/Default.aspx.cs, FillDropdownList.cs, ContatoAssunto.xml, Estados.xml, estes dois últimos deverão ser criados na pasta XMLFiles.
Vale apena destacar que a aplicação foi criada no VS 2008 Framework 3.5 e o código completo da aplicação encontra-se em anexo ao arquivo.
Espero que esta possa lhe ser de grande utilidade.
//-- Definição do layout (Default.aspx)//-- Definição do código (Default.aspx.cs) #region Defindindo namespace using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Net.Mail; using System.Net; using System.IO; // Usei esta definição pois em ninha Classe FillDropdownList.cs eu criei um namespace using EmailSend.Class; #endregion public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Limpo o conteudo do objeto label this.lbl_status.Text = ""; // Verifico se a pagina NÃO foi submetida if (!IsPostBack) { // Obtenho o caminho completo da localização do arquivo ContatoAssunto.xml string urlXmlService = Server.MapPath("XMLFiles/ContatoAssunto.xml"); // Executo o metodo que le o arquivo XML e preenche em um ComboBox FillDropdownList ddl = new FillDropdownList(this.DDListAssunto, urlXmlService, "Descricao", "IDAssunto", "assunto", "Selecione"); ddl.FillDropdown(); // Obtenho o caminho completo da localização do arquivo Estados.xml string urlXmlEstado = Server.MapPath("XMLFiles/Estados.xml"); // Executo o metodo que le o arquivo XML e preenche em um ComboBox FillDropdownList ddlUF = new FillDropdownList(this.DDListEstados, urlXmlEstado, "IDEstado", "IDEstado", "Estado", "Selecione"); ddlUF.FillDropdown(); } // Forco o foco no primeiro campo do formulario this.DDListAssunto.Focus(); } protected void btEnviar_Click(object sender, EventArgs e) { // Rotina de Envio de E-mail, estou utilizando tratamento de erro Try..Catch // isto é minha rotina esta dentro da chave try, se por ventura acontecer algum // erro a execução passa IMEDIATAMENTE para o codigo existente na chave Catch try { //// Criando variaveis de recebimento de dados; //DateTime _dtNow = DateTime.UtcNow; // Montando o corpo da E-mail string CorpoEmail = "" + "
Data : " + DateTime.UtcNow.ToString() + "
Assunto: (" + this.DDListAssunto.SelectedValue.ToString() + ") - " + this.DDListAssunto.SelectedItem.Text.ToString() + "
Nome : " + this.txt_nome.Text.ToString() + "
E-Mail : " + this.txt_email.Text.ToString() + "
Empresa: " + this.txt_empresa.Text.ToString() + "
PaÃs : " + this.txt_pais.Text.ToString() + "
Cidade : " + this.txt_cidade.Text.ToString() + "
Estado : " + this.DDListEstados.SelectedValue.ToString() + "
Fone 1 : " + this.txt_fone1.Text.ToString() + "
Fone 2 : " + this.txt_fone2.Text + "
Depto : " + this.txt_departamento.Text + "
Setor : " + this.txt_setor.Text.ToString() + "
Observ : " + this.txt_Obs.Text.ToString(); Response.Write("Para ocultar este texto, comente estas linhas....
"); Response.Write(CorpoEmail.ToString()); Response.Write("
"); return; // Estancia da Classe de Mensagem MailMessage mailMessage = new MailMessage(); // Remetente MEU E-MAIL, estando esta pagina em seu site quem esta enviando // o e-mail é vc MESMO o cliente esta apenas fornecendo dados para que VOCE // possa posteriormente entrar encontato com ele. mailMessage.From = new MailAddress("[email protected]"); // O Destinario tambem TAMBÃM é VOCE, para que assim o e-mail chegue a sua conta (outlook) mailMessage.To.Add("[email protected]"); // Se houver necessidade vc pode enviar uma copia do e-mail para alguem, como por exemplo // para o proprio cliente para que ele fique ciente de o e-mail de contato foi enviado e que // logo voce entrara em contato mailMessage.CC.Add("[email protected]"); // Assunto mailMessage.Subject = "Contato MinhaEmpresa.com.br - >> " + this.DDListAssunto.SelectedItem.Text.ToString() + " - " + this.DDListAssunto.SelectedValue.ToString(); // A mensagem é do tipo HTML(true) ou Texto Puro (false)? mailMessage.IsBodyHtml = true; // Corpo da Mensagem, conteudo da variavel criada acima mailMessage.Body = CorpoEmail.ToString(); // *************************************************************************** // *** // *** A T E N C A O // *** // *************************************************************************** // Se voce pode habilitar este trecho para enviar arquivos em anexo. // NAO SE ESQUECA DE INCLUIR O OBJETO FileUpload NO DESIGNER DA PAGINA // criando um loop pode ser enviado mais de um anexo. // Recupera o binario enviado pelo FileUpload // MemoryStream MS = new MemoryStream(fileAnexo.FileBytes); // Anexa o Stream do arquivo // Attachment anexo = new Attachment(MS, fileAnexo.FileName); // mailMessage.Attachments.Add(anexo); // *************************************************************************** // Estancia a Classe de Envio; as informações aqui inseridas voce obtem com o provedor // onde hospedou seu site SmtpClient smtpClient = new SmtpClient("mail.MinhaEmpresa.com.br"); // Credencial para envio por SMTP Seguro (APENAS QUANDO O SERVIDOR EXIGE AUTENTICAÃÃO) smtpClient.Credentials = new NetworkCredential("[email protected]", "MinhaSenha"); // Envia a mensagem smtpClient.Send(mailMessage); // Informa que o e-mail foi enviado com sucesso this.lbl_status.Text = "Dados enviado com sucesso. Em breve entraremos em contato."; // Limpa os campos do formulario this.DDListAssunto.SelectedIndex = 0; this.DDListEstados.SelectedIndex = 0; this.txt_nome.Text = ""; this.txt_email.Text = ""; this.txt_EmailConf.Text = ""; this.txt_empresa.Text = ""; this.txt_pais.Text = ""; this.txt_cidade.Text = ""; this.txt_fone1.Text = ""; this.txt_fone2.Text = ""; this.txt_departamento.Text = ""; this.txt_setor.Text = ""; this.txt_Obs.Text = ""; } catch (Exception f) { // Se houver algum erro informa o usuário this.lbl_status.Text = "Não foi possÃvel enviar dados. Tente mais tarde"; } } } //-- Definição do classe (FillDropdownList.cs) #region Defindindo namespace using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; #endregion namespace EmailSend.Class { public class FillDropdownList { #region Criando Variaveis Internas private DropDownList _ddl; private string _ddlText; private string _ddlValue; private string _nodeElement; private string _urlXml; private string _textDefault; #endregion ///