Ir ao conteúdo
  • Cadastre-se

Contato em html não envia para o e-mail


Ir à solução Resolvido por Air-Gear,

Posts recomendados

Olá pessoal!

 

Eu já até hospedei o site no ar, mas a parte de Contato não funciona. Era pra enviar pelo e-mail do Yahoo com os dados preenchidos.

 

O código, eu só mudei o site e o e-mail pra preservar a identidade da pessoa.

<table width="100%" borderr="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
	<td width="1040" style="background-color: ;">
	<form name="contato" action="http://www.site.com.br/index.html" method="post" onSubmit="mailto: email@yahoo.com.br">
	<input type="hidden" name="action" value="ok">
	<table width="96%">
	  <tr>
		<td width="14%" style="padding-bottom: 5px; color: #FFF;">Nome:<br></td>
		<td width="86%"><input name="nome" type="text" class="formulario" id="nome" style="width:100%;" maxlength="255" tabindex="7" /></td>
	  </tr>
	  <tr>
		<td style="padding-top: 5px; color: #FAFAFA;">E-mail:<br></td>
		<td style="padding-top: 5px;"><input name="email" type="text" class="formulario" id="email" style="width:100%;" maxlength="255" tabindex="8" /></td>
	  </tr>
	  <tr>
		<td style="padding-top: 5px; color: #FAFAFA;">Telefone:<br></td>
		<td style="padding-top: 5px;"><input name="telefone" type="text" class="formulario" id="telefone" style="width:100%;" onkeyup="formatar(this,'(##) ####-####','#','s',event)" maxlength="14" tabindex="11" /></td>
	  </tr>
	  <tr>
		<td style="padding-top: 5px; color: #FAFAFA;">Assunto:<br></td>
		<td style="padding-top: 5px;"><select name="assunto" id="assunto" class="formulario" tabindex="12">
		  <option value="">Selecione</option>
		  <option value="Comercial">Comercial</option>
		  <option value="Financeiro">Financeiro</option>
		  <option value="Orçamento">Orçamento</option>
		  </select></td>
	  </tr>
	  <tr>
		<td style="padding-top: 5px; color: #FAFAFA;">Comentários:<br></td>
		<td style="padding-top: 5px;"><textarea name="comentarios" style="width:100%; height:100px;" rows="7" id="comentarios" class="formulario" tabindex="13"></textarea></td>
	  </tr>
	  <tr>
		<td style="padding-top: 5px;" colspan="3" align="center"><input type="image" src="img/bt_enviar.png" alt=".: Enviar :." tabindex="14">	  </tr>
	</table>
	<br />
	</form>	</td>
  </tr>
</table>

 

Link para o comentário
Compartilhar em outros sites

Em 20/09/2016 às 16:28, dif disse:

@Air-Gear Você cria um arquivo chamado  enviar.php

 

Nele você recebe os dados do formulário por POST.  

Com uma classe chamada phpmailer, você envia os dados para o seu e-mail do yahoo ou qualquer outro e-mail que queiras.

 

Bom, eu fiz mais ou menos assim:

 

enviar.php

<?php

$para= "[email protected]";
$assunto= "Contato pelo site";
$email= $_POST['email'];
$telefone= $_POST['telefone'];
$assunto= $_POST['assunto'];
$comentarios= $_POST['comentarios'];

    $corpo= "<strong> Mensagem de Contato</strong><br><br>";
    $corpo .="<br><strong> Nome: </strong> $nome";
    $corpo .="<br><strong> Assunto: </strong> $assunto";
    $corpo .="<br><strong> E-mail: </strong> $email";
    $corpo .="<br><strong> Telefone: </strong> $telefone";
    $corpo .="<br><strong> Assunto: </strong> $assunto";
    $corpo .="<br><strong> Comentários: </strong> $comentarios";

    $header= "Content-Type: text/html; charset= utf-8\n";
    $header.="From: $email Reply-to: $email\n";

@mail($para,$assunto,$corpo,$header);

header("location:index.php?msg=enviado");
?>

E joguei os códigos HTML num arquivo PHP e com essas mudanças:

<?php
    $msg=0;
    @$msg= $_POST['msg'];
?>

table width="100%" borderr="0" align="center" cellpadding="0" cellspacing="0">
                                          <tr>
                                              <td width="1040" style="background-color: ;">
                                                  <form name="contato" action="enviar.php" method="post" onSubmit="if(validaForm(this)) { return validaEmail(this.Email) } else { return false }">
                                                      <input type="hidden" name="action" value="ok">
                                                      <table width="96%">
                                                          <tr>
                                                              <td width="14%" style="padding-bottom: 5px; color: #FFF;">Nome:<br></td>
                                                              <td width="86%"><input name="nome" type="text" class="formulario" id="nome" style="width:100%;" maxlength="255" tabindex="7" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">E-mail:<br></td>
                                                              <td style="padding-top: 5px;"><input name="email" type="text" class="formulario" id="email" style="width:100%;" maxlength="255" tabindex="8" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Telefone:<br></td>
                                                              <td style="padding-top: 5px;"><input name="telefone" type="text" class="formulario" id="telefone" style="width:100%;" onkeyup="formatar(this,'(##) ####-####','#','s',event)" maxlength="14" tabindex="11" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Assunto:<br></td>
                                                              <td style="padding-top: 5px;"><select name="assunto" id="assunto" class="formulario" tabindex="12">
                                                                      <option value="">Selecione</option>
                                                                      <option value="Comercial">Comercial</option>
                                                                      <option value="Financeiro">Financeiro</option>
                                                                      <option value="Orçamento">Orçamento</option>
                                                                  </select></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Comentários:<br></td>
                                                              <td style="padding-top: 5px;"><textarea name="comentarios" style="width:100%; height:100px;" rows="7" id="comentarios" class="formulario" tabindex="13"></textarea></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px;" colspan="3" align="center"><input type="image" src="img/bt_enviar.png" alt=".: Enviar :." tabindex="14">	  </tr>
                                                      </table>
                                                      <br />
                                                  </form>	</td>
                                          </tr>
                                      </table>

Algo pra melhorar?

Link para o comentário
Compartilhar em outros sites

Sempre saneie* o post para evitar ataques. Se filter_input estiver habilitado basta fazer

$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

antes de usar as variáveis, do contrário você pode fazer algo assim:

foreach ($_POST as $key => $value)
{
    $_POST[$key] = strip_tags(trim($value));
}


Ambas as soluções são meio preguiçosas mas dão conta na pressa. Se der leia um pouco sobre isso para aprender a cuidar de cada variável adequadamente, inclusive validar o formato do e-mail novamente. *sanear = tradução literal de sanitize, o termo em inglês que deve usar na pesquisa.

Fora isso eu impediria o acesso direto ao enviar.php. Uma maneira rápida é:

if($_SERVER['HTTP_REFERER'] == 'contato.php'){ //troque pela sua página
//ações
}

Há como forjar o referer, mas já é alguma coisa. O ideal é trabalhar com sessions ou até .htaccess.

E uma observação: Acho que você esqueceu de trocar o e-mail por um de exemplo nesse seu novo código.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear É por aí... Mas ainda precisa melhorar um pouco mais. 

E começaria primeiro enxugando seu formulário. Usar a técnica tableless.

No seu php,  eu eliminaria o uso do @    e retiraria estas linhas:

<?php
    $msg=0;
    @$msg= $_POST['msg'];
?>

 

No seu arquivo enviar.php  eu receberia os dados via POST  e aplicaria a função recomendada pelo amigo acima e mais algumas..  você até mesmo criar as suas se quiser. 

Para enviar o e-mail, eu não usaria a função nativa, mas sim a classe de envio "phpmailer" ela é a melhor para se usar.

E por fim,  para ser mais dinamico,  usaria o ajax em jQuery  com as funções  $.ajax()   que possue retornos.. como done() e fail()  assim eliminando o refresh da página. 

 

Você pode encontrar muitos materiais sobre isso no google, no site do jquery,  aqui mesmo no fórum...  

Link para o comentário
Compartilhar em outros sites

Bem, descobrir que os emails chegaram no YahooMail, mas estão indo direto para pasta de spam.

 

Sobre o phpmailer, eu achei esse tutorial, http://wiki.locaweb.com.br/pt-br/Enviar_e-mails_pelo_PHP_usando_o_PHPMailer e pelo que entendi, eu vou usar o código do autor no lugar do código do enviar.php, é isso?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear Não, o código do " autor" é só um exemplo.

Você vai fazer o seu mas usando as funções da classe phpmailer. Recomendo você ler atentamente a documentação dele assim você aprende melhor do que esses tutoriais que só mostram o código e não ensinam nada...

Basicamente o que vai fazer é receber os dados do formulário, incluir as classes necessárias do phpmailer, criar uma instância de objeto da classe phpmailer e usar este objeto atribuindo suas propriedades e usando funções dele.

 

Em específico, esse tutorial é da locaweb. Não recomendo. Particularmente recomendo o próprio gitHub deles https://github.com/PHPMailer/PHPMailer/wiki/Tutorial  pois contém a explicação da versão mais recente.

 

O jeito da locaweb é obsoleto.

 

Aqui no fórum possui vários tópicos sobre o phpmailer.

 

 

Link para o comentário
Compartilhar em outros sites

@dif e @Nihal Eu peguei o PHPMailer e eu modifiquei o enviar.php. Ficou assim:

<?php

require 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer();
$mail->setLanguage('pt_br');

$host       ='smtp.yahoo.com.br';
$username   ='[email protected]';
$password   ='senhayahoo';
$port       ='587';
$secure     ='tls';

$from       = $username;
$fromName   = 'Nome do site';

$mail->isSMTP();
$mail->Host         = $host;
$mail->SMTPAuth     = true;
$mail->Username     =$username;
$mail->Password     = $password;
$mail->Port         = $port;
$mail->SMTPSecure   = $secure;

$mail->From=$from;
$mail->FromName=$fromName;
$mail->addReplyTo($from, $fromName);

$mail->addAddress('[email protected]', 'Meu nome');

$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->WordWrap = 100;

$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

$nome=$_POST['nome'];
$email= $_POST['email'];
$telefone= $_POST['telefone'];
$assunto= $_POST['assunto'];
$comentarios= $_POST['comentarios'];

$mail->Subject = 'Título do e-mail';
$mail->Body    = "<strong> Mensagem de Contato</strong><br><br>";
$mail->Body    = "<br><strong> Nome: </strong> $nome";
$mail->Body    = "<br><strong> Assunto: </strong> $assunto";
$mail->Body    = "<br><strong> E-mail: </strong> $email";
$mail->Body    = "<br><strong> Telefone: </strong> $telefone";
$mail->Body    = "<br><strong> Assunto: </strong> $assunto";
$mail->Body    = "<br><strong> Comentários: </strong> $comentarios";

header("location:index.php?msg=enviado");
?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear É por ai.. mas está faltando coisas!

Vi que não usou o auto loader,  A última versão usa.

 

https://github.com/PHPMailer/PHPMailer

 

Aqui tem um esboço da versão nova.

 

em tempo já posto aqui o exemplo de uso:

<?php
//auto loader da versão atual
require 'PHPMailerAutoload.php';

//instancia um objeto da classe 
$mail = new PHPMailer;


$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;'                    // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP usuário
$mail->Password = 'secret';                           // SMTP sennha
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('[email protected]', 'Mailer');         //quem está enviando
$mail->addAddress('[email protected]', 'Joe User');     // para onde vai enviar
$mail->isHTML(true);                                  // define para tipo HTML

$mail->Subject = 'Here is the subject';               //assunto 
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';   // corpo do email
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; //corpo alternativo pode omitir se quiser

//esta função é importante  onde verifica se foi enviado ou não.
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent'; // aqui no echo do else você pode colocar seu header enviando para a pagina de OK
}

 

Link para o comentário
Compartilhar em outros sites

@dif Cara, fiz as modificações que você mostrou. Não tive muito o que mudar.

enviar.php

<?php
//auto loader da versão atual
require 'phpmailer/PHPMailerAutoload.php';
require 'phpmailer/class.phpmailer.php';

$mail = new PHPMailer();
$mail->setLanguage('pt_br');
$host       ='smtp.yahoo.com.br';
$username   ='[email protected]';
$password   ='senhayahoo';
$port       ='587';
$secure     ='tls';
$from       = $username;
$fromName   = 'Nome do site';
$mail->isSMTP();
$mail->Host         = $host;
$mail->SMTPAuth     = true;
$mail->Username     =$username;
$mail->Password     = $password;
$mail->Port         = $port;
$mail->SMTPSecure   = $secure;
$mail->From=$from;
$mail->FromName=$fromName;
$mail->addReplyTo($from, $fromName);
$mail->addAddress('[email protected]', 'Meu nome');
$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->WordWrap = 100;
$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
$nome=$_POST['nome'];
$email= $_POST['email'];
$telefone= $_POST['telefone'];
$assunto= $_POST['assunto'];
$comentarios= $_POST['comentarios'];
$mail->Subject = 'Título do e-mail';
$mail->Body    = "<strong> Mensagem de Contato</strong><br><br>";
$mail->Body    = "<br><strong> Nome: </strong> $nome";
$mail->Body    = "<br><strong> Assunto: </strong> $assunto";
$mail->Body    = "<br><strong> E-mail: </strong> $email";
$mail->Body    = "<br><strong> Telefone: </strong> $telefone";
$mail->Body    = "<br><strong> Comentários: </strong> $comentarios";

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent'; // aqui no echo do else você pode colocar seu header enviando para a pagina de OK

}

header("location:index.php?msg=enviado");

?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear Mas funcionou desse jeito?

Eu vejo ali algumas coisas desnecessárias... como por  exemplo você já colocou o autoload.. então não é necessário incluir a classe 

 

Então esta linha é desnecessária:

require 'phpmailer/class.phpmailer.php';

PS: tenha em mente que o arquivo class.phpmailer.php e  class.smtp.php devem estar na mesma pasta ou seja "phpmailer/"

 

 

O set language, não precisa.  a linha 

$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

não precisa, só precisaria se tivesse intenção de  cadastrar dados no banco de dados, ou consultar.. e etc.. é só um filtro. Você pode trocar pelo addslashes() ou escapar os caracteres especiais. Mas para um e-mail não tem muito sentido.

 

A linha

 header("location:index.php?msg=enviado");

coloque dentro do else 

 

ficando desta maneira:

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
   header("location:index.php?msg=enviado");

}

Provavelmente não é a melhor forma de avisar que foi enviado..  é mais negócio você deixar em apenas texto e exibir isso com ajax em um alert ou algum elemento na página.  

 

 

No $mail->body,  você pode usar uma variável contendo a estrutura por exemplo:

 

$body = "
       <strong> Mensagem de Contato</strong><br/> 
       <strong> Nome: </strong> $nome <br/>
       <strong> Assunto: </strong> $assunto <br/>
       <strong> E-mail: </strong> $email <br/>
       <strong> Telefone: </strong> $telefone <br/>
       <strong> Comentários: </strong> $comentarios
";


$mail->Body    = $body;

 

Link para o comentário
Compartilhar em outros sites

@dif Eita! Tenho que prestar mais atenção.

 

Deu esse erro aqui: Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

 

Obs: Eu estou testando no wampserver.

 

O novo código enviar.php

<?php
//auto loader da versão atual
require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer();

$host       ='smtp.yahoo.com.br';
$username   ='[email protected]';
$password   ='senhayahoo';
$port       ='587';
$secure     ='tls';
$from       = $username;
$fromName   = 'Nome do site';

$mail->isSMTP();
$mail->Host         = $host;
$mail->SMTPAuth     = true;
$mail->Username     =$username;
$mail->Password     = $password;
$mail->Port         = $port;
$mail->SMTPSecure   = $secure;
$mail->From=$from;
$mail->FromName=$fromName;
$mail->addReplyTo($from, $fromName);
$mail->addAddress('[email protected]', 'Meu nome');
$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->WordWrap = 100;

$nome=$_POST['nome'];
$email= $_POST['email'];
$telefone= $_POST['telefone'];
$assunto= $_POST['assunto'];
$comentarios= $_POST['comentarios'];

$mail->Subject = 'Título do e-mail';

$body = "
    <strong> Mensagem de Contato</strong><br><br>;
    <br><strong> Nome: </strong> $nome;
    <br><strong> Assunto: </strong> $assunto;
    <br><strong> E-mail: </strong> $email;
    <br><strong> Telefone: </strong> $telefone;
    <br><strong> Assunto: </strong> $assunto;
    <br><strong> Comentários: </strong> $comentarios;
";

$mail->Body = $body;

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header("location:index.php?msg=enviado");
}

?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear Provavelmente não é problema do seu código!

Pode ser por causa do IP do yahoo e sua reputação...

http://pt.stackoverflow.com/questions/14923/melhores-práticas-para-envios-de-emails-e-evitar-spam

 

Experimenta fazer um envio usando o gmail.

 

Eu já testei o phpmailer com domínios e ip próprio e o problema de enviar para caixa de spam não acontece.

Já usei o gmail  e também não acontece. inclusive nos meus testes mandei mais de 15 e-mails e nenhum deles foi para o spam!

 

Então você está no caminho certo e o problema deve estar com o ip do yahoo!

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear Então... convença seu cliente não usar mais. 

 

http://g1.globo.com/tecnologia/noticia/2016/09/yahoo-anuncia-vazamento-de-dados-que-atinge-500-milhoes-de-usuarios.html

 

O problema é a emissão do e-mail pelo yahoo está sendo considerado como spam. Ou ele convive com isso ou muda o e-mail.

 

Citação

Message could not be sent.Mailer Error: SMTP connect() failed.

O erro diz que não pode enviar o e-mail porque não pode se conectar ao SMTP.

Só tem dois tipos de erro que causa isso:

 

1)host do smtp errado

2) a classe class.smtp.php não foi encontrada.

 

estas linhas:

$port ='587'; 
$secure ='tls';

Verifique se a porta é esta mesma, e se o yahoo usa tls ou ssl

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@dif OK, vamo lá!

 

O arquivo class.smtp.php está na pasta phpmailer, então o problema é o host do smtp errado. 

 

Tentei outra configurações da conta Yahoo

$port       ='465';
$secure     ='ssl';

e também tentei do Gmail pra testar. Tá dando ainda o mesmo erro. 

 

Aí surgiu a dúvida, neste código, aqui!

$host       ='smtp.mail.yahoo.com.br';
$username   ='[email protected]';
$password   ='senhayahoo';
$port       ='465';
$secure     ='ssl';
$from       = $username;
$fromName   = 'Nome do site';

E neste!

$mail->From=$from;
$mail->FromName=$fromName;
$mail->addReplyTo($from, $fromName);
$mail->addAddress('[email protected]', 'Meu nome');

Estes dois códigos estão certo?

 

E outra, o código onde tem o formulário do index.php está certo?

<table width="100%" borderr="0" align="center" cellpadding="0" cellspacing="0">
                                          <tr>
                                              <td width="1040" style="background-color: ;">
                                                  <form name="contato" action="enviar.php" method="post" onSubmit="if(validaForm(this)) { return validaEmail(this.Email) } else { return false }">
                                                      <input type="hidden" name="action" value="ok">
                                                      <table width="96%">
                                                          <tr>
                                                              <td width="14%" style="padding-bottom: 5px; color: #FFF;">Nome:<br></td>
                                                              <td width="86%"><input name="nome" type="text" class="formulario" id="nome" style="width:100%;" maxlength="255" tabindex="7" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">E-mail:<br></td>
                                                              <td style="padding-top: 5px;"><input name="email" type="text" class="formulario" id="email" style="width:100%;" maxlength="255" tabindex="8" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Telefone:<br></td>
                                                              <td style="padding-top: 5px;"><input name="telefone" type="text" class="formulario" id="telefone" style="width:100%;" onkeyup="formatar(this,'(##) ####-####','#','s',event)" maxlength="14" tabindex="11" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Assunto:<br></td>
                                                              <td style="padding-top: 5px;"><select name="assunto" id="assunto" class="formulario" tabindex="12">
                                                                      <option value="">Selecione</option>
                                                                      <option value="Comercial">Comercial</option>
                                                                      <option value="Financeiro">Financeiro</option>
                                                                      <option value="Orçamento">Orçamento</option>
                                                                  </select></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Comentários:<br></td>
                                                              <td style="padding-top: 5px;"><textarea name="comentarios" style="width:100%; height:100px;" rows="7" id="comentarios" class="formulario" tabindex="13"></textarea></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px;" colspan="3" align="center"><input type="image" src="img/bt_enviar.png" alt=".: Enviar :." tabindex="14">	  </tr>
                                                      </table>
                                                      <br />
                                                  </form>	</td>
                                          </tr>
                                      </table>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear No formulário, não precisa usar o campo hidden. O campo hidden com o tipo de ação serviria mais se fosse um CRUD por exemplo onde o tipo de ação é passado por post para testar algo.. como por exemplo if edit,  if delete.. e etc.

Fora isso, ele tá OK.  eu só faria diferente a estrutura usando o tableless.

 

Agora no php.

o From:

//esta linha está errada.
$mail->From=$from;

// esta linha está certa
$mail->FromName=$fromName;

//esta linha envia uma cópia de resposta para você
$mail->addReplyTo($from, $fromName);

//para quem você vai enviar
$mail->addAddress('[email protected]', 'Meu nome');

é o seu e-mail( no caso o e-mail da empresa/site que vai enviar o e-mail ao cliente). No seu caso ali, você colocou o username.

Contudo ainda falta uma ali que é o:

 

$mail->setFrom('[email protected]', 'Mailer');

que é aqui onde você vai colocar o email de quem vai enviar.. e o nome!

Link para o comentário
Compartilhar em outros sites

@dif Vamos ver se fiz certo agora. Eu retirei esse código no index.php

<input type="hidden" name="action" value="ok">

Fiz algumas modificações e agora o formulário tá assim:

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
                                          <tr>
                                              <td width="1040" style="background-color: ;">
                                                  <form name="contato" id="contato" action="enviar.php" method="post">
                                                      
                                                      <table width="96%">
                                                          <tr>
                                                              <td width="14%" style="padding-bottom: 5px; color: #FFF;">Nome:<br></td>
                                                              <td width="86%"><input name="nome" type="text" class="formulario" id="nome" style="width:100%;" maxlength="255" tabindex="7" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">E-mail:<br></td>
                                                              <td style="padding-top: 5px;"><input name="email" type="text" class="formulario" id="email" style="width:100%;" maxlength="255" tabindex="8" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Telefone:<br></td>
                                                              <td style="padding-top: 5px;"><input name="telefone" type="text" class="formulario" id="telefone" style="width:100%;" onkeyup="formatar(this,'(##) ####-####','#','s',event)" maxlength="14" tabindex="11" /></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Assunto:<br></td>
                                                              <td style="padding-top: 5px;"><select name="assunto" id="assunto" class="formulario" tabindex="12">
                                                                      <option value="">Selecione</option>
                                                                      <option value="Comercial">Comercial</option>
                                                                      <option value="Financeiro">Financeiro</option>
                                                                      <option value="Orçamento">Orçamento</option>
                                                                  </select></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px; color: #FAFAFA;">Comentários:<br></td>
                                                              <td style="padding-top: 5px;"><textarea name="comentarios" style="width:100%; height:100px;" rows="7" id="comentarios" class="formulario" tabindex="13"></textarea></td>
                                                          </tr>
                                                          <tr>
                                                              <td style="padding-top: 5px;" colspan="3" align="center"><input type="image" src="img/bt_enviar.png" alt=".: Enviar :." tabindex="14">	  </tr>
                                                      </table>
                                                      <br />
                                                  </form>	</td>
                                          </tr>
                                      </table>

Sobre o enviar.php eu mudei algumas coisa de lugar e coloquei comentários pra ficar melhor pra entender.

Só pra esclarecer sobre e-mail do YahooMail e e-mail do Gmail. A do Yahoo é do dono do site que é dono da empresa também e a do Gmail é o meu. Eu vou administrar o site da empresa, fazer as melhorias e tudo mais.

<?php
//auto loader da versão atual
require 'phpmailer/PHPMailerAutoload.php';

$nome           = $_POST['nome'];
$email          = $_POST['email'];
$telefone       = $_POST['telefone'];
$assunto        = $_POST['assunto'];
$comentarios    = $_POST['comentarios'];

$mail = new PHPMailer();

$host       = 'smtp.mail.yahoo.com.br';
$username   = '[email protected]';
$password   = 'senhayahoo';
$port       = 465;
$secure     = 'ssl';

$from       = $username;
$fromName   = 'Nome do Site';

//CONFIGURAÇÕES DO SMTP
$mail->isSMTP();
$mail->Host         = $host;
$mail->SMTPAuth     = true;
$mail->Username     = $username;
$mail->Password     = $password;
$mail->Port         = $port;
$mail->SMTPSecure   = $secure;

//CONFIGURAÇÕES DO DESTINATÁRIO, NO CASO O DONO DO SITE
$mail->From     = $from;
$mail->FromName = $fromName;
$mail->addReplyTo($from, $fromName);

//EMAIL PARA O QUAL O DONO DO SITE DEVERÁ RETORNAR
$mail->setFrom($email,$nome);
$mail->addAddress($email, $nome);

//CONFIGURAÇÕES DO HTML
$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->WordWrap = 70;

//ASSUNTO MENSAGEM
$mail->Subject = 'Título do Assunto';

$body = "
    <strong> Mensagem de Contato</strong><br><br>;
    <br><strong> Nome: </strong> $nome;
    <br><strong> Assunto: </strong> $assunto;
    <br><strong> E-mail: </strong> $email;
    <br><strong> Telefone: </strong> $telefone;
    <br><strong> Assunto: </strong> $assunto;
    <br><strong> Comentários: </strong> $comentarios;
";

$mail->Body = $body;
$mail->AltBody = $body;


// //VERIFICAÇÃO DE RETORNO, SE FOR TRUE PASSA NO IF, SENÃO PASSA NO ELSE
if(!$mail->Send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header("location:index.php?msg=enviado");
}

?>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear

A parte do formulário está OK. Só acho que poderias refazer ele em tableless. Ou seja, não utilizar tabelas e nem css inline. mas sim o css incorporado e manipular os elementos.  isso te possibilita manutenção no código posteriormente.

 

Já no php, a principio agora não vejo problemas. você está setando direitinho os parâmetros.

qual é o erro que está dando agora?

 

 

Link para o comentário
Compartilhar em outros sites

O mesmo erro das outras vezes

Citação

Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

O php_openssl tá habilitado no Wampserver e mesmo assim dá esse erro. Eu tô quase enviando para o servidor pra testar lá.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...