Ir para conteúdo

Arquivado

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

Orides Tomkiel Zmovirzynsk

Usando o Smtp do Google com o PHPMailer

Recommended Posts

Olá pessoal, eu já vi em alguns lugares uma forma de enviar emails usando o SMTP do Google com o PHPMailer, mas para isso deve-se alterar algunas linhas no arquivo class.phpmailer.php para que possa funcionar, isso porque o google usa SSL/TLS como protocolos para comunicação e autenticação, no arquivo class.phpmailer.php mais ou menos na linha 537 procure o seguinte código:

 

# Original

if(strstr($hosts[$index], ":"))
		list($host, $port) = explode(":", $hosts[$index]);
else
{
		$host = $hosts[$index];
		$port = $this->Port;
}

 

# Modificar

if (preg_match('#(([a-z]+://)?[^:]+):(\d+)#i', $hosts[$index], $match))
{
		$host = $match[1];
		$port = $match[3];
}
else
{
		$host = $hosts[$index];
		$port = $this->Port;
}

Página de Teste:

 

<?php
require_once 'class.phpmailer.php';

$mail = new PHPMailer ();

$mail -> From = "seu_email@gmail.com";
$mail -> FromName = "Seu Nome";
$mail -> AddAddress ("para_alguem@domain.com");
$mail -> Subject = "Email usando SMTP do Google";
$mail -> Body = "<h4>Email enviado do Gmail.</h4>";
$mail -> IsHTML (true);
$mail -> IsSMTP();
$mail -> Host = 'ssl://smtp.gmail.com';
$mail -> Port = 465;
$mail -> SMTPAuth = true;
$mail -> Username = 'seu_email@gmail.com';
$mail -> Password = 'sua_senha';

if(!$mail->Send()) {
		echo 'Erro:'.$mail->ErrorInfo;
} else {
		echo 'Email enviado!';
}

?>

 

Nota: Para funcionar é necessário que a estensão OpenSSL do PHP esteja habilitada.

 

Att,

 

Orides Tomkiel

www.midiaville.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a diferenca de usar um smtp ou nao para enviar emails? alguem pode me explicar? hehe... email seguro?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo teria como enviar os arquivos modificados? pois não estou tendo sucesso no envio das mensagens. Notei que no meu Windows Live Mail o mesmo esta utilizando a porta 25 e não a 465 (como deveria ser o correto) para o envio de mensagens. Testei essa configuração e nada. Testei também colocar o login com e sem arroba e nada.... Quebra esse galho pra gente e posta os arquivos funcionando certinho mtos de nós não temos servidor smtp proprio para utilização deste magnifico script e somos forçados a recorrer a gratuidade do querido Gmail.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae Orides...

Vlw cara conseguir depois da mudança que você fez...

Ae galera quem quiser os arquivos prontos manda um e-mail pra mim ou adiciona no msn.

fabiomdj@hotmail.com (coloca uma mensagem dizendo que conseguiu meu e-mail aqui)

 

vlw galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este artigo esta desatualizado galera ! Segue abaixo o porquê e como resolver os problemas:

 

O gmail não mais utiliza ssl para se comunicar atravé do protocolo SMTP, agora ele usa TLS.

 

A classe phpmailer utilizada no artigo é a antiga, não sei qual versão. Fica aqui o conselho ao autor do artigo, que na próxima vez que postar um artigo explicando a utilização de um componente, avisar a versão que utilizou, afinal, existe boas práticas até para ajudar os outros.

 

Sugiro que utilizem a mais nova versão do compontente, que tem suporte a vs 5 e 6 do PHP. Quem usa uma versão menor que a 5, sugiro desistir do PHP e ir arrastar botão no Flash ou no Asp.Net.

 

Vou mostra como fica, a utilização do componente PHPMailer v2.2.1 para envio de emails autenticado ao GMail de localhost, do seu provedor, do planeta marte ... não importa, desde que você não tenha um firewall bloqueando a porta 587, ou desde que o GMail não mude as especificações de autenticação no servidor SMTP deles, irá funcionar.

 

Link para download do PHPMailer v2.2.1 aqui: http://sourceforge.net/project/downloading...ip&53274272

 

Descompacte o componente PHPMailer v2.2.1 em alguma pasta e pegue 3 arquivos:

class.phpmailer.php

class.smtp.php

phpmailer.lang-br.php ( você vai encontrar este na pasta language do phpmailer )

 

Estes 3 arquivos você vai deixar dentro de um diretório que você vai criar dentro do diretório que está seu arquivo que enviará o email, ou seja, considerando que eu dei o nome de libs para o diretorio que ficará os 3 arquivos, a estrutura ficará assim:

 

email.php

libs/class.phpmailer.php

libs/class.smtp.php

libs/phpmailer.lang-br.php

 

Arquivo email.php:

 

require("libs/class.phpmailer.php");

$mail = new PHPMailer();
$mail->SetLanguage("br", "libs/"); // ajusto a lingua a ser utilizadda
$mail->SMTP_PORT = "587"; // ajusto a porta de smt a ser utilizada. Neste caso, a 587 que o GMail utiliza
$mail->SMTPSecure = "tls"; // ajusto o tipo de comunicação a ser utilizada, no caso, a TLS do GMail

$mail->IsSMTP(); // ajusto o email para utilizar protocolo SMTP
$mail->Host = "smtp.gmail.com";  // especifico o endereço do servidor smtp do GMail
$mail->SMTPAuth = true;	 // ativo a autenticação SMTP, no caso do GMail, é necessário
$mail->Username = "SeuUsuario";  // Usuário SMTP do GMail
$mail->Password = "SuaSenha"; // Senha do usuário SMTP do GMail

// Aqui algumas informações que serão enviadas no cabeçalho do email
$mail->From = "SeuUsuario@gmail.com"; // Email de quem envia o email
$mail->FromName = "Seu nome"; // Nome de quem envia o email
$mail->AddAddress("Email1@dominio.com", "Josh Adams"); // Endereço e nome de quem vai receber o email, o nome é opcional
$mail->AddAddress("Email2@dominio.com"); // Mais um endereço, somente para mostrar que você pode mandar email para varios endereços no mesmo email. Equilvalente a você usar a [vírgula] nos webmail e clientes de email
$mail->AddReplyTo("SeuUsuario@gmail.com", "Seu nome"); // Email e nome que será utilizado quando a pessoa responder este email

$mail->WordWrap = 50;								 // quebra linha sempre que uma linha atingir 50 caracteres
# $mail->AddAttachment("/var/tmp/file.tar.gz");		 // adc arquivo anexo. *opcional*
# $mail->AddAttachment("/tmp/image.jpg", "new.jpg");	// adc outro arquivo anexo com nome (opcional). *opcional*
$mail->IsHTML(true);								  // ajusto envio do email no formato HTML

$mail->Subject = "Assunto"; // Aqui colocar o assunto do email
$mail->Body	= "Este é o corpo da mensagem <b>, por isso, para exemplicar que este cabeçalho tem suporte html, este está em negrito!</b>"; // aqui o corpo do email para usuarios que tem a opção text/html do seu webmail ou cliente de email ativada
$mail->AltBody = "Este é o corpo da mensagem para usuários que possuem a opção de ver o html do email desativada em seu cliente de email";	 // aqui o corpo do email para usuarios que tem a opção text/html do seu webmail ou cliente de email desativada

if(!$mail->Send())
{
   echo "Mensagem não pode ser enviada. <p>";
   echo "Erro: " . $mail->ErrorInfo;
   exit;
}

echo "Mensagem enviada";

Agora acesse o email.php pelo navegador, e pronto, foi enviado o email.

É claro que você pode e deve, receber os dados de email, assunto, mensagem e etc... provenientes de um $_POST de um formulário de email.

 

NOTA: Phpmailer é um componente completo para envio de email, basta olhar a documentação ou ir direto no codigo e ver que ele envia email de tudo que é jeito. Para quem precisa de outros requisitos de envio SMTP, seja porque o Gmail (não creio que irá mudar nos próximos anos) mudou as especificações ou porque usa outro servidor com outras especificações, basta olhar as funções do arquivo class.smtp.php que lá tem tudo.

Para quem precisa receber emails, o phpmailer nessa nova versão tem uma classe pop que cuida disso. Da para montar um webmail próprio usando somente o componente phpmailer :)

 

Se ainda tem dúvidas ou Se foi util para você, rdeprera@gmail.com . Ou ainda, fale comigo on line no site http://www.publicitario-web.com.br.

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.