No entanto, recentemente (não sei precisar o tempo) um dos maiores revendedores de serviços de alojamento do nosso país a esotérica, passo a não permitir o envio de email de dentro dos clientes sem que estes se autenticassem via SMTP.
Foi por este motivo que alguém me contacto, e me pediu para resolver o problema.
Pois bem, para começar tive que converter todos os ficheiros que enviavam emails, e retirar a função mail.
PHP - Email autenticado
o PHPMailer é uma classe de php que trata da ligação e de enviar os emails autenticados, por isso bastou importar o ficheiro e tratar do resto.Para não andar sempre a importar o PHPMailer, decidi criar um ficheiro de envio de email, ao qual chamei smtpMailConfig.php o qual deverá ser adicionado com include() a cada inicio de página onde possa ser necessário.
Ficheiro.php
<?php
# Ficheiro de configurações de SMTP e ligação com PHPMailer
include("smtpMailConfig.php");
?>
smtpMailConfig.php
<?php
require("phpmailer/class.phpmailer.php");
/*
* Função de Enviar o email
* $vFrom - Email de Origem
* $vFromNome - Nome de Origem
* $vTo - Email de destino
* $vToNome - Nome de destino
* $vAssunto - Assunto do Email
* $vEmail - Texto do Email
* $vCC - Parametro CC (separados por ;)
*/
function fcEnviarEmail($vFrom,$vFromName,$vTo,$vToName,$vAssunto,$vEmail,$vCC){
global $mail;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
# Dados de Ligação
$mail->Host = "127.0.0.1";
$mail->Username = "info@byteajudarblog.pt";
$mail->Password = "emailpassword";
# Dados Gerais
$mail->From = $vFrom;
$mail->FromName = $vFromName;
$mail->AddAddress($vTo, $vToName);
if(!empty($vCC)){
$vCCArr = explode(';',$vCC);
foreach($vCCArr as $key){
$mail->AddCC($key);
}
}
$mail->IsHTML(true);
$mail->Subject = $vAssunto;
$mail->Body = $vEmail;
if(!$mail->Send()){
return 0;
//echo $mail->ErrorInfo;
}else{
return 1; //echo "Email Enviado";
}
}
?>
Enviar email pela função
Após a aplicação dos passos acima, basta chamar a função e passar os parâmetros:Ficheiro.php
<?php
$assunto = "Email Online";
$texto = "Texto.......texto";
$mailOk = fcEnviarEmail("info@blog.pt","Nome Blog","email@destino.com",'Destino',$assunto,$texto,'cc1@destino.com;cc2@destino.com');
if($mailOk==1)
echo "Email enviado com sucesso"; # Ou mais código php
else
echo "Erro a enviar email";
?>
Autenticação nos serviços Esotérica
Para quem tenha mesmo assim erro a enviar email pelo serviço desta empresa, (e esta situação aconteceu comigo) basta no painel de controlo do domínio (s) verificar se no servidor de DNS existe indicação do localhost (IP: 127.0.0.1), caso não exista tem que adicionar.
======================
Nota: As minhas desculpas pelo código não estar com coloração, mas o blogger não tem essa ferramenta.
Sem comentários:
Enviar um comentário