Ir ao conteúdo
  • Cadastre-se

Erro em formulário para enviar email SMTP


FelipeSAMA

Posts recomendados

Boa tarde galera, eu sou novato nesse assunto e não estou conseguindo enviar email por SMPT, aparece o seguinte errro:

Warning: fsockopen() [function.fsockopen]: unable to connect to mail.felipeandres.com.br:25 (Connection timed out) in /home/felipeandr/public_html/contato/class.smtp.php on line 105Ocorreram erros ao enviar email

Eu nunca tentei fazer autenticação por SMTP, por isso não sei me virar...

 

Fiz um formulário bem simples so pra testar, baixei um pacote com os seguitens arquivos: classes, dados, phpmailer

 

este aqui é o formulário:

<title>Contato</title><form action="envia.php" method="POST" name="frmFaleConosco" onsubmit="return submit_page(this);"><div align="center"><center>* Nome<input type="text" size="50" maxlength="50" name="nome"><br/>*Email<input type="text" size="50" maxlength="50" name="email"><br/>*Assunto:<input name="assunto" type="text" id="assunto" /><br/>* Mensagem<br/><textarea rows="5" name="desc" cols="50"></textarea><br/>  <input type="submit" name="Submit" value="Enviar"></div>

Em seguida temos o arquivo envia.php

<?phpsession_start();// Cria variáveis ************$formnome = $_POST['nome']; // dados vindos do contato.php$formemail = $_POST['email']; // dados vindos do contato.php$formdesc = $_POST['desc']; // dados vindos do contato.phprequire ("dados.php"); // pega os dados personalizados desse arquivorequire("class.phpmailer.php"); // envio de e-mail com autenticacao do provedor$mail = new PHPMailer(); // envodo de email com autenticacao do provedor$mail->SetLanguage("br", "language/");$mail->IsSMTP();//Cria PHPmailer class$mail->From = $formemail; //email do remetente$mail->FromName = $formnome; //Nome de formatado do remetente$mail->Host = "$smtp_endereco"; //Pegando dados do alterar_esse_arquivo.php$mail->Mailer = "smtp"; //Usando protocolo SMTP$mail->AddAddress("$seu_email"); //pegando dados do alterar_esse_arquivo.php$mail->Subject = "$assunto";//Assunto do email$mail->Body = $formdesc; //Body of the message assunto que veio do from.htm//SMTP$mail->SMTPAuth = true;$mail->Username = "$usuario_smtp";$mail->Password = "$senha_smtp";//Verifica se email sera enviadoif(!$mail->Send()){ //Checa erros no envo do emailecho "Ocorreram erros ao enviar email"; //Imprime mensagem de que email nào foi enviadoexit;}else{echo "$mensagem_sucesso";exit;}?>

por último o dados.php

<?php$smtp_endereco = "mail.felipeandres.com.br"; // coloque aqui seu endereço ou ip do servidor SMTP$seu_email = "[email protected]"; // coloque aqui o endereço de email que deseja receber as mensagems do formulário de contato.$usuario_smtp = "[email protected]"; // coloque aqui seu usuário SMTP em geral é o próprio email que envia.$senha_smtp = "minhasenha"; // coloque aqui sua senha para o usuário SMTP acima.$mensagem_sucesso = "Mensagem enviada com Sucesso!!!"; // coloque aqui sua mensagem de sucesso ao envio do formulário.?>

Em seguida temos o arquivo do phpmailer que acredito que vocês conheçam.. e mais uma outra classe.. Ele da erro na linha 105, mas não sei o que é.

101        $this->smtp_conn = fsockopen($host,    # the host of the server102                                     $port,    # the port to use103                                     $errno,   # error number if any104                                    $errstr,  # error message if any105                                     $tval);   # give up after ? secs

Se alguém puder me ajudar, tiver expewriencia no assunto e ja tneha usado o phpmailer, poderia me dizer se eu fiz algo de errado ou esqueci de alguma coisa?

 

 

Obrigado...

 

 

Link para o comentário
Compartilhar em outros sites

entendo.. pra falar a verdade eu também nao sei, mas no suporte do uol que é o meu servidor para hospedagem, eles disseram que pro outlook teria que ser mail.felipeandres.com.br.. em todo caso vou tentar!


mudei aqui agora acontece o seguinte erro: "Ocorreram erros ao enviar email"

 

Eu vou fazer o seguinte, desconsiderem esse tópico, vou criar um outro... Porque ao invés de mandar por SMTP usando minha caixa de email. vou usar gmail que é mais seguro.. eu fiz, so que tambem deu erro... já já crio outro.... ^^


Boa tarde... Mudando de Planos, ao invés de mandar email po SMTP usando minha caixa de email. vou mandar com gmail. Pela segurança.

 

Eu fiz o teste e deu o seguinte errro Mail error:

Mail error: SMTP connect() failed.

Vamos aos arquivos...

 

formulario:

<form action="email.php" method="post">    <label for="Nome">Nome:</label>    <input type="text" name="Nome" size="35" />    <label for="Email">E-mail:</label>    <input type="text" name="Email" size="35" />    <label for="Fone">Telefone:</label>    <input type="text" name="Fone" size="35" />    <label for="Mensagem">Mensagem:</label>    <textarea name="Mensagem" rows="8" cols="40"></textarea>    <input type="submit" name="Enviar" value="Enviar" /></form>

email.php

<?php$Nome        = $_POST["Nome"];    // Pega o valor do campo Nome$Fone        = $_POST["Fone"];    // Pega o valor do campo Telefone$Email        = $_POST["Email"];    // Pega o valor do campo Email$Mensagem    = $_POST["Mensagem"];    // Pega os valores do campo Mensagem// Variável que junta os valores acima e monta o corpo do email$Vai = "Nome: $Nome\n\nE-mail: $Email\n\nTelefone: $Fone\n\nMensagem: $Mensagem\n";require_once("phpmailer/class.phpmailer.php");define('xxxxx', 'email');    // <-- Insira aqui o seu GMaildefine('xxxx', 'xxxx');        // <-- Insira aqui a senha do seu GMailfunction smtpmailer($para, $de, $de_nome, $assunto, $corpo) {    global $error;    $mail = new PHPMailer();    $mail->IsSMTP();        // Ativar SMTP    $mail->SMTPDebug = 0;        // Debugar: 1 = erros e mensagens, 2 = mensagens apenas    $mail->SMTPAuth = true;        // Autenticação ativada    $mail->SMTPSecure = 'tls';    // SSL REQUERIDO pelo GMail    $mail->Host = 'smtp.gmail.com';    // SMTP utilizado    $mail->Port = 465;          // A porta 587 deverá estar aberta em seu servidor    $mail->Username = GUSER;    $mail->Password = GPWD;    $mail->SetFrom($de, $de_nome);    $mail->Subject = $assunto;    $mail->Body = $corpo;    $mail->AddAddress($para);    if(!$mail->Send()) {        $error = 'Mail error: '.$mail->ErrorInfo;        return false;    } else {        $error = 'Mensagem enviada!';        return true;    }}// Insira abaixo o email que irá receber a mensagem, o email que irá enviar (o mesmo da variável GUSER),  // o nome do email que envia a mensagem, o Assunto da mensagem e por último a variável com o corpo do email. if (smtpmailer('[email protected]', '[email protected]', 'Nome do Enviador', 'Assunto do Email', $Vai)) {    Header("location:http://www.dominio.com.br/obrigado.html"); // Redireciona para uma página de obrigado.}if (!empty($error)) echo $error;?>

Bom... Espero q dessa vez seja mais fácil identificar algum erro... o require puxa o phpmailer dentro da pastinha... ]pelo o que eu imagino deve ter algum dado errado pra conectar no smtp...

Link para o comentário
Compartilhar em outros sites

  • Moderador

troque :

$mail->SMTPSecure = 'tls';

para

$mail->SMTPSecure = 'ssl';

Neste trecho

$mail->Username = "seu usuário do gmail";$mail->Password = "senha do gmail";

tente tirar aquela função dali e fazer direto.

 

como no exemplo

<?phprequire 'phpmailer.class.php';$mail = new PHPMailer;$mail->isSMTP();                                      // Set mailer to use SMTP$mail->Host = 'smtp.gmail.com';  // Specify main and backup server$mail->Port 465;$mail->SMTPAuth = true;                               // Enable SMTP authentication$mail->Username = '[email protected]';                            // SMTP username$mail->Password = 'suasenhadogemail';                           // SMTP password$mail->SMTPSecure = 'ssl';                            // Enable encryption, 'ssl' also accepted$mail->From = 'seuemailaqui';$mail->FromName = 'seu nome aqui';$mail->addAddress('destinatario', 'nome');  // Add a recipient$mail->isHTML(true);                                  // Set email format to HTML$mail->Subject = 'assunto';$mail->Body    = 'sua variavel';$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';if(!$mail->send()) {   echo 'Message could not be sent.';   echo 'Mailer Error: ' . $mail->ErrorInfo;   exit;}echo 'Message has been sent';
Link para o comentário
Compartilhar em outros sites

Eita.... acho que é algum problema nos meus dados.. tem como descobrir?

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

Não estaria faltando algum comando pra enviar o email? fiz do jeito q tu disse =P

 

<?php$Nome = $_POST["Nome"]; // Pega o valor do campo Nome$Assunto = $_POST["Assunto"]; // Pega o valor$Fone = $_POST["Fone"]; // Pega o valor do campo Telefone$Email = $_POST["Email"]; // Pega o valor do campo Email$Mensagem = $_POST["Mensagem"]; // Pega os valores do campo Mensagem// Variável que junta os valores acima e monta o corpo do email$Vai = "Nome: $Nome\n\nE-mail: $Email\n\nTelefone: $Fone\n\nMensagem: $Mensagem\n";require("phpmailer/class.phpmailer.php");$mail = new PHPMailer();$mail->IsSMTP(); // Ativar SMTP$mail->Host = 'smtp.gmail.com'; // SMTP utilizado$mail->Port = 465;   // A porta 587 deverá estar aberta em seu servidor$mail->SMTPAuth = true; // Autenticação ativada$mail->Username = "meu email";$mail->Password = "senha";$mail->SMTPSecure = 'ssl'; // SSL REQUERIDO pelo GMail$mail->SMTPDebug = 0; // Debugar: 1 = erros e mensagens, 2 = mensagens apenas$mail->From = 'meu email';$mail->FromName = 'Felipe';$mail->addAddress('[email protected]', 'Nome'); // Add a recipient$mail->isHTML(true); // Set email format to HTML$mail->Subject = 'Assunto';$mail->Body = $Vai;$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';if(!$mail->send()) {echo 'Message could not be sent.';echo 'Mailer Error: ' . $mail->ErrorInfo;exit;}echo 'Message has been sent';?>
Link para o comentário
Compartilhar em outros sites

  • Moderador

Antes de tudo, verifique se este arquivo:  class.smtp.php está na mesma pasta do class.phpmailer.php

Depois tente da seguinte forma:

//Dados do formulário$Nome = $_POST["Nome"]; $Assunto = $_POST["Assunto"]; $Fone = $_POST["Fone"]; $Email = $_POST["Email"]; $Mensagem = $_POST["Mensagem"]; //Monta a mensagem que será enviada$body = "  Nome: $Nome <br/>           E-mail: $Email<br/>	           Telefone: $Fone<br/>           Mensagem: $mensagem ";//Credenciais$username = "coloque aqui seu username do gmail";$password = "coloque aqui sua senha do gmail";$remetente = array("seu nome aqui", "seu email aqui");	//Instancia a classe phpmailer.phprequire("class.phpmailer.php");$mail = new PHPMailer();	$mail->SetLanguage("br");						$mail->isSMTP();								$mail->Port     	= 465;						$mail->Host     	= "smtp.gmail.com";			$mail->SMTPAuth  	= true;						$mail->SMTPSecure 	= "ssl";					$mail->Username  	= $username;	$mail->Password		= $password;			$mail->FromName  	= $remetente[0];				$mail->From		= $remetente[1];					$mail->Subject 	 	= $assunto;					$mail->Body		= $body;				$mail->AddAddress($destinatario);						if ($mail->send()):	echo "<center>Ok! Mensagem Enviada com Sucesso</center>";else:	echo "Erro: Não foi possível enviar a mensagem.<br/> 			  $mail->ErrorInfo ";	endif;	
Link para o comentário
Compartilhar em outros sites

ahhh nã o é possível, tem algo de errrado....

Erro: Não foi possível enviar a mensagem.SMTP Connect() falhou.

não existe algum jeito de saber o que esta dando de errrado?

 

 

 

<?php//Dados do formulário$nome = $_POST["nome"]; $assunto = $_POST["assunto"]; $fone = $_POST["fone"]; $email = $_POST["email"]; $mensagem = $_POST["mensagem"]; //Monta a mensagem que será enviada$body = "  Nome: $nome <br/>           E-mail: $email<br/>            Telefone: $fone<br/>           Mensagem: $mensagem ";//Credenciais$username = "[email protected]";$password = "minhasenha";$remetente = array("Cliente", "[email protected]");$destinatario = "[email protected]"; //Instancia a classe phpmailer.phprequire("class.phpmailer.php");$mail = new PHPMailer();$mail->SetLanguage("br"); $mail->isSMTP(); $mail->Port      = 465; $mail->Host      = "smtp.gmail.com"; $mail->SMTPAuth   = true; $mail->SMTPSecure  = "ssl"; $mail->Username   = $username; $mail->Password = $password; $mail->FromName   = $remetente[0]; $mail->From = $remetente[1]; $mail->Subject    = $assunto; $mail->Body = $body; $mail->AddAddress($destinatario); if ($mail->send()):echo "<center>Ok! Mensagem Enviada com Sucesso</center>";else:echo "Erro: Não foi possível enviar a mensagem.<br/>  $mail->ErrorInfo "; endif;?>

Pelo o que ei entendi deve ser alguma falha na conexao, mas o que? senha e email estão corretos... 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

Por onde você está tentando testar? online  ou localhost?

 

Se for localhost, você precisa habilitar a extensão openssl no php.ini:  extension=php_openssl.dll

 

Se for online, provavelmente há algum problema de configuração no servidor ou portas específicas fechadas. Nesse caso, recomendo que entre em contato com seu host, e peça para verificar se a extensão openssl está habilitada, pois você não tem acesso ao arquivo caso não for servidor dedicado.

 

ps: Antes de entrar em contato com seu host, vá nas opções do Google e clique no botão azul. Serve para permitir que você autentique sua conta gmail fora do gmail.. como é o caso do phpmailer.

ps2: Se for o caso de portas fechadas, pedir para seu host liberar as portas 25(seu host mail.felipeandres.com.br), 465 (SSL - Gmail) e 587 (TLS - Gmail).

Link para o comentário
Compartilhar em outros sites

olha so como eles nao ajudam em nada...

 

O intuito desse chamado é explicitar que o formulario funciona perfeitamente em localhost, isso demonstra que tem algum problema de configuração ou portas fechadas, peço que verifiquem pra mim. E me digam se existe algo que está bloquiando meu envio de emails pelo servidor....

oBRIGADO!

 

 

 

FRANCISCO D. 31/03/2014 às 20h34

Prezado Sr. Felipe,
Informamos que função OpenSSL vem ativada por padrão na hospedagem.
Caso tenha dificuldades de envio em seu formulário, informamos que disponibilizamos em nossa Faq um modelo para auxiliá-lo, segue abaixo:

http://www.uolhost.com.br/faq/hospedagem/como-enviar-mensagens-com-php-por-autenticacao-smtp.html

Permanecemos à disposição.

Atenciosamente,
Francisco Emiliano
Suporte UOL HOST

 

 

Felipe 31/03/2014 às 12h35

Boa Tarde...

Eu criei um formulário para envio de emails por SMTP e GMAIL em meu site, porém não envia, diz que tem algum problema na conexão. Sendo assim eu testei em localhost e funcionou perfeitamente.

Provavelmente há algum problema de configuração no servidor ou portas específicas fechadas. Peço que verifiquem se a extensão openssl está habilitada, pois acredito não ter acesso ao arquivo caso não for servidor dedicado.

Eu quero ativar esse recurso no site www.clinicaceo.com.br e dentro de uma subpasta no meu domínio principal www.felipeandres.com.br.

Espero que possam me ajudar.... Obrigado!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...