Jump to content
veaoum

[Resolvido] Enviar email

Recommended Posts

veaoum

Boa noite a todos. Estou a usar a função mail do PCP para enviar um email já a ti há usado e funciona o problema é que agora não dá. tive que criar uma parte em Java script para me dizer se o email tinha sido ou não enviado. O valor UE eu acho estranho é que ele diz que o email foi enviado, eu si que é muito confuso como estou a dizer mas neste momento não consigo colocar aqui o código. Peço a vossa ajuda mesmo assim em branco. O que eu acho que seja é por ter colocado return false no Java script mas se não o colocar ele vai abrir o ficheiro PHP e o último na queria.

Share this post


Link to post
Share on other sites
veaoum

Aqui vai o codigo:

O formulario:

<form class="form-horizontal duvida" action="contacto.php" method="post" >
	<div class="form-group">
	 <label for="inputnome" class="col-sm-2 control-label">Nome:</label>
	 <div class="col-sm-10">
	  <input type="text" class="form-control" id="inputnome" name="nome" placeholder="Nome" required>
	 </div>
	</div>
	<div class="form-group">
	 <label for="inputemail" class="col-sm-2 control-label">Email:</label>
	 <div class="col-sm-10">
	  <input type="email" class="form-control" name="email" id="inputemail" placeholder="email" required>
	 </div>
	</div>
	<div class="form-group">
	 <label for="inputtelefone" class="col-sm-2 control-label">Telefone:</label>
	 <div class="col-sm-10">
	   <input type="text" class="form-control" id="inputtelefone" name="telefone" placeholder="Telefone" required>
	 </div>
	 </div>
	<div class="form-group">
	 <label for="inputassunto" class="col-sm-2 control-label">Assunto:</label>
	 <div class="col-sm-10">
	  <input type="text" class="form-control" id="inputassunto" name="assunto" placeholder="Assunto" required>
	 </div>
	</div>
	<div class="form-group">
	 <label for="comment" class="col-sm-2 control-label">Mensagem:</label>
	 <div class="col-sm-10">
	  <textarea class="form-control" rows="5" id="comment" placeholder="Mensagem" name="mensagem"></textarea>
	 </div>
	</div>
	<div class="form-group">
	 <div class="col-sm-offset-3 col-sm-9">
	  <button type="submit" class="btn btn-default pull-right">Enviar</button>
	  <div id="alert"></div>
	 </div>
	</div>
   </form>

O java script

:

$('form.duvida').on( 'submit',function(){
 var activo = $('#check').is(':checked');
 var that = $(this),
 url= that.prop('action'),
 type= that.prop('method'),
 data = {};
 that.find('[name]').each(function(index,value) {
var that=$(this),
 name=that.prop('name'),
 value=that.val();
data[name]=value;
 });
  $.ajax({
  url: url,
  type: type,
  data: data,
  success:function(response) {
if (response == "<center><h1>Mensagem enviada</h1> Agradecemos o seu contacto, em breve entraremos em contacto consigo.</center>") {
 showAlert('success',response);
 }
else {
 showAlert('error',response);

}
  }
 });
 return false
});

Por fim o PHP

<?PHP
$to = 'geral@bragatours.com';										  // guardar o email de envio numa variável
$Subject = "Mensagem: " .$_POST['assunto'];							// guardar o assunto do email numa variável
$mensagem = "Assunto: ".$_POST['assunto'];
$mensagem = "Nome: ".$_POST['nome'];
$mensagem .= "\r\nE-mail: ".$_POST['email'];
$mensagem .= "\r\nTelefone: ".$_POST['telefone'];
$mensagem .= "\r\nmensagem: ".$_POST['mensagem'];												 // guardar a mensagem do email numa variável
$headers = 'MIME-Version: 1.0' . "\r\n";							// construção do cabeçalho do email numa variável
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: geral@bragatours.com';
$result = mail($to,$Subject,$Subject,$headers);				 // enviar a mensagem de email
mail('geral@bragatours.com','Assunto','ola');
// ainda não fizeste nenhum output = página vazia
 if ($result == false) { // verificar o resultado da chamada de envio de email
  print " <h1>Erro de envio da mensagem</h1>
 Pedimos desculpa mas não foi possível enviar a sua mensagem por favor tente mais tarde.";
  }
 else {
  print "<center><h1>Mensagem enviada</h1> Agradecemos o seu contacto, em breve entraremos em contacto consigo.</center>";
 }
?>

O que é que pode estar a fazer com que o email não seja enviado?

Edited by apocsantos
geshi javascript

Share this post


Link to post
Share on other sites
Knot

Tens algumas coisas que podes melhorar, mas que em principio não estão a criar erro

Primeiro:

$mensagem = "Assunto: ".$_POST['assunto'];
$mensagem = "Nome: ".$_POST['nome']; //estás a iniciar de novo a variável $mensagem, logo o conteúdo da linha anterior é perdido
$mensagem .= "\r\nE-mail: ".$_POST['email'];
$mensagem .= "\r\nTelefone: ".$_POST['telefone'];
$mensagem .= "\r\nmensagem: ".$_POST['mensagem'];

$result = mail($to,$Subject,$Subject,$headers); //estás a enviar 2 vezes o subject

Podes simplificar a verificação do mail enviado sem recorreres ao == false

if ($result) //igual a if($result)==true
  echo "sucesso";
else
  echo "falhou";

ou

if (!$result) //igual a if($result)==false
  echo "falhou";
else
  echo "sucesso";

Tenta colocar o $to com outro endereço de email para testares. Pode ser alguma má configuração no server mail que estás a usar. Se tiveres acesso ao servidor vê se não a fila de mails não está bloqueada.

Share this post


Link to post
Share on other sites
veaoum

Ok vou fazer estas correcções. Mas já testei com 3 emails diferentes e acontece sempre o mesmo. Podes explicar um bocado melhor aquilo que quiseste dizer com: "Se tiveres acesso ao servidor vê se não a fila de mails não está bloqueada. "

Share this post


Link to post
Share on other sites
yellowfish

Boas,

Estás a enviar duas vezes o email

$result = mail($to,$Subject,$Subject,$headers);						  // enviar a mensagem de email
mail('geral@bragatours.com','Assunto','ola');

Experimenta a enviar um email simples

mail('geral@bragatours.com','Assunto','mensagem', 'From: geral@bragatours.com');

Ou então adiciona um script como PHPMailer (formatação em HTML e TEXTO, attachements, etc)

Abraços,

Share this post


Link to post
Share on other sites
veaoum

Sim estava a enviar duas vezes de propósito uma com o que queria enviar e outra sem usar variáveis para ver se o problema era das variáveis.

Afinal o que aconteceu foi que o servidor removeu essa função então tive de fazer através do phpmailer e agora não manda para o geral@bragatours.com mas manda para o meu veaoum@gmail.com. Não consigo encontrar justificação para isto

Share this post


Link to post
Share on other sites
veaoum

Acho que isto está a ser criado por causa de uma salsada...... Como é que eu vou explicar isto, basicamente eu criei 2 emails um chamado reserva o outro apoio, criei através do servidor onde está alocado o site acontece que o email geral@bragatours.com foi criado no gmail e se eu enviar do apoio@bragatours.com para geral@bragatours.com ele não envia, se enviar do geral@bratours.com para geral@bragatours.com já envia...... Poderá ser conflito por um estar alocado no google e o outro não? Sendo que ambos teem o mesmo dominio?

Edited by veaoum

Share this post


Link to post
Share on other sites
veaoum

Está resolvido, acabei por usar o phpmailer e ao que parece tinha razão e ele estava a entrar em conflito por estar a enviar de apoio@bragatours.com definido no servidor que aloja o site para apoio@bragatours.com que tinha sido criado no gmail. criei tudo no gmail e já funciona.

<?PHP
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
//$mail->SMTPDebug = 3;							   // Enable verbose debug output
$mail->isSMTP();									  // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';	  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;							   // Enable SMTP authentication
$mail->Username = 'apoio@bragatours.com';				 // SMTP username
$mail->Password = '**************';						   // SMTP password
$mail->SMTPSecure = 'ssl';						  // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;								    // TCP port to connect to
$mail->From = 'apoio@bragatours.com';
$mail->FromName = 'Apoio a ' .$_POST['nome'];
$mail->addAddress('geral@bragatours.com');			   // Name is optional
$mail->isHTML(true);								  // Set email format to HTML
$mail->Subject = "Mensagem: " .$_POST['assunto'];
$mail->Body    = "Assunto: ".$_POST['assunto'] ."<br/>Nome: ".$_POST['nome'] ."<br/> E-mail: ".$_POST['email'] ."<br /> Telefone: ".$_POST['telefone'] ."<br /> mensagem: ".$_POST['mensagem'];
if(!$mail->send()) {
print " <h1>Erro de envio da mensagem</h1>
 Pedimos desculpa mas não foi possível enviar a sua mensagem por favor tente mais tarde.";
} else {
print "<center><h1>Mensagem enviada</h1> Agradecemos o seu contacto, em breve entraremos em contacto consigo.</center>";
}
?>

Obrigado por toda a ajuda

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.