Ir para conteúdo

POWERED BY:

Arquivado

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

cissah

Enviar e-mail com phpMailer

Recommended Posts

Oi pessoal, sou nova aqui no fórum e estou começando a desenvolver sites!
Estou tentando fazer o envio de e-mail a partir de um formulário de contato, mas só dá erro e não envia.

O que quero é testar o envio de e-mail pelo localhost e, depois colocar o endereço do servidor correto (no caso, o dominio.com.br).

O erro que aparece quando envio um e-mail é:

Houve um erro ao enviar o email!
Language string failed to load: from_failed **meuemail@gmail.com

 

 

Segue código utilizado:

 

 

ENVIA.PHP

 

<?
ini_set( 'display_errors', true );
error_reporting( E_ALL | E_STRICT );
include("phpmailer/class.phpmailer.php");
//instancia objetos
$mail = new PHPMailer();
$mail->SetLanguage("br", '/phpmailer/language/');
// mandar via SMTP
$mail->IsSMTP();
// Seu servidor smtp
$mail->Host = "smtp.gmail.com";
$mail->SMTP_Port = 465;
$mail->SMTPSecure = 'ssl';
// habilita smtp autenticado
$mail->SMTPAuth = true;
// usuário deste servidor smtp
$mail->Username = "MEU_EMAIL@gmail.com";
$mail->Password = "MINHA_SENHA"; // senha
//email utilizado para o envio
$mail->From = " MEU_EMAIL@gmail.com";
$mail->FromName = "CINTIA";
//Enderecos que devem ser enviadas as mensagens
$mail->AddAddress("MEU_EMAIL@gmail.com","Cintia");
//wrap seta o tamanhdo do texto por linha
$mail->WordWrap = 50;
$mail->IsHTML(true); //enviar em HTML
// recebendo os dados od formulario
if(isset($_POST['nome'])){
$nome = ucwords($_POST['nome']);
$email = $_POST['email'];
$mensagem = $_POST['mensagem'];
// informando a quem devemos responder
//ou seja para o mail inserido no formulario
$mail->AddReplyTo("$email","$nome");
//criando o codigo html para enviar no email
$msg = "";
$msg .= "<b> Nome:</b> $nome<br>\n";
$msg .= "<b> E-mail:</b> $email<br>\n";
$msg .= "<b> Mensagem:</b> $mensagem<br>\n";
}
$mail->Subject = "ASSUNTO DO EMAIL";
//adicionando o html no corpo do email
$mail->Body = $msg;
//enviando e retornando o status de envio
if(!$mail->Send()){
echo "<P>Houve um erro ao enviar o email! </P>".$mail->ErrorInfo;
//$mail->ErrorInfo informa onde ocorreu o erro
exit;
} else {
echo "<P>Mensagem enviada ok</P>";
}
?>

O formulário é simples, e o action aponta para o envia.php.

 

Obrigada desde já!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é preciso configurar o php.ini como na função mail() quando se esta trabalhando com phpmailler

Faz um teste usando este modelo:

 

<?php 

if( $_SERVER['REQUEST_METHOD']=='POST' ){

    $msg = strip_tags(trim($_POST['msg']));

    if($msg == ''){

        echo 'Por favor, preencher o campo mensagem.';

    }else{



require_once("phpmailer/class.phpmailer.php");



$mail = new PHPMailer();

$mail->IsSMTP();

$mail->SMTPAuth = true; 

$mail->Host = 'smtp.gmail.com';

$mail->Username = 'xxxx.gmail.com'; 

$mail->Password = 'xxxxxxxx';

$mail->SMTPSecure = "tls";

$mail->Port = 587

$mail->From = 'xxxx@gmail.com';

$mail->FromName = 'Seunome';

$mail->AddAddress('xxxx@gmail.com', 'Seunome');

$mail->IsHTML(true);

$mail->CharSet  = 'utf-8';

$mail->Body .= "Mensagem: ".nl2br($_POST['msg'])."<br />";

$mail->AltBody = 'Para mensagens somente texto';





if(!$mail->Send()) {

   echo 'Erro ao enviar, por favor entre em contato no email xxxx@seuemail.com.br!';

}else{

   echo 'Mensagem enviada com sucesso!';

   unset($msg);

	 }

  }

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não funcionou!

 

Apareceu a mensagem de erro: Erro ao enviar, por favor entre em contato no email xxxx@seuemail.com.br!

 

Exclui então o código acima do require_once, para ele entrar direto sem o if, assim não apareceu nenhuma mensagem, a página ficou em branco, mas o email não foi enviado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(!$mail->Send()) {

   echo 'Erro ao enviar, por favor entre em contato no email xxxx@seuemail.com.br!';

}else{

   echo 'Mensagem enviada com sucesso!';

   unset($msg);

	 }

  }

}

 

altera para


$enviado = $mail->Send();

$mail->ClearAllRecipients();
$mail->ClearAttachments();

if ($enviado) 
{
  echo "E-mail enviado com sucesso!";
} 
else 
{
  echo "Não foi possível enviar o e-mail.<br /><br />";
  echo "<b>Informações do erro:</b> <br />" . $mail->ErrorInfo;
}

Assim ele vai retornar onde esta ocorrendo este erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo erro de antes!!!

 

Não foi possível enviar o e-mail.

Informações do erro:
Language string failed to load: from_failed cintiafaez@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro esta na falha de leitura deste arquivo de linguagem, mas você removeu a linha que 'seta' para este arquivo?

verifica este post. Nunca vi este erro antes:

http://stackoverflow.com/questions/9109261/language-string-failed-to-load-from-failedfrom-email-address

 

Não acho que seja isso, mas verifica se o openssl.dll esta ativo no php.ini

 

extension=php_openssl.dll

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já havia visto este post antes.

Coloquei o código da linguagem mas mesmo assim não adiantou. O arquivo da linguagem está dentro da pasta language e se chama: phpmailer.lang-br

 

$mail = new PHPMailer();
$mail->SetLanguage("br", '/phpMailer/language/');


Ah, e o openssl.dll está ativo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mesmo erro!!!

Não faço mais ideia do que pode ser!

Olhei bastante códigos e exemplos na net já! :(



Alterei o código do envia.php:

 

 

<?php  

    $nome     = utf8_decode (strip_tags(trim($_POST['nome'])));
    $email    = utf8_decode (strip_tags(trim($_POST['email'])));
    $assunto = "CONTATO DO SITE";
    $mensagem = utf8_decode (strip_tags(trim($_POST['mensagem'])));

            require_once('./phpmailer/class.phpmailer.php');

            $Email = new PHPMailer();
            $Email->SetLanguage("br");
            $Email->IsSMTP(); // Habilita o SMTP 
            $Email->SMTPAuth = true; //Ativa e-mail autenticado
            $Email->Host = 'smtp.gmail.com'; // Servidor de envio # verificar qual o host correto com a hospedagem as vezes fica como smtp.
            $Email->Port = '587'; // Porta de envio
            $Email->Username = 'cintiafaez@gmail.com'; //e-mail que será autenticado
            $Email->Password = 'SENHA_EMAIL'; // senha do email
            $Email->SMTPSecure = "ssl";
            // ativa o envio de e-mails em HTML, se false, desativa.
            $Email->IsHTML(true); 
            // email do remetente da mensagem
            $Email->From = 'cintiafaez@gmail.com';
            // nome do remetente do email
            $Email->FromName = 'Cintia';
            // Endereço de destino do emaail, ou seja, pra onde você quer que a mensagem do formulário vá?

            $Email->AddAddress("cintiafaez@gmail.com"); // para quem será enviada a mensagem
            // informando no email, o assunto da mensagem
            $Email->Subject = "(Contato do site - seudominio.com.br)";
            // Define o texto da mensagem (aceita HTML)
            $Email->Body .= "<br /><br />
                                             <strong>Nome:</strong> $nome<br /><br />
                                             <strong>E-mail:</strong> $email<br /><br />
                                             <strong>Assunto:</strong> $assunto<br /><br />
                                             <strong>Mensagem:</strong><br /> $mensagem";	
            // verifica se está tudo ok com oa parametros acima, se nao, avisa do erro. Se sim, envia.
            if(!$Email->Send()){
                    echo "<p>A mensagem não foi enviada. </p>";
                    echo "Erro: " . $Email->ErrorInfo;
            }else{
                    echo "<script>location.href='sucesso.html'</script>";

            }

?> 

E agora retorna o erro:

 

A mensagem não foi enviada.

Erro: Erro de SMTP: Nao foi possi­vel conectar com o servidor SMTP.

 

 

O que há de errado? É com o PHP.INI? Ou é algum outro arquivo que deva ter?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei aqui com minha conta do Gmail e foi de boa

 require_once('lib/class.phpmailer.php');

            $Email = new PHPMailer();
            $Email->SetLanguage("br");
            $Email->IsSMTP(); // Habilita o SMTP 
            $Email->SMTPAuth = true; //Ativa e-mail autenticado
            $Email->Host = "ssl://smtp.googlemail.com"; // Servidor de envio # verificar qual o host correto com a hospedagem as vezes fica como smtp.
            $Email->Port = '465'; // Porta de envio
            $Email->Username = 'xxx@gmail.com'; //e-mail que será autenticado
            $Email->Password = ''; // senha do email   
            $email->SMTPAuth = true;
            // ativa o envio de e-mails em HTML, se false, desativa.
            $Email->IsHTML(true); 
            // email do remetente da mensagem
            $Email->From = 'ctec.php@gmail.com';
            // nome do remetente do email
            $Email->FromName = 'Teste';
            // Endereço de destino do emaail, ou seja, pra onde você quer que a mensagem do formulário vá?

            $Email->AddAddress("xxxx@gmail.com"); // para quem será enviada a mensagem
            // informando no email, o assunto da mensagem
            $Email->Subject = "(Contato do site - seudominio.com.br)";
            // Define o texto da mensagem (aceita HTML)
            $Email->Body .= "<br /><br />
                                             <strong>Nome:</strong> $nome<br /><br />
                                             <strong>E-mail:</strong> $email<br /><br />
                                             <strong>Assunto:</strong> $assunto<br /><br />
                                             <strong>Mensagem:</strong><br /> $mensagem";	
            // verifica se está tudo ok com oa parametros acima, se nao, avisa do erro. Se sim, envia.
            if(!$Email->Send()){
                    echo "<p>A mensagem não foi enviada. </p>";
                    echo "Erro: " . $Email->ErrorInfo;
            }else{
                    echo "<script>location.href='sucesso.html'</script>";

            }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah! agora sim.

Só alterei o Host, a porta e tirei o $Email->SMTPSecure = "ssl";

Funcionou!

 

Muito obrigada a todos pela ajuda!!!

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.