Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Fernando

[Resolvido] Formulário de email

Recommended Posts

É o seguinte, tenho uma tela de contato (formulário) com os seguintes campos Nome, email, mensagem.

 

Meu cliente tem duas lojas em cidades diferentes e eu gostaria que fosse possível escolher para qual das duas cidades a mensagem deve ser encaminhada, colocando um campo em que fosse possível escolher entre as cidades, só que eu não manjo nada de aspx, nada mesmo. Então gostaria de saber se alguém pode me ajudar, abaixo o código.

 

do arquivo contato.aspx

 

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="contato.aspx.cs" Inherits="contato" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphPagina" Runat="Server">
	<div id="titulo">
		<div class="contato">
			CONTATO</div>
	</div>
	<div id="texto">
		<br /><br />
		<form id="frmContato" name="frmContato" runat="server">
			<asp:Table ID="tblContato" runat="server" Width="100%">
				<asp:TableRow ID="rTexto" runat="server" TableSection="TableHeader">
					<asp:TableCell runat="server" ColumnSpan="2">
							<span id="texto2">Para que possamos atendê-lo cada vez melhor, envie-nos suas sugestões!
								<br /><br />
								Envie seu e-mail para:<a href="mailto:vendas@eletrosemlimites.com.br"><strong> vendas@eletrosemlimites.com.br</strong></a>,
								ou preencha o formulário:
							</span>
							<br /><br />
					</asp:TableCell>
				</asp:TableRow>
				<asp:TableRow runat="server" ID="rNome">
					<asp:TableCell ID="cTitNome" runat="server" HorizontalAlign="Right" Font-Bold="True">Nome:</asp:TableCell>
					<asp:TableCell ID="cNome" Width="65%" runat="server"><asp:TextBox ID="txtNome" runat="server" Width="70%"></asp:TextBox></asp:TableCell>
				</asp:TableRow>
				<asp:TableRow runat="server" ID="rEmail">
					<asp:TableCell ID="cTitEmail" runat="server" HorizontalAlign="Right" Font-Bold="True">Email:</asp:TableCell>
					<asp:TableCell ID="cEmail" Width="65%" runat="server"><asp:TextBox ID="txtEmail" runat="server" Width="70%"></asp:TextBox></asp:TableCell>
				</asp:TableRow>
				<asp:TableRow runat="server" ID="rMensagem">
					<asp:TableCell ID="cTitMensagem" runat="server" HorizontalAlign="Right" Font-Bold="True">Mensagem:</asp:TableCell>
					<asp:TableCell ID="cMensagem" Width="65%" runat="server"><asp:TextBox ID="txtMensagem" runat="server" Rows="5" TextMode="MultiLine" Width="70%"></asp:TextBox></asp:TableCell>
				</asp:TableRow>
				<asp:TableRow runat="server" ID="rBtnEnviar">
					<asp:TableCell ID="cTitEnviar" runat="server"> </asp:TableCell>
					<asp:TableCell ID="cEnviar" Width="65%" runat="server">
						<asp:Label runat="server" ID="lblEnviar" ForeColor="red"></asp:Label><br /><asp:ImageButton ID="btnEnviar" runat="server" AlternateText="Enviar" ImageUrl="img/bt_enviar_press.gif" OnClick="btnEnviar_Click" /></asp:TableCell>
				</asp:TableRow>
				<asp:TableRow runat="server" ID="rBtnOK">
					<asp:TableCell ID="cOK" runat="server" ColumnSpan="2" HorizontalAlign="center" VerticalAlign="middle" Height="200px">
						<asp:Literal runat="server" ID="litOK"></asp:Literal><br /><br /><asp:ImageButton ID="btnOK" runat="server" AlternateText="Enviar" ImageUrl="img/bt_ok_press.jpg" OnClick="btnOK_Click" /></asp:TableCell>
				</asp:TableRow>
			</asp:Table>
		</form>
		
  </div>
</asp:Content>

do arquivo contato.cs.aspx

 

using System;
using System.Net.Mail;

public partial class contato : System.Web.UI.Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
		rNome.Visible = true;
		rEmail.Visible = true;
		rMensagem.Visible = true;
		rBtnEnviar.Visible = true;
		rBtnOK.Visible = false;
	}

	protected void btnEnviar_Click(object sender, EventArgs e)
	{
		txtNome.Text = txtNome.Text.Trim();
		txtEmail.Text = txtEmail.Text.Trim();
		txtMensagem.Text = txtMensagem.Text.Trim();

		if (txtNome.Text.Length <= 0 || txtEmail.Text.Length <= 0 || txtMensagem.Text.Length <= 0)
			lblEnviar.Text = "Todos os campos são obrigatórios!";
		else if (!EletroSemLimites.IsEmail(txtEmail.Text))
			lblEnviar.Text = "É necessário informar um endereço de e-mail válido!";
		else
		{
			lblEnviar.Text = "";

			MailMessage mail = new MailMessage();
			SmtpClient smtp = new SmtpClient("smtp.eletrosemlimites.com.br", 25);

			try
			{
				mail.From = new MailAddress(txtEmail.Text);
				mail.To.Add("vendas@eletrosemlimites.com.br");
				
				mail.Subject = "Contato a partir do site";
				mail.Body = txtMensagem.Text;
				mail.IsBodyHtml = false;

				smtp.Send(mail);

				litOK.Text = "Sua mensagem foi enviada com sucesso!";
			}
			catch (Exception err)
			{
				litOK.Text =
					"Ocorreu uma falha inesperada. Pode ser que sua mensagem não tenha sido enviada.<br>" +
					"Por favor, tente novamente mais tarde.<br /><br />" +
					err.Message + "<br />" +
					(err.InnerException != null ? err.InnerException.Message : "");
			}
			finally
			{

			}

			rNome.Visible = false;
			rEmail.Visible = false;
			rMensagem.Visible = false;
			rBtnEnviar.Visible = false;
			rBtnOK.Visible = true;
		}
	}
	protected void btnOK_Click(object sender, EventArgs e)
	{
		litOK.Text = "";

		txtNome.Text = "";
		txtEmail.Text = "";
		txtMensagem.Text = "";
		lblEnviar.Text = "";

		rNome.Visible = true;
		rEmail.Visible = true;
		rMensagem.Visible = true;
		rBtnEnviar.Visible = true;
		rBtnOK.Visible = false;
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

aki é fórum de ASP, movido para ASP.Net

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione isso:

 

<asp:TableRow runat="server" ID="rLoja">
	<asp:TableCell ID="cTitLoja" runat="server" HorizontalAlign="Right" Font-Bold="True">Loja:</asp:TableCell>
	<asp:TableCell ID="cLoja" Width="65%" runat="server">
		<asp:DropDownList ID="ddlLoja" runat="server">
			<asp:ListItem Text="Loja de Brasilia" Value="1" Selected="True"></asp:ListItem>
			<asp:ListItem Text="Loja de São Paulo" Value="2"></asp:ListItem>
		</asp:DropDownList>
	</asp:TableCell>
</asp:TableRow>

antes disso:

<asp:TableRow runat="server" ID="rMensagem">

E isso:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1";
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2";
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

no lugar disso:

mail.To.Add("vendas@eletrosemlimites.com.br");

 

Só precisa mudar os valores, nome das lojas, email etc.

 

Movido de Plataforma .Net para Web Applications.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione isso:

 

<asp:TableRow runat="server" ID="rLoja">
	<asp:TableCell ID="cTitLoja" runat="server" HorizontalAlign="Right" Font-Bold="True">Loja:</asp:TableCell>
	<asp:TableCell ID="cLoja" Width="65%" runat="server">
		<asp:DropDownList ID="ddlLoja" runat="server">
			<asp:ListItem Text="Loja de Brasilia" Value="1" Selected="True"></asp:ListItem>
			<asp:ListItem Text="Loja de São Paulo" Value="2"></asp:ListItem>
		</asp:DropDownList>
	</asp:TableCell>
</asp:TableRow>

antes disso:

<asp:TableRow runat="server" ID="rMensagem">

E isso:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1";
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2";
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

no lugar disso:

mail.To.Add("vendas@eletrosemlimites.com.br");

 

Só precisa mudar os valores, nome das lojas, email etc.

 

Movido de Plataforma .Net para Web Applications.

Esta dando este erro

 

Descrição: Erro ao compilar um recurso necessário para atender esta solicitação. Examine os detalhes específicos do erro e modifique o código fonte apropriadamente.

 

Mensagem de Erro do Compilador: CS1003: Erro de sintaxe: ':' esperado

 

Erro de Origem:

 

 

 

Linha 36: {

Linha 37: default:

Linha 38: case "1";

Linha 39: mail.To.Add("xxx@hotmail.com.br");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque de:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1";
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2";
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

Para:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1":
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2":
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque de:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1";
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2";
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

Para:

switch (this.ddlLoja.SelectedValue)
{ 
	default:
	case "1":
		mail.To.Add("loja_de_brasilia@email.com.br");
		break;
	case "2":
		mail.To.Add("loja_de_saopaulo@email.com.br");
		break;
}

 

Fiz as alterações e agora esta dando este erro:

 

Ocorreu uma falha inesperada. Pode ser que sua mensagem não tenha sido enviada.

Por favor, tente novamente mais tarde.

 

Nome de caixa de correio não permitido. A resposta do servidor foi: sorry, that domain isn't in my list of allowed rcpthosts (#5.5.3 - chkuser)

 

O que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que o endereço de e-mail não existe, você trocou os emails?

Se não for isso, é o que o quintelab falou, no arquivo web.config você diz qual o usuário e senha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou postando de novo o código do arquivo contato.aspx.cs

 

using System;
using System.Net.Mail;

public partial class contato : System.Web.UI.Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
		rNome.Visible = true;
		rEmail.Visible = true;
		rMensagem.Visible = true;
		rBtnEnviar.Visible = true;
		rBtnOK.Visible = false;
	}

	protected void btnEnviar_Click(object sender, EventArgs e)
	{
		txtNome.Text = txtNome.Text.Trim();
		txtEmail.Text = txtEmail.Text.Trim();
		txtMensagem.Text = txtMensagem.Text.Trim();

		if (txtNome.Text.Length <= 0 || txtEmail.Text.Length <= 0 || txtMensagem.Text.Length <= 0)
			lblEnviar.Text = "Todos os campos são obrigatórios!";
		else if (!EletroSemLimites.IsEmail(txtEmail.Text))
			lblEnviar.Text = "É necessário informar um endereço de e-mail válido!";
		else
		{
			lblEnviar.Text = "";

			MailMessage mail = new MailMessage();
			SmtpClient smtp = new SmtpClient("smtp.eletrosemlimites.com.br", 25);

			try
			{
				mail.From = new MailAddress(txtEmail.Text);
				switch (this.ddlLoja.SelectedValue)
			{
			 default:
			 case "1":
			 mail.To.Add("vendas@eletrosemlimites.com.br");
			 break;
			 case "2":
			 mail.To.Add("eletrosemlimites@uol.com.br");
			 break;
			}
				
				mail.Subject = "Contato a partir do site";
				mail.Body = txtMensagem.Text;
				mail.IsBodyHtml = false;

				smtp.Send(mail);

				litOK.Text = "Sua mensagem foi enviada com sucesso!";
			}
			catch (Exception err)
			{
				litOK.Text =
					"Ocorreu uma falha inesperada. Pode ser que sua mensagem não tenha sido enviada.<br>" +
					"Por favor, tente novamente mais tarde.<br /><br />" +
					err.Message + "<br />" +
					(err.InnerException != null ? err.InnerException.Message : "");
			}
			finally
			{

			}

			rNome.Visible = false;
			rEmail.Visible = false;
			rMensagem.Visible = false;
			rBtnEnviar.Visible = false;
			rBtnOK.Visible = true;
		}
	}
	protected void btnOK_Click(object sender, EventArgs e)
	{
		litOK.Text = "";

		txtNome.Text = "";
		txtEmail.Text = "";
		txtMensagem.Text = "";
		lblEnviar.Text = "";

		rNome.Visible = true;
		rEmail.Visible = true;
		rMensagem.Visible = true;
		rBtnEnviar.Visible = true;
		rBtnOK.Visible = false;
	}
}

Pergunto, o erro não pode ser esta linha?

 

SmtpClient smtp = new SmtpClient("smtp.eletrosemlimites.com.br", 25);

 

Reparem que o outro email é da uol.

 

Obrigado até o momento

 

 

Ps. Eu olhei o arquivo Web.config e não tinha nenhuma referência a email

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou colocar o usuário:

smtp.Credentials = new System.Net.NetworkCredential("usuario", "senha");

 

Faça um teste e troque o smtp para o do gmail para ver se funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou colocar o usuário:

smtp.Credentials = new System.Net.NetworkCredential("usuario", "senha");

 

Faça um teste e troque o smtp para o do gmail para ver se funciona...

 

Poderia ser mais específico por favor :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só colocar este código na sua rotina, antes de fazer o smtp.Send();

 

Sobre testar com gmail, mude isso:

smtp.eletrosemlimites.com.br
para:

smtp.gmail.com

No código que postei no post acima, onde tem "usuario" e "senha", mude esses valores para seu e-mail do gmail no "usuario" e sua senha do gmail no "senha".

E tenta executar, assim você estaria usando o servidor de email do gmail ao inves de usar o da empresa "eletrosemlimites".

Isso é só para teste, se funcionar, é porque tem algum problema no servidor smtp, ou no usuário que você está usando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estava relendo minha resposta aí em cima e percebi que ela ficou imcompleta, é o seguinte, quando a pessoa escolhe mandar o email para a loja de Bauru (vendas@eletrosemlimites.com.br) ele vai correto, mas quando tenta mandar para a loja de Botucatu (eletrosemlimites@uol.com.br") é que ocorre o erro, por isso que perguntei se o erro não seria nesta linha

SmtpClient smtp = new SmtpClient("smtp.eletrosemlimites.com.br", 25);

 

Como você pode ver o email de Botucatu é da uol e não há uma linha especificando o caminho do smtp deles, entendeu o porque da pergunta?

 

Outra coisa, será que seu fizer um outro email como contato@eletrosemlimites.com.br, e usá-lo para Botucatu, será que isso resolveria o problema?

 

Me desulpe pela chatice, Oenning você esta me ajudando muito, muito obrigado mesmo. Estou perguntando bastante para tentar entender, e achei melhor explicar melhor o problema porque não tinha feito isso antes.

 

Ps: Ainda não testei as alterações porque no momento estou impossibilitado de mexer no site, só conseguirei fazer isto a noite mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ahhhhh, agora sim :)

 

Se está funcionando para o e-mail vendas@eletrosemlimites.com.br e não funcionara para o eletrosemlimites@uol.com.br, chegamos a uma conclusão.

Seu código está funcionando.

 

Agora o motivo do problema pode ser vários, como por exemplo o email do bol não existe, o smtp do eletrosemlimites está configurado para não enviar e-mail para fora do domínio deles, dentre outros.

Recomendo que você faça esse teste, entre com o email que está sendo usado para enviar e-mails para as lojas, e tente enviar para esse do bol, usando um gerenciador de emails qualquer. (outlook, thunderbird etc).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.