Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Falha ao enviar e-mail utilizando a Library email.

Pessoal, boa tarde. Ao tentar enviar um e-mail um erro abaixo é mostrado. Falhou ao enviar o comando AUTH LOGIN. Erro: Não foi possível enviar o email utilizando PHP SMTP. Talvez o seu servidor não esteja configurado para enviar emails utilizando este método.

Abaixo código da configuração do e-mail.

// Carrega a library email
        //Recupera os dados do formulário
        $dados = $this->input->post();
        $config['protocol'] = 'smtp'; // define o protocolo utilizado
        $config['smtp_host'] = "smtp.live.com";
        $config['smtp_user'] = "meuemail@hotmail.com";
        $config['smtp_pass'] = "minhasenha";
        $config['smtp_port'] = "587";
        //Inicia o processo de configuração para o envio do email
        $config['wordwrap'] = TRUE; // define se haverá quebra de palavra no texto
        $config['newline']  = "\r\n";
        $config['crlf']     = "\r\n";
        $config['charset']  = 'UTF-8';

        /*
         * Se o usuário escolheu o envio com template, define o 'mailtype' para html, 
         * caso contrário usa text
         */
        if(isset($dados['template']))
            $config['mailtype'] = 'html';
        else
            $config['mailtype'] = 'text';

        $this->load->library('email',$config);
        // Inicializa a library Email, passando os parâmetros de configuração
        $this->email->initialize($config);

        // Define remetente e destinatário
        $this->email->from('emaildestino@hotmail.com', 'Remetente'); // Remetente
        $this->email->to($dados['email'],$dados['nome']); // Destinatário

        // Define o assunto do email
        $this->email->subject('Enviando emails com a library nativa do CodeIgniter');

        /*
         * Se o usuário escolheu o envio com template, passa o conteúdo do template para a mensagem
         * caso contrário passa somente o conteúdo do campo 'mensagem'
         */
        if(isset($dados['template']))
            $this->email->message($this->load->view('Login/email-template',$dados, TRUE));
        else
            $this->email->message($dados['mensagem']);

        /*
         * Se foi selecionado o envio de um anexo, insere o arquivo no email 
         * através do método 'attach' da library 'Email'
         */
        if(isset($dados['anexo']))
            $this->email->attach('./assets/images/unici/logo.png');

        /*
         * Se o envio foi feito com sucesso, define a mensagem de sucesso
         * caso contrário define a mensagem de erro, e carrega a view home
         */
        if($this->email->send())
        {
            $this->session->set_flashdata('success','Email enviado com sucesso!');
            $this->load->view('Login/Formulario_Senha');
        }
        else
        {
            $this->session->set_flashdata('error',$this->email->print_debugger());
            $this->load->view('Login/Formulario_Senha');
        }

Os dados para envio da mensagem vem deste formulário.

<?php if ($this->session->flashdata('success') == TRUE): ?>
<div><?= $this->session->flashdata('success'); ?></div>
<?php endif; ?>
<?php if ($this->session->flashdata('error') == TRUE): ?>
<div><?= $this->session->flashdata('error'); ?></div>
<?php endif; ?>

<form method="POST" action="<?=base_url('index.php/enviar-email')?>">

<div>
    <label>Seu nome</label>
    <input type="text" name="nome" required/>
</div>

<div>
    <label>Seu email</label>
    <input type="email" name="email" required/>
</div>

<div>
    <label>Uma mensagem pra você</label>
    <textarea name="mensagem" rows="6" required></textarea>
</div>

<div>
    <label><input type="checkbox" name="anexo"/><strong>Enviar anexo</strong></label>
</div>

<div>
    <label><input type="checkbox" name="template"/><strong>Usar template</strong></label>
</div>

<div>
    <input type="submit" value="Enviar"/>
</div>

</form>
1 resposta
solução!

Pessoal, segue a solução...

$this->load->library('email');
        // Carrega a library email
        //Recupera os dados do formulário
        $dados = $this->input->post();
        $config['protocol'] = 'smtp'; // define o protocolo utilizado
        $config['smtp_host'] = "smtp.live.com";
        $config['smtp_user'] = "seuemail@hotmail.com";
        $config['smtp_pass'] = "suasenha";
        $config['smtp_port'] = "25";
        $config['smtp_crypto'] = 'tls';
        //Inicia o processo de configuração para o envio do email
        $config['wordwrap'] = TRUE; // define se haverá quebra de palavra no texto
        $config['newline']  = "\r\n";
        $config['crlf']     = "\r\n";
        $config['charset']  = 'UTF-8';

O que fora incluso:

$config['smtp_crypto'] = 'tls';

E alterado a porta para 25.

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software