//-- Definição do layout (Default.aspx)
<body>
<!---[ I - Rotina Valida Dominio ]------------------------------------------------------------------------------>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="2" cellspacing="2" width="100%" >
<tr>
<td colspan="2" align="center">
<h2><asp:Label
ID="lbl_status"
runat="server"
Text=""
Font-Bold="True"
Font-Italic="True"
Font-Overline="False"
Font-Strikeout="False"
Font-Underline="False"
ForeColor="Red"
Font-Size="Small">
</asp:Label></h2>
</td>
</tr>
<tr><td width="15%" align="right" valign="middle" > Assunto :</td>
<td width="80%" align="left">
<asp:DropDownList
ID="DDListAssunto"
runat="server"
TabIndex="1">
</asp:DropDownList></td></tr>
<tr><td width="15%" align="right" valign="middle" > Nome :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_nome"
runat="server"
MaxLength="50"
Width="350px"
TabIndex="2">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
runat="server"
ControlToValidate="txt_nome"
ErrorMessage="Obrigatório">
</asp:RequiredFieldValidator>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> e-mail :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_email"
runat="server"
Width="350px"
TabIndex="3">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2"
runat="server"
ControlToValidate="txt_email"
ErrorMessage="Obrigatório">
</asp:RequiredFieldValidator>
</td></tr>
<tr><td width="20%" align="right" valign="middle"> Confirme e-mail :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_EmailConf"
runat="server"
Width="350px"
TabIndex="4">
</asp:TextBox>
<asp:CompareValidator
ID="CompareValidator1"
runat="server"
ControlToCompare="txt_email"
ControlToValidate="txt_EmailConf"
ErrorMessage="Não confere">
</asp:CompareValidator>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Empresa :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_empresa"
runat="server"
Width="350px"
TabIndex="5">
</asp:TextBox>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> PaÃs :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_pais"
runat="server"
Width="200px"
TabIndex="6">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator3"
runat="server"
ControlToValidate="txt_pais"
ErrorMessage="Obrigatório">
</asp:RequiredFieldValidator>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Cidade :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_cidade"
runat="server"
Width="350px"
TabIndex="7">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator4"
runat="server"
ControlToValidate="txt_cidade"
ErrorMessage="Obrigatório">
</asp:RequiredFieldValidator>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Estado :</td>
<td width="80%" align="left">
<asp:DropDownList
ID="DDListEstados"
runat="server"
TabIndex="8">
</asp:DropDownList>
<asp:Label
ID="Label1"
runat="server"
Font-Names="Verdana"
Font-Size="Smaller"
Text="(Somente se for no brasil)">
</asp:Label>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Telefone 1 :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_fone1"
runat="server"
TabIndex="9">
</asp:TextBox>
<asp:Label
ID="Label2"
runat="server"
Font-Names="Verdana"
Font-Size="Smaller"
Text="(xx XXXX-XXXX)">
</asp:Label>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator5"
runat="server"
ControlToValidate="txt_fone1"
ErrorMessage="Obrigatório">
</asp:RequiredFieldValidator>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Telefone 2 :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_fone2"
runat="server"
TabIndex="10">
</asp:TextBox>
<asp:Label
ID="Label3"
runat="server"
Font-Names="Verdana"
Font-Size="Smaller"
Text="(xx XXXX-XXXX)">
</asp:Label>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Departamento :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_departamento"
runat="server"
Width="350px"
TabIndex="11">
</asp:TextBox>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Setor :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_setor"
runat="server"
Width="350px"
TabIndex="12">
</asp:TextBox>
</td></tr>
<tr><td width="15%" align="right" valign="middle"> Observações :</td>
<td width="80%" align="left">
<asp:TextBox
ID="txt_Obs"
runat="server"
Width="350px"
TextMode="MultiLine"
Height="163px"
TabIndex="13">
</asp:TextBox>
</td></tr>
<tr><td colspan="2" >
<table width="100%">
<tr>
<td align="center" >
<asp:Button
ID="btEnviar"
runat="server"
Text="Enviar"
onclick="btEnviar_Click"
TabIndex="14"
style="height: 26px" />
</td>
</tr>
</table>
</td>
</table>
<!---[ T - Rotina Valida Dominio ]------------------------------------------------------------------------------>
</div>
</form>
</body>
//-- 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 = ""
+ "<br>Data : " + DateTime.UtcNow.ToString()
+ "<br>Assunto: (" + this.DDListAssunto.SelectedValue.ToString() + ") - " + this.DDListAssunto.SelectedItem.Text.ToString()
+ "<br>Nome : " + this.txt_nome.Text.ToString()
+ "<br>E-Mail : " + this.txt_email.Text.ToString()
+ "<br>Empresa: " + this.txt_empresa.Text.ToString()
+ "<br>PaÃs : " + this.txt_pais.Text.ToString()
+ "<br>Cidade : " + this.txt_cidade.Text.ToString()
+ "<br>Estado : " + this.DDListEstados.SelectedValue.ToString()
+ "<br>Fone 1 : " + this.txt_fone1.Text.ToString()
+ "<br>Fone 2 : " + this.txt_fone2.Text
+ "<br>Depto : " + this.txt_departamento.Text
+ "<br>Setor : " + this.txt_setor.Text.ToString()
+ "<br>Observ : " + this.txt_Obs.Text.ToString();
Response.Write("Para ocultar este texto, comente estas linhas....<hr>");
Response.Write(CorpoEmail.ToString());
Response.Write("<br/><hr>");
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("MeuE-mail@MinhaEmpresa.com.br");
// O Destinario tambem TAMBÉM é VOCE, para que assim o e-mail chegue a sua conta (outlook)
mailMessage.To.Add("MeuE-mail@MinhaEmpresa.com.br");
// 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("CopiarEmailPara@MinhaEmpresa.com.br");
// 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("MeuE-mail@MinhaEmpresa.com.br", "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
/// <summary>
/// Obter ou alterar o nome do campo que irá preencher o texto dos itens
/// </summary>
public string DDLText
{ get { return _ddlText; }
set { _ddlText = value; }
}
/// <summary>
/// Obter ou alterar o nome do campo que irá preencher o valor dos itens
/// </summary>
public string DDLValue
{ get { return _ddlValue; }
set { _ddlValue = value; }
}
/// <summary>
/// Obter ou alterar o endereço do ficheiro xml a ser lido
/// </summary>
public string UrlXml
{ get { return _urlXml; }
set { _urlXml = value; }
}
/// <summary>
/// Obter ou alterar o nome dos elementos que vão ser lidos
/// </summary>
public string NodeElement
{ get { return _nodeElement; }
set { _nodeElement = value; }
}
/// <summary>
/// Método construtor
/// </summary>
/// <param name="dropdown">Dropdown a ser preenchida</param>
/// <param name="urlXml">Endereço do xml a ser lido</param>
/// <param name="fieldText">Campo que possui o valor dos itens</param>
/// <param name="fieldValue">Campo que possui o texto dos itens</param>
/// <param name="nodeElement">Identificação do elemento onde estão guardados os itens a processar</param>
public FillDropdownList(DropDownList dropdown, string urlXml, string fieldText, string fieldValue, string nodeElement, string textDefault)
{
this._ddl = dropdown;
this._ddlText = fieldText;
this._ddlValue = fieldValue;
this._urlXml = urlXml;
this._nodeElement = nodeElement;
this._textDefault = textDefault;
}
/// <summary>
/// Preencher DropdownList ///
/// nota: o tratamento de erros deverá ser mais elaborado ...
/// </summary>
public void FillDropdown()
{
DataSet dataSet = new DataSet();
dataSet = new DataSet(this._nodeElement);
dataSet.ReadXml(this._urlXml);
this._ddl.DataSource = dataSet.Tables[this._nodeElement];
this._ddl.DataTextField = this._ddlText;
this._ddl.DataValueField = this._ddlValue;
this._ddl.DataBind();
if (this._textDefault.Length <= 0)
{ this._ddl.Items.Insert(0, new ListItem("(escolha um item)", "")); }
else
{ this._ddl.Items.Insert(0, new ListItem(this._textDefault, "")); }
dataSet.Dispose();
}
}
}
//-- Definição do arquivo XML (ContatoAssunto.xml)
<?xml version="1.0" encoding="utf-8" ?>
<assuntos>
<assunto>
<IDAssunto>1</IDAssunto>
<Descricao>Análise crÃtica</Descricao>
</assunto>
<assunto>
<IDAssunto>2</IDAssunto>
<Descricao>Administração de Redes</Descricao>
</assunto>
<assunto>
<IDAssunto>3</IDAssunto>
<Descricao>Desenvolvimento</Descricao>
</assunto>
<assunto>
<IDAssunto>4</IDAssunto>
<Descricao>Dúvidas</Descricao>
</assunto>
<assunto>
<IDAssunto>5</IDAssunto>
<Descricao>Orçamento</Descricao>
</assunto>
<assunto>
<IDAssunto>6</IDAssunto>
<Descricao>Outros</Descricao>
</assunto>
<assunto>
<IDAssunto>7</IDAssunto>
<Descricao>Sugestões</Descricao>
</assunto>
</assuntos>
//-- Definição do arquivo XML (Estados.xml)
<?xml version="1.0" encoding="utf-8" ?>
<Estados>
<Estado>
<IDEstado>AC</IDEstado>
</Estado>
<Estado>
<IDEstado>AL</IDEstado>
</Estado>
<Estado>
<IDEstado>AM</IDEstado>
</Estado>
<Estado>
<IDEstado>AP</IDEstado>
</Estado>
<Estado>
<IDEstado>BA</IDEstado>
</Estado>
<Estado>
<IDEstado>CE</IDEstado>
</Estado>
<Estado>
<IDEstado>DF</IDEstado>
</Estado>
<Estado>
<IDEstado>ES</IDEstado>
</Estado>
<Estado>
<IDEstado>GO</IDEstado>
</Estado>
<Estado>
<IDEstado>MA</IDEstado>
</Estado>
<Estado>
<IDEstado>MG</IDEstado>
</Estado>
<Estado>
<IDEstado>MS</IDEstado>
</Estado>
<Estado>
<IDEstado>MT</IDEstado>
</Estado>
<Estado>
<IDEstado>PA</IDEstado>
</Estado>
<Estado>
<IDEstado>PB</IDEstado>
</Estado>
<Estado>
<IDEstado>PE</IDEstado>
</Estado>
<Estado>
<IDEstado>PI</IDEstado>
</Estado>
<Estado>
<IDEstado>PR</IDEstado>
</Estado>
<Estado>
<IDEstado>RJ</IDEstado>
</Estado>
<Estado>
<IDEstado>RN</IDEstado>
</Estado>
<Estado>
<IDEstado>RO</IDEstado>
</Estado>
<Estado>
<IDEstado>RR</IDEstado>
</Estado>
<Estado>
<IDEstado>RS</IDEstado>
</Estado>
<Estado>
<IDEstado>SC</IDEstado>
</Estado>
<Estado>
<IDEstado>SE</IDEstado>
</Estado>
<Estado>
<IDEstado>SP</IDEstado>
</Estado>
<Estado>
<IDEstado>TO</IDEstado>
</Estado>
</Estados>