eriva_br 7 Denunciar post Postado Maio 23, 2008 Exemplo de código para enviar email utilizando aspx, utilizando credenciais para o envio (passando usuário e senha): (código comentado e com tratamento de erros) desenvolvido em Visual Studio 2005, utilizando a linguagem C# Crie um novo projeto web no VS 2005, adicione uma nova página com o nome email.aspx código HTML para a página email.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="email.aspx.cs" Inherits="email" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Enviar e-mail</title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtSmtp" runat="server" Style="z-index: 109; left: 50px; position: absolute; top: 44px"></asp:TextBox> <asp:Label ID="lblSmtp" runat="server" Style="z-index: 109; left: 50px; position: absolute; top: 21px" Text="Servidor SMTP"></asp:Label> <asp:Label ID="Label1" runat="server" Style="z-index: 109; left: 213px; position: absolute; top: 14px" Text="Exemplos SMTP:<br>Terra: smtp.scl.terra.com.br<br>gmail: smtp.gmail.com"></asp:Label> <asp:TextBox ID="txtDe" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 241px" Width="270px"></asp:TextBox> <asp:Label ID="Label2" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 218px" Text="De:"></asp:Label> <asp:TextBox ID="txtPara" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 293px" Width="270px"></asp:TextBox> <asp:Label ID="Label3" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 270px" Text="Para:"></asp:Label> <asp:TextBox ID="txtCC" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 241px" Width="270px"></asp:TextBox> <asp:Label ID="Label4" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 218px" Text="Com cópia:"></asp:Label> <asp:TextBox ID="txtCCO" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 293px" Width="270px"></asp:TextBox> <asp:Label ID="Label5" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 270px" Text="Com cópia oculta:"></asp:Label> <asp:TextBox ID="txtPorta" runat="server" Style="z-index: 109; left: 50px; position: absolute; top: 106px"></asp:TextBox> <asp:Label ID="Label6" runat="server" Style="z-index: 109; left: 50px; position: absolute; top: 83px" Text="Porta"></asp:Label> <asp:TextBox ID="txtUsuario" runat="server" Style="z-index: 109; left: 419px; position: absolute; top: 38px" Width="270px"></asp:TextBox> <asp:Label ID="Label7" runat="server" Style="z-index: 109; left: 419px; position: absolute; top: 15px" Text="Usuário:"></asp:Label> <asp:TextBox ID="txtSenha" runat="server" Style="z-index: 109; left: 420px; position: absolute; top: 100px" Width="161px"></asp:TextBox> <asp:Label ID="Label8" runat="server" Style="z-index: 109; left: 420px; position: absolute; top: 77px" Text="Senha:"></asp:Label> <asp:TextBox ID="txtAssunto" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 349px" Width="270px"></asp:TextBox> <asp:Label ID="Label9" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 326px" Text="Assunto:"></asp:Label> <asp:TextBox ID="txtMensagem" runat="server" Height="225px" Style="z-index: 109; left: 55px; position: absolute; top: 406px" TextMode="MultiLine" Width="407px"></asp:TextBox> <asp:Label ID="Label10" runat="server" Style="z-index: 109; left: 53px; position: absolute; top: 383px" Text="Mensagem:"></asp:Label> <asp:Label ID="Label13" runat="server" Style="z-index: 109; left: 478px; position: absolute; top: 383px" Text="Anexos:"></asp:Label> <asp:Button ID="btnEnviarEmail" runat="server" Text="Enviar" Style="z-index: 109; left: 416px; position: absolute; top: 645px" OnClick="btnEnviarEmail_Click"/> <asp:Button ID="btnEnviarArq" runat="server" Text="Enviar Anexo" Style="z-index: 109; left: 480px; position: absolute; top: 443px" OnClick="btnEnviarArq_Click"/> <asp:Label ID="lblResultado" runat="server" Style="z-index: 109; left: 55px; position: absolute; top: 684px"></asp:Label> <asp:Label ID="Label11" runat="server" Style="z-index: 109; left: 214px; position: absolute; top: 102px" Text="Porta Padrão 25<br>Para gmail use 587 ou 465"></asp:Label> <asp:CheckBox ID="chkSsl" runat="server" Style="z-index: 109; left: 50px; position: absolute; top: 154px" Text="Secure Sockets Layer (SSL)"/> <asp:CheckBox ID="chkLeitura" runat="server" Style="z-index: 109; left: 55px; position: absolute; top: 647px" Text="Confirmação de Leitura"/> <asp:Label ID="Label12" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 326px" Text="Tipo Mensagem:"></asp:Label> <asp:DropDownList ID="ddlTipoMsg" runat="server" Style="z-index: 109; left: 423px; position: absolute; top: 349px" Width="144px"></asp:DropDownList> <asp:FileUpload ID="filUpload" runat="server" Style="z-index: 109; left: 478px; position: absolute; top: 406px" /> <asp:ListBox ID="lstAnexos" runat="server" Style="z-index: 109; left: 480px; position: absolute; top: 471px" Height="138px" Width="231px"></asp:ListBox> <asp:Button ID="btnExcluirArq" runat="server" Text="Excluir Anexo" Style="z-index: 109; left: 590px; position: absolute; top: 614px" OnClick="btnExcluirArq_Click"/></div> </form> </body> </html> a janela ira ficar neste formato: códigos para o arquivo CS, email.aspx.cs: Namespaces: //Namespaces carregados por padrão ao incluir uma nova página no VS 2005 using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; //Namespaces usados para o envio de email using System.Net.Mail; using System.Net.Mime; código para o evento Page_Load: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.txtSenha.TextMode = TextBoxMode.Password; //habilitando multipla seleção na lista de anexos this.lstAnexos.SelectionMode = ListSelectionMode.Multiple; //carregando os tipos de mensagem this.ddlTipoMsg.Items.Add(new ListItem("HTML", "0")); this.ddlTipoMsg.Items.Add(new ListItem("RICHTEXT", "1")); this.ddlTipoMsg.Items.Add(new ListItem("XML", "2")); this.ddlTipoMsg.Items.Add(new ListItem("PLAIN", "3")); //ajuste dos tabindex's dos controles Int16 vTabIndex = 1; this.txtSmtp.TabIndex = vTabIndex++; this.txtPorta.TabIndex = vTabIndex++; this.txtUsuario.TabIndex = vTabIndex++; this.txtSenha.TabIndex = vTabIndex++; this.chkSsl.TabIndex = vTabIndex++; this.txtDe.TabIndex = vTabIndex++; this.txtPara.TabIndex = vTabIndex++; this.txtCC.TabIndex = vTabIndex++; this.txtCCO.TabIndex = vTabIndex++; this.txtAssunto.TabIndex = vTabIndex++; this.ddlTipoMsg.TabIndex = vTabIndex++; this.txtMensagem.TabIndex = vTabIndex++; this.filUpload.TabIndex = vTabIndex++; this.btnEnviarArq.TabIndex = vTabIndex++; this.lstAnexos.TabIndex = vTabIndex++; this.btnExcluirArq.TabIndex = vTabIndex++; this.chkLeitura.TabIndex = vTabIndex++; this.btnEnviarEmail.TabIndex = vTabIndex++; this.txtSmtp.Focus(); } } código para os tratamentos, validações #region Validadores private bool IsEmpty(string str) { bool isValid = true; try { if ((str == null) || (str.ToString().Trim().Length == 0)) { isValid = false; } } catch { isValid = false; } return !isValid; } private bool IsNumber(string str) { bool isValid = true; try { long number = Int64.Parse(str); } catch { isValid = false; } return isValid; } private bool IsEmail(string str) { string[] mails = str.Split(';'); foreach (string ma in mails) { if (ma.Trim() != "" && !this.IsEmailUnico(ma.Trim())) return false; } return true; } private bool IsEmailUnico(string str) { string[] mails = str.Split(';'); foreach (string ma in mails) { if (ma.Trim() != "") { string patternStrictEmail = @"^(([^<>()[\]\\.,;:\s@\""]+" + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+" + @"[a-zA-Z]{2,}))$"; System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(patternStrictEmail); if (!re.IsMatch(ma.Trim())) return false; } } return true; } private bool ValidarCampos() { bool resultado = true; this.lblResultado.ForeColor = System.Drawing.Color.BlueViolet; this.lblResultado.Text = ""; if (this.IsEmpty(this.txtSmtp.Text)) { this.txtSmtp.Focus(); this.lblResultado.Text += "Campo SMTP não pode ficar em branco<br>"; resultado = false; } if (this.IsEmpty(this.txtPorta.Text)) { this.txtPorta.Focus(); this.lblResultado.Text += "Campo PORTA não pode ficar em branco<br>"; resultado = false; } if (!this.IsNumber(this.txtPorta.Text)) { this.txtPorta.Focus(); this.lblResultado.Text += "Campo PORTA deve ser numérico<br>"; resultado = false; } if (this.IsEmpty(this.txtUsuario.Text)) { this.txtUsuario.Focus(); this.lblResultado.Text += "Campo USUÁRIO não pode ficar em branco<br>"; resultado = false; } if (this.IsEmpty(this.txtSenha.Text)) { this.txtSenha.Focus(); this.lblResultado.Text += "Campo SENHA não pode ficar em branco<br>"; resultado = false; } if (this.IsEmpty(this.txtDe.Text)) { this.txtDe.Focus(); this.lblResultado.Text += "Campo DE não pode ficar em branco<br>"; resultado = false; } if (this.IsEmpty(this.txtPara.Text)) { this.txtPara.Focus(); this.lblResultado.Text += "Campo PARA não pode ficar em branco<br>"; resultado = false; } if (this.IsEmpty(this.txtAssunto.Text)) { this.txtAssunto.Focus(); this.lblResultado.Text += "Campo ASSUNTO não pode ficar em branco<br>"; resultado = false; } if (!this.IsEmailUnico(this.txtDe.Text)) { this.txtDe.Focus(); this.lblResultado.Text += "Campo DE deve ser um e-mail válido<br>"; resultado = false; } if (!this.IsEmail(this.txtPara.Text)) { this.txtPara.Focus(); this.lblResultado.Text += "Campo PARA deve ser um e-mail válido, caso for necessário separar por;<br>"; resultado = false; } if (!this.IsEmail(this.txtCC.Text)) { this.txtCC.Focus(); this.lblResultado.Text += "Campo CC deve ser um e-mail válido, caso for necessário separar por;<br>"; resultado = false; } if (!this.IsEmail(this.txtCCO.Text)) { this.txtCCO.Focus(); this.lblResultado.Text += "Campo CCO deve ser um e-mail válido, caso for necessário separar por;<br>"; resultado = false; } return resultado; } #endregion código para o evento Click do botão Enviar e-mail protected void btnEnviarEmail_Click(object sender, EventArgs e) { //Cria uma nova instância da Classe MailMessage MailMessage message = new MailMessage(); SmtpClient client = new SmtpClient(); try { if (this.ValidarCampos()) { //montando e-mail message.From = new MailAddress(this.txtDe.Text.Trim(), this.txtDe.Text.Trim(), System.Text.Encoding.GetEncoding(1252)); message.SubjectEncoding = System.Text.Encoding.GetEncoding(1252); message.BodyEncoding = System.Text.Encoding.GetEncoding(1252); string[] destinatarios = this.txtPara.Text.Trim().Split(';'); foreach (string dest in destinatarios) { if (dest.Trim() != "") message.CC.Add(dest); } if (!this.IsEmpty(this.txtCC.Text)) { destinatarios = this.txtCC.Text.Trim().Split(';'); foreach (string dest in destinatarios) { if (dest.Trim() != "") message.CC.Add(dest); } } if (!this.IsEmpty(this.txtCCO.Text)) { destinatarios = this.txtCCO.Text.Trim().Split(';'); foreach (string dest in destinatarios) { if (dest.Trim() != "") message.CC.Add(dest); } } message.Subject = this.txtAssunto.Text.Trim(); string MsgTipo; //Define o tipo do corpo da mensagem switch (this.ddlTipoMsg.SelectedValue) { case "0": MsgTipo = MediaTypeNames.Text.Html; break; case "1": MsgTipo = MediaTypeNames.Text.RichText; break; case "2": MsgTipo = MediaTypeNames.Text.Xml; break; default: MsgTipo = MediaTypeNames.Text.Plain; break; } //Cria Instância de AlternateView para os Tipos de Corpo de Email AlternateView alternate = AlternateView.CreateAlternateViewFromString(this.txtMensagem.Text.Trim(), System.Text.Encoding.GetEncoding(1252), MsgTipo); message.AlternateViews.Add(alternate); //confirmaçção de leitura if (this.chkLeitura.Checked) message.Headers.Add("Disposition-Notification-To", "<" + this.txtDe.Text.Trim() + ">"); //anexando arquivos foreach (ListItem li in this.lstAnexos.Items) { if (li.Enabled) //isso para não enviar anexos que foram excluidos { Attachment data = new Attachment(li.Value, MediaTypeNames.Application.Octet); message.Attachments.Add(data); } } //verificando autenticação client.Credentials = new System.Net.NetworkCredential(this.txtUsuario.Text.Trim(), this.txtSenha.Text.Trim()); client.Port = Convert.ToInt32(this.txtPorta.Text.Trim()); client.Host = this.txtSmtp.Text.Trim(); //client.UseDefaultCredentials = false; client.EnableSsl = chkSsl.Checked; //enviando e-mail client.Send(message); //limpa controles this.lstAnexos.Items.Clear(); this.txtMensagem.Text = ""; this.txtAssunto.Text = ""; this.txtPara.Focus(); this.lblResultado.ForeColor = System.Drawing.Color.Blue; this.lblResultado.Text = "e-mail enviado com sucesso!"; } } catch (Exception ex) { this.lblResultado.ForeColor = System.Drawing.Color.Red; this.lblResultado.Text = "Erro no envio de email:<br>" + ex.Message.ToString(); } finally { message.Dispose(); message = null; client = null; } } código para o evento Click do botão Enviar Anexo protected void btnEnviarArq_Click(object sender, EventArgs e) { try { //Verifica se tem alguma coisa postada if (this.filUpload.PostedFile.ContentLength != 0 && this.filUpload.HasFile) { string caminhoArq = "E:\\Temp\\" + this.filUpload.FileName; bool vRepetido = false; foreach (ListItem li in this.lstAnexos.Items) { if ((li.Enabled) && (li.Value.Trim().Equals(caminhoArq.Trim(), StringComparison.OrdinalIgnoreCase))) vRepetido = true; } if (vRepetido) { this.lblResultado.ForeColor = System.Drawing.Color.BlueViolet; this.lblResultado.Text = "Arquivo já incluido!"; } else { this.filUpload.PostedFile.SaveAs(caminhoArq); this.lstAnexos.Items.Add(new ListItem(this.filUpload.FileName, caminhoArq)); this.lblResultado.ForeColor = System.Drawing.Color.Green; this.lblResultado.Text = "Anexo incluído: " + this.filUpload.FileName; } } else { this.lblResultado.ForeColor = System.Drawing.Color.BlueViolet; this.lblResultado.Text = "Selecione um arquivo para anexar"; } } catch (Exception ex) { this.lblResultado.ForeColor = System.Drawing.Color.Salmon; this.lblResultado.Text = "Falha ao anexar arquivo:<br>" + ex.Message.ToString(); } } código para o evento Click do botão Excluir Anexo protected void btnExcluirArq_Click(object sender, EventArgs e) { try { foreach (ListItem li in this.lstAnexos.Items) { if (li.Selected) li.Enabled = false; //this.lstAnexos.Items.Remove(li); } this.lblResultado.Text = ""; } catch (Exception ex) { this.lblResultado.ForeColor = System.Drawing.Color.Salmon; this.lblResultado.Text = "Falha ao excluir arquivo anexado:<br>" + ex.Message.ToString(); } } AUTOR: "eriva_br" Dúvidas, criticas, contribuições, correções e adições seram bem vindas. Compartilhar este post Link para o post Compartilhar em outros sites