Como enviar e-mails autenticados pelo Gmail/Google Apps dentro da Hostnet

De Wiki Hostnet
Ir para: navegação, pesquisa

Se você utiliza o Google Apps em sua conta de hospedagem e precisa criar um formulário de contato dentro do seu site para enviar mensagens diretamente para o seu e-mail você pode utilizar o script disponibilizado neste tutorial.

Você já deve saber que a Hostnet permite apenas o envio autenticado e o Gmail também, logo a função mail() do PHP não pode nos ajudar em nada, pois ela não faz o envio autenticado.

Uma alternativa é utilizar o Pear, mais especificamente a biblioteca Pear::Mail. Através desta biblioteca será possível realizar o envio. Saiba mais sobre ela em: Package/Mail

Lembrando que o Pear::Mail, nos servidores PHP da HostNet, já está instalado por padrão.

Para realizar o envio autenticado basta utilizar o script abaixo:


<?php
// Incluindo arquivo com a classe Mail
require_once('Mail.php');

// Destinatário da mensagem
$to = "seu_email_do_google_apps@dominio.com.br";
$from = "seu_email_do_google_apps@dominio.com.br";

// Assunto da mensagem
$subject = "Testando envio autenticado pelo Google Apps";

/* Corpo da mensagem
Em caso de formulário alterar para a variável $_POST['CAMPO'] */
$body = "Teste efetuado com sucesso!";

// Servidor do Gmail. Este servidor é padrão.
$host = "ssl://smtp.gmail.com";

/* Email do Gmail que fará o envio autenticado. Digite neste campo o seu e-mail que será responsável pelo envio dos e-mails */
$username = "seu_email_do_google_apps@dominio.com.br";

// Sua senha do GMAIL
$password = "sua_senha_do_google_apps";

$headers = array ('From' => $from,
 'To' => $to,
 'Subject' => $subject);

$smtp = Mail::factory('smtp',
 array ('host' => $host,
 'port' => 465, // SMTPS(para mais detalhes ver /etc/services
 'auth' => true,
 'debug' => false, // Debug ligado
 'username' => $username,
 'password' => $password)
 );

// Efetuando o envio autenticado
$mail = $smtp->send($to, $headers, $body);

// Verificando se houve erro
if (PEAR::isError($mail)) {
 echo("Error" . $mail->getMessage());
} else {
 echo("Email enviado com sucesso!!");
}
?>


Caso ocorra o erro abaixo (O debug deve estar ligado para ver):

DEBUG: Recv: 535-5.7.1 Username and Password not accepted. Learn more at
DEBUG: Recv: 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 DEBUG: Send: RSET

DEBUG: Recv: 250 2.1.0 Flushed 

authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.1 Username and Password not accepted. Learn more at
5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257)]

DEBUG: Send: QUIT

DEBUG: Recv: 221 2.0.0 mx.google.com closing connection


Ou abaixo:

p> authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.1 Username and Password not accepted. Learn more at
5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 )]


Será necessário acessar o endereço DisplayUnlockCaptcha, para contas que sejam do Gmail, ou https://www.google.com/a/[SEU_DOMINIO_DO_GOOGLE_APPS]/UnlockCaptcha e depois desbloquear o envio de emails sem a utilização de Captcha. Nesse endereço será necessário digitar a sua conta de e-mail (sem o "@" e o seu domínio) e sua respectiva senha.

Caso ocorra o erro abaixo, é porque o servidor que o script está possui proteção na porta 465:

Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: Connection refused
(code: -1, response: )]

Obs.: Esse procedimento deverá ser realizado para cada novo servidor que o script esteja rodando.



Tutor-hospedagem.png
Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas