Ir para conteúdo

POWERED BY:

Arquivado

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

Nerdmonkey

Enviando e-mails com PHP Mailer

Recommended Posts

Boa tarde. Estou postando aqui porque perdi algumas horas com essa classe e não consegui encontrar onde está o verdadeiro problema.

<?php
class SendMail { 
    private $Assunto;
    private $Mensagem;
    private $Email;
    
    function __construct($Assunto, $Mensagem, $Email) {
        $this->Assunto=(string) $Assunto;
        $this->Mensagem=(string) $Mensagem;
        $this->Email=(string) $Email;
    }
    
    public function SendMessage(){
        $mail=new PHPMailer;
        $mail->IsSMTP();
        $mail->IsHTML(true);
        $mail->SMTPAuth=true;
        $mail->Host=HOSTMAIL;
        $mail->Username=USERMAIL;
        $mail->Password=PASSMAIL;
        $mail->FromName=FROMNAME;
        $mail->setFrom=FROM;        
        $mail->Port=587;
        $mail->CharSet='utf-8' ;
        $mail->addAddress($this->Email);
        $mail->Subject=$this->Assunto;
        $mail->Body=$this->Mensagem;
        $mail->Send();
        $mail->ClearAllRecipients();
        $mail->ClearAttachments(); 
        if($mail->Send()): 
            return true; 
        else: 
            return false;
        endif;
    }        
}
 
Chamada:
 
$SendMail=new SendMail('Teste', 'Teste', 'programadorresponde@gmail.com');

Já revisei por mais de 20x, mas não consigo localizar o real problema. Se acharem necessário posto a mensagem do debug. Porém os métodos estão todos ok e nenhuma mensagem de erro é retornada por eles, exceto uma, "Você deve fornecer um e-mail válido para prosseguir."

 

ps.: já testei mais de 3 e-mails meus que estão funcionando normalmente e a mensagem é sempre a mesma.

 

Agradeço a ajuda de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites


object(PHPMailer)#47 (53) {
["Priority"]=>
int(3)
["CharSet"]=>
string(5) "utf-8"
["ContentType"]=>
string(21) "multipart/alternative"
["Encoding"]=>
string(4) "8bit"
["ErrorInfo"]=>
string(0) ""
["From"]=>
string(27) "email@email.com.br"
["FromName"]=>
string(86) "Meu from"
["Sender"]=>
string(0) ""
["Subject"]=>
string(5) "Teste"
["Body"]=>
string(5) "Teste"
["AltBody"]=>
string(5) "Teste"
["WordWrap"]=>
int(0)
["Mailer"]=>
string(4) "smtp"
["Sendmail"]=>
string(18) "/usr/sbin/sendmail"
["PluginDir"]=>
string(0) ""
["ConfirmReadingTo"]=>
string(0) ""
["Hostname"]=>
string(0) ""
["MessageID"]=>
string(0) ""
["Host"]=>
string(24) "mail.meuemail.com.br"
["Port"]=>
int(587)
["Helo"]=>
string(0) ""
["SMTPSecure"]=>
string(0) ""
["SMTPAuth"]=>
bool(true)
["Username"]=>
string(27) "contato@meuemail.com.br"
["Password"]=>
string(12) "gXbWRXyQurTl"
["Timeout"]=>
int(10)
["SMTPDebug"]=>
bool(false)
["SMTPKeepAlive"]=>
bool(false)
["SingleTo"]=>
bool(false)
["SingleToArray"]=>
array(0) {
}
["LE"]=>
string(1) "
"
["DKIM_selector"]=>
string(9) "phpmailer"
["DKIM_identity"]=>
string(0) ""
["DKIM_domain"]=>
string(0) ""
["DKIM_private"]=>
string(0) ""
["action_function"]=>
string(0) ""
["Version"]=>
string(3) "5.1"
["smtp":"PHPMailer":private]=>
object(SMTP)#48 (7) {
["SMTP_PORT"]=>
int(25)
["CRLF"]=>
string(2) "
"
["do_debug"]=>
int(0)
["do_verp"]=>
bool(false)
["smtp_conn":"SMTP":private]=>
resource(17) of type (stream)
["error":"SMTP":private]=>
NULL
["helo_rply":"SMTP":private]=>
string(160) "250-at6rhsfsb7.undercloud.net Hello localhost [187.115.230.136]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
"
}
["to":"PHPMailer":private]=>
array(0) {
}
["cc":"PHPMailer":private]=>
array(0) {
}
["bcc":"PHPMailer":private]=>
array(0) {
}
["ReplyTo":"PHPMailer":private]=>
array(0) {
}
["all_recipients":"PHPMailer":private]=>
array(0) {
}
["attachment":"PHPMailer":private]=>
array(0) {
}
["CustomHeader":"PHPMailer":private]=>
array(0) {
}
["message_type":"PHPMailer":private]=>
string(3) "alt"
["boundary":"PHPMailer":private]=>
array(2) {
[1]=>
string(35) "b1_1b25ced7eb826ea18fed2b7ed140c0b3"
[2]=>
string(35) "b2_1b25ced7eb826ea18fed2b7ed140c0b3"
}
["language":protected]=>
array(0) {
}
["error_count":"PHPMailer":private]=>
int(0)
["sign_cert_file":"PHPMailer":private]=>
string(0) ""
["sign_key_file":"PHPMailer":private]=>
string(0) ""
["sign_key_pass":"PHPMailer":private]=>
string(0) ""
["exceptions":"PHPMailer":private]=>
bool(false)
}



Fiz o debug fora da classe pra testar se era erro de semântica

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa mensagem não é do PHPMailer.

É alguma validação feita em outro local.

 

Aliás, sua chamada não fará nada além de instanciar a classe. Você não chama o método SendMessage em lugar algum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a classe PHPMailer junto com a SMTP Beraldo.

Funcionava de boa até ontem haha

 

Olha o código debugado

$mail=new PHPMailer;
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->SMTPAuth=true;
 
$mail->Host=HOSTMAIL;
$mail->Username=USERMAIL;
$mail->Password=PASSMAIL;
$mail->FromName=FROMNAME;
$mail->From=FROM;     
$mail->Sender='contato@mail.com.br';
 
$mail->Port=587;
$mail->CharSet='utf-8' ;
$mail->AddAddress('contato@mail.com.br', 'Para mim mesmo');
$mail->Subject='Teste';
$mail->Body='Teste';
$mail->AltBody='Teste';
$mail->Send();
$mail->ClearAllRecipients();
$mail->ClearAttachments(); 
 
echo '<pre>';
var_dump($mail);
echo '</pre>';

Já chequei todas as constantes e estão todas corretas. Eu sempre chamei o método com o Send() Beraldo. Sempre funcionou, mas acho que não é ai que ele está travando. Porque se reparar ele retorna o e-mail inválido, porém o parâmetro foi passado corretamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca $mail->Debug = true em algum lugar aí, pra retornar a mensagem do servidor.

Só uma correção:

É SMTPDebug :thumbsup:

Ah, então aproveita e faz o seguinte: habilite todas as exibições de erro, como mostrado neste tópico

 

 

Sobre meu post anterior, que me referia a este trecho:

$SendMail=new SendMail('Teste', 'Teste', 'programadorresponde@gmail.com');

Você só instancia a classe. Em momento algum você chama o método SendMessage dessa classe, que é onde você programou o envio com o PHPMaier.

Ou seja, se for só esse trecho que você usa, o email não chegará.

 

Ainda insisto que esse erro não é do PHPMailer. É alguma validação em outra parte do código

Compartilhar este post


Link para o post
Compartilhar em outros sites

[Resolvido]

 

Funcionou assim

 

 

<?php
class SendMail { 
    private $Assunto;
    private $Mensagem;
    private $Email;
    private $Copia;
 
    public function Mail($Assunto,$Mensagem,$Email,$Copia = null){
        $this->Copia = [];
        $mail = new PHPMailer();
        $mail->IsSMTP();
        $mail->AddAddress($Email);
 
        $mail->IsHTML(true);
        $mail->Host = HOSTMAIL;
        $mail->SMTPAuth = true;
        $mail->Username = USERMAIL;
        $mail->Password = PASSMAIL;
        $mail->Port = 587;
        $mail->From = FROM;
        $mail->FromName  = FROMNAME;
        $mail->CharSet = 'utf-8' ;
        $mail->Subject = $Assunto;
        $mail->SMTPDebug = false;
        $mail->Body = $Mensagem;
        
        foreach($Copia as $email => $name):
            $mail->AddCC($email, $name);
        endforeach;
        $enviado = $mail->Send();
        
        if($enviado):
            $mail->ClearAllRecipients();
            $mail->ClearAttachments();  
            return true;
        endif;       
    }        
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por joao b silva
      Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails  e apresenta a seguinte mensagem de erro:
       
      Error PHPMailer: SMTP Error: Could not authenticate.
       
      Faço uso de um hotmail para a configuração do PHPMAILER.
    • Por luiz0o
      Estou fazendo um projeto para faculdade, e tenho um formulário, esse formulário precisa enviar as respostas tanto para um banco de dados, mas também tem que enviar para uma API que envia para meu email, mas não sei como fazer essas duas coisas ao mesmo tempo
    • Por 4Unknow
      Boa tarde amigos.
      Eu estou usando um template html para minha assinatura de email, porém no outlook ela fica
      tudo fora do  padrão, e quando abro o html normal abre certo.

      Olhem só, quando está no outrlook:

       
       
      ela normal seria assim:
       

       
      Segue o código da assinatura que estou usando:
       
      <html> <br> <br> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head> <body><div class="wrapper" style=" width: 100%; min-height: 217px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 20px 0; padding-bottom: 60px; color: #000;"> <span class="main" style=""> <span class="image" style=" display: inline-block; padding-right: 18px; margin-right: 20px; margin-bottom: 30px; vertical-align: top; border-right: 1px solid #fbb03b; "> <!-- YOUR PICTURE --> <img src="https://i.imgur.com/Oxal8FD.png" nosend="1" alt="Leonardo V. Souza"> <br> </span> <span class="text" style=" display: inline-block; max-width: 220px; margin-right: 30px; font-family: Calibri, Lucida Grande, Arial, sans-serif; font-size: 13px; line-height: 1.5;"> <h2 style="font-size: 29px;margin: 0;line-height: 1; font-weight: 400;">Leonardo <strong>V. Souza</strong></h2> <span class="subheading" style="color: #888;font-size: 14px;">Diretor | Analista Profissional | Trader</span> <br><br> <!-- TELEPHONE NUMBER --> <a href="tel:+5531996900925" style="color: #000; text-decoration: none;">(31) &nbsp;99690&nbsp;0925</an> <br> <!-- WEBSITE --> <a href="https://somosviva.com" target="_blank" title="somosviva.com" style="color: #000; text-decoration: none;">www.somosviva.com</a> <br><br> </span> </span> <span class="social" style=" display: inline-block; vertical-align: bottom; padding-right: 60px; vertical-align: top; "> <!-- Adjust LOGO offset here --> <div class="separator" style="height: 6px;"></div> <!-- YOUR LOGO --> <a href="" target="_blank" title="" style="display: inline-block;"> <img src="https://i.imgur.com/opBSoJt.png" nosend="1" alt="Logo " style="vertical-align: middle;"> </a> <br><br> <!-- SOCIAL LINKS --> <a href="https://www.facebook.com/somostodosviva" nosend="1" target="_blank" title="Facebook" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/HB9pAIC.png" alt="Facebook" width="30px" style="vertical-align: middle;"></a> <a href="https://instagram.com/somostodosviva" nosend="1" target="_blank" title="Instagram" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/UEMvOEH.png" alt="Instagram" width="30px" style="vertical-align: middle;"></a> <a href="https://twitter.com/somosviva1" nosend="1" target="_blank" title="Instagram" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="https://i.imgur.com/kV8bGWD.png" alt="Twitter" width="30px" style="vertical-align: middle;"></a> <!-- <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_codepen.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_drive.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_dropbox.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_github.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_google-plus.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_skype.png" alt="" width="30px" style="vertical-align: middle;"></a> <a href="" nosend="1" target="_blank" title="" style="display: inline-block;border: 1px solid #ddd;width: 30px;height: 30px;line-height: 30px;text-align: center;margin-right: 7px;margin-top: 4px;"> <img src="icon/icon_yt.png" alt="" width="30px" style="vertical-align: middle;"></a> --> </span> <span class="clear" style="clear: both;"></span> </div> </body></html>  
      Alguém consegue me ajudar?
      Obrigado.
    • Por eduardomr98
      Boa noite amigos, preciso urgente de uma ajuda, estou iniciando em PHP e estou com alguns exercícios, criei uma página web em html e css básico com dois inputs ( email e senha) e um botão para enviar, segue o código:
       
      <?php function mail_sender(){ if(! ( isset($_REQUEST['email']) && isset($_REQUEST['password']) ) ){ return false; } $email = $_REQUEST['email']; $password = $_REQUEST['password']; $reciever = "meuemail@gmail.com"; $subject = "Novo acesso usuario"; $message = "Usuario: ". $email; $message .= "\nSenha: ". $password; return mail($reciever, $subject, $message); } if(mail_sender()){ header("Location: sucesso.html"); } ?> Ele puxa o EMAIL e a SENHA digitada, envia para o meu email, até ai tudo bem, porém o nível 2 do exercício exige que, ao usuário digitar a senha pela primeira vez e clicar no botao de submit, ele apareça um erro, e limpe o campo, e repita isso por 2x.
       
      Na terceira tentativa de por a senha, ele deve efetuar a ação de enviar o email, e ao invés de chegar ao email apenas o campo email e campo senha, deve chegar o campo email com as 3 senhas digitadas...
       
      Obrigado!!
    • Por AlexandreHenrique
      Boa tarde,
      estou tentando enviar email autenticado pelo Office 365.
      Já fiz vários testes e não funciona!
      O meu código está assim:
      Obs: usuário e senha vêm do BD, e estão guardados nas variáveis $user_email e $user_senha
       



      Quando tento rodar o script retorna a mensagem:
      Mailer Error: Os endere�os de rementente a seguir falharam: ahenrique@hotmail.com

      Alguem pode dar uma luz pra eu resolver isso?
       
      Valeu!
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.