Enviando e-mail via SMTP autenticado com PHP
Ir para navegação
Ir para pesquisar
Introdução
Alguns servidores, por questões de segurança, podem ter a função mail do PHP bloqueada, nestes casos é recomendado o uso da classe PHPMailer para envio de mensagens se conectando diretamente ao servidor SMTP de seu domínio de forma autenticada.
A classe PHPMailer é gratuita e pode ser encontrada para download em: http://code.google.com/a/apache-extras.org/p/phpmailer/
Download da Classe
O PHPMailer está disponível para download no Sourceforge através do endereço: http://code.google.com/a/apache-extras.org/p/phpmailer/
O Uso
Descompacte a classe e envie para seu servidor, no arquivo de seu formulário, faça o include do arquivo class.phpmailer.php, feito isto basta configurar conforme exemplo abaixo:
<?php // Faz o include da classe PHPMailer include("/caminho/para/classe/PHPMailerAutoload.php"); // Inicializa a classe PHPMailer $mail = new PHPMailer(true); // Informa que o envio será feito via SMTP $mail->IsSMTP(); // Define que o e-mail será HTML $mail->IsHTML(true); // Tenta fazer o envio try { // Aqui você deve informar o endereço do servidor SMTP de seu domínio $mail->Host = "SMTP.SEUDOMINIO.COM.BR"; // Aqui é informado que o SMTP é autenticado $mail->SMTPAuth = true; // Informe o usuário $mail->Username = "SEU USUARIO DE EMAIL"; // Informe a senha $mail->Password = "A SENHA DO EMAIL"; // Configura a porta 587 do smtp $mail->Port = 587;
// Endereço do Remetente, recomenda-se sempre usar um e-mail válido de seu domínio, pois se neste campo for colocado o endereço do remetente, a mensagem pode ser recusada por restrições em SPF $mail->SetFrom('EMAIL@REMETENTE-UM-EMAIL-@SEUDOMINIO.COM.BR', 'NOME REMETENTE'); // Endereço de Resposta (Neste campo pode ser colocado o e-mail do remetente) $mail->AddReplyTo('EMAIL@PARA-RESPOSTADOEMAIL-O-EMAIL-DE-QUEM-POSTOU-O-FORM', 'Nome'); // Endereço de Destino do formulário $mail->AddAddress('EMAIL@DESTINO-DO-FORMULARIO', 'NOME-DE-DESTINO'); // Assunto do e-mail $mail->Subject = 'ASSUNTO DO E-MAIL'; // Conteúdo do e-mail em modo texto, caso você monte o corpo em uma variável, pode coloca-la aqui, pois a expressão regular irá remover todas as TAGS HTML $mail->AltBody = ereg_replace("<([^>]+)>", "", "CONTEUDO-EM-MODO-TEXTO"); // Conteúdo do e-mail em HTML $mail->Body = "CONTEUDO-EM-HTML"; // Caso queira ativar o debug dos erros, e do envio do smtp, descomente esta linha //$mail->SMTPDebug = 2; // Envia a mensagem $mail->Send(); // Em caso de sucesso exibe que a mensagem foi enviada echo "Mensagem enviada."; // Em caso de erro do PHPMailer, exibe } catch (phpmailerException $e) { echo $e->errorMessage(); // Em caso de erro do PHP, exibe } catch (Exception $e) { echo $e->getMessage(); } ?>