Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
FelipeSAMA

Erro em formulário para enviar email SMTP

Recommended Posts

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 = "contato@felipeandres.com.br"; // coloque aqui o endereço de email que deseja receber as mensagems do formulário de contato.$usuario_smtp = "contato@felipeandres.com.br"; // 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...

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

você baixou a ultima versão do phpmailer? aqui no fórum tem vários tópicos na qual eu ajudo a usar a classe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem,  não sei como seu host disponibiliza endereço do SMTP..mas:

$smtp_endereco = "mail.felipeandres.com.br";

Aparenta estar errado.

seria algo do tipo:

$smtp_endereco = "smtp.felipeandres.com.br";

Compartilhar este post


Link para o post
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('contato@felipeandres.com.br', 'felipe.udk@gmail.com', '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...

Editado por dif
Por gentileza, não poste suas credenciais do gmail aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 = 'seuemail@gmail.com';                            // 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';

Compartilhar este post


Link para o post
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('contato@felipeandres.com.br', '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';?>
Editado por dif
Por gentileza, não poste suas credenciais como usuário e senha aqui, Lembre-se que qualquer um pode ver e prejudicar você. Portanto é extritamente proibido que poste seu usuário, senha de email, servidores.. e etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;	
Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que ficou faltando destinatario ^^ onde que coloca issso? 

 

Caso seja só isso falta pouco

Erro: Não foi possível enviar a mensagem.You must provide at least one recipient email address.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah sim,  fiz no rapidao ali esqueci de trocar a variável $destinatário pela variável que você resgata o email do destinatário.

Agora TEM que funcionar

Compartilhar este post


Link para o post
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 = "felipe.udk@gmail.com";$password = "minhasenha";$remetente = array("Cliente", "felipe.udk@gmail.com");$destinatario = "felipe.udk@gmail.com"; //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... 

 

Editado por FelipeSAMA

Compartilhar este post


Link para o post
Compartilhar em outros sites

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).

Editado por dif
Retificar Informações

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou tentando pelo servidor mesmo, no uolhost... aqueles caras sao muito incompetentes, nao ajudam em nada....

 

vou tentar isso aee... quando responderem eu aviso

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, mas para ter certeza eliminar o erro de código, tente rodar em localhost, se enviar o email, comprova que é problema de conf. deles mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

da pra fazer isso com localhost? pelo que me falaram nao da


e eu nem sei onde achar esse php.ini =O

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza dá sim.

 

Se usar o easyPHP, é só abrir ele, clicar no icone "E e um quadrado vermelho embaixo" , configuration, depois em PHP

Veja na imagem:

 

post-386885-0-37111700-1396054233_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok vamos tentar :D


Pois é cara... você tinha razaão! em localhost está enviando.... 


No CHAT a mulher nãp quis dar nenhum tipo de suporte.. Então eu abri um chamado pra ver se o problema é com eles..... se essa palhaçada continuar eu vou mudar de servidor

Compartilhar este post


Link para o post
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!

Editado por FelipeSAMA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×