Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galera, pesquisando sobre a classe PHP Mailer estou tentando montar um função para sempre que eu quiser só chamar no meu sistema. Fiz da seuinte forma:
function Email($email_destinatario, $responder, $assunto, $mensagem, $remetente = '') {
$_POST['nome'] = 'Minha Loja';
$mail = new PHPMailer();
$mail->SetLanguage("br", "PHPMailer/language"); // ajusto a lingua a ser utilizadda
$mail->Port = "465"; // ajusto a porta de smtp a ser utilizada. Neste caso, a 587 que o GMail utiliza
$mail->IsSMTP(); // ajusto o email para utilizar protocolo SMTP
$mail->Host = "smtp.minhaloja.com.br"; // 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 = "usuario"; // Usuário SMTP do GMail
$mail->Password = "senha"; // Senha do usuário SMTP do GMail
// Aqui algumas informações que serão enviadas no cabeçalho do email
$mail->From = adm@minhaloja.com.br; // Email de quem envia o email
$mail->FromName = htmlentities($_POST['nome']); // Nome de quem envia o email
$mail->AddAddress("$email_destinatario"); // Endereçode quem vai receber o email
$mail->IsHTML(true); // ajusto envio do email no formato HTML
$mail->Subject = htmlentities($assunto); // Aqui colocar o assunto do email
$mail->Body = htmlentities($mensagem); // aqui o corpo do email text/html
$mail->Send();
//
$topo = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body style="font-family:Arial, Helvetica, sans-serif;font-size:14px">';
$base = '<br />
<br />----------------------------------------------------------------------------------------------------------
<br />Não responda este e-mail.
<br />----------------------------------------------------------------------------------------------------------
<br />
</body>
</html>';
//AQUI NÃO SEI SE PRECISA COLOCAR ISSO, ESTOU ADPTANDO A ANTIGA FUNÇÃO MAIL() POR ISSO DEIXEI
$cabecalho = "MIME-Version: 1.1 \n";
$cabecalho .= "Content-type: text/html; charset=iso-8859-1 \n";//
if ($email_destinatario)
$email = mail($email_destinatario, $assunto, $topo.$mensagem.$base, $cabecalho);
Bom com isso eu criei a função, agora vou mostra um dos caso em que eu a chamo:
$email = Email($parametro['email_atendimento'], $_POST['email'], 'ATENDIMENTO - '.date('d/m/Y H\hi'), $mensagem);
Explicando:
$parametro['email_atendimento'] = defino em outra pagina esta variavel
$_POST['email'] = email que o cara digitou no atendimento ao cliente
'ATENDIMENTO - ' = Assunto do email
$mensagem = corpo do e-mail
================================================================================================
Queria saber o que acham dessa função, ainda nao teste ela, pois antes vim trocar um idéia com o pessoal, pra ver se acham que ela é segura, ou se devo melhorar ela em algum aspecto.....e mais alguem já usou o PHPMailer dentro de um função como estou tentando fazer, senão me fale como você fez :)
Valeu
Oi amigo obrigado por responder
hehe entao este POST saiu errado no codigo ai, é q eu alterei as coisas reais, ai nem vi isso direito e mandei junto
Fiz um teste aqui, e deu certo, tenho que arrumar ainda algumas coisas no sistema mas de modo geral deu certo, só não estou mto seguro se desse modo esta realmente seguro se estou fazendo tudo certo, se agora esta acontecendo a autenticação do e-mail....espero que algum membro que usa esta classe ou q a conheca possa me dizer se dessa forma que eu fiz vai realmente esta seguro
Valeu
Que bom que você está consciente desse erro pois você JAMAIS deve preencher manualmente um array superglobal.
Nunca usei está função, já utilizei uma classe SMTP(); acho que devem ser bem parecidas, (quem conheçe o PHP Mailer me corrija se estiver errado).
A idéia é essa mesma, a principio é pra funcionar sim.
Só não entendi por que usar:
$_POST['nome'] = 'Minha Loja';
Se $_Post é para resgatar variaveis disparadas pelo método Post.
Poderia usar:
$nome = 'Minha loja'; //Variavel local
// Ou já utilizar direto
$mail->FromName = htmlentities('Minha Loja'); // Nome de quem envia o emai
Nunca utilizei o Post recebendo desta forma, nem sei se funciona, irei testar isso.
Como função eu creio que está tudo oK, porem eu criaria uma nova Classe. Uma classe estendida de PHPMailer, onde eu iria definir o servidor de envio e tudo mais, mas porem iria adicionar os 'Sets' para assim poder enviar por departamentos diferentes por exemplo, sem a necessidade de criar uma segunda função. Se você irá disparar sempre do mesmo e-mail a função está perfeita, mas se você acha que irá poder variar o disparo, Administração, Faturamento, Suporte, etc.... Eu sugiro uma nova Classe.
Espero ter ajudado.
Leonardo.