使用CodeIgniter时PHPMailer不起作用

时间:2019-05-16 16:19:18

标签: php codeigniter phpmailer

我正在尝试在我的网站上实现phpmailer,但在使用CodeIgniter时无法使其工作。当我尝试发送电子邮件时,它立即显示我的错误消息,并且我不知道自己在做什么错。

这是我创建的库的代码:

<?php 
defined('BASEPATH') OR exit('URL inválida.');

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

class Emails{

    // ============================================================================
    public function enviar($assunto, $mensagem, $destinatario){
        require 'assets/phpmailer/src/Exception.php';
        require 'assets/phpmailer/src/PHPMailer.php';
        require 'assets/phpmailer/src/SMTP.php';

        $mail = new PHPMailer(true);                                // Passing `true` enables exceptions
        $enviada = false;
        try {
            //Configurações do servidor
            $mail->SMTPDebug = 0;                   // Enable verbose debug output
            $mail->isSMTP(true);                                        // Set mailer to use SMTP
            $mail->Host = "smtp.gmail.com";                    // Specify main and backup SMTP servers
            $mail->SMTPAuth = true;                                 // Enable SMTP authentication
            $mail->Username = "########";                 // SMTP username
            $mail->Password = "########";                 // SMTP password
            $mail->SMTPSecure = 'ssl';                              // Enable TLS encryption, `ssl` also accepted
            $mail->Port = 465;                     // porta TCP
            $mail->CharSet = "UTF-8";

            //Contas
            $mail->setFrom($mail->Username);

            //adiciona destinatários adicionais, se estiverem indicados
            $mail->addAddress($destinatario);            

            //Conteudo
            $mail->isHTML(true);                                    // Definir o formato como HTML
            $mail->Subject = $assunto;
            $mail->Body    = $mensagem;

            $enviada = $mail->send();

        } catch (Exception $e) {
            $enviada = false;
        }
        return $enviada;
    }
}

?>

这是我在控制器上的功能的代码:

      public function enviar(){

            $this->controlo();

            if($this->input->method() != 'post'){

                $this->load->view('layout/header');
                $this->load->view('utilizadores/recuperar');
                $this->load->view('layout/footer');      
                return;
            }

            $this->form_validation->set_rules('text_email', 'Email', 'trim|required|valid_email');

            if ($this->form_validation->run() == FALSE)
            {
                $dados['erro'] = 'Precisamos que insira o seu email corretamente para conseguir recuperar a sua conta.';

                $this->load->view('layout/header');
                $this->load->view('utilizadores/recuperar', $dados);
                $this->load->view('layout/footer');
                return;
            }

            $this->load->library('Emails');

            $post = $this->input->post();
            $email = $post['text_email'];

            $assunto = 'MageRage - Recuperação da Conta';
            $mensagem = "Olá $email. Clica no link abaixo para mudar a tua password e recuperares a tua conta.<hr>";

            if($this->emails->enviar($assunto, $mensagem, $email)){

                $dados['sucesso'] = 'Foi enviado um email para ' . $email . ' .';
                $this->load->view('layout/header');
                $this->load->view('utilizadores/recuperar', $dados);
                $this->load->view('layout/footer');
                return;

            } else {

                $dados['erro'] = 'ERRO.';

                $this->load->view('layout/header');
                $this->load->view('utilizadores/recuperar', $dados);
                $this->load->view('layout/footer');
                return;

            }

这是我获取电子邮件并显示消息的视图:

<?php
    defined('BASEPATH') OR exit('URL inválida.');
?>

<div class="container pt-5 pb-5">
    <div class="row">
        <div class="col-sm-6 offset-3 col-8 offset-2">
            <div class="card p-5">
                <h3 class="text-center">Recuperar Conta</h3>
                <hr>

                <form action="<?php echo site_url('utilizadores/enviar') ?>" method="post">

                <!-- erro -->
                <?php if(isset($erro)): ?>
                    <p class="alert alert-danger text-center"><?php echo $erro ?></p>
                <?php endif; ?>
                <?php if(isset($sucesso)): ?>
                    <p class="alert alert-success text-center"><?php echo $sucesso ?></p>
                <?php endif; ?>

                <div class="form-group"> 
                <input  type="email" 
                        name="text_email" 
                        class="form-control" 
                        placeholder="Email" 
                        required
                        >
                </div>
                <br>    
                <div class="text-center">
                    <a href="<?php echo site_url('geral') ?>" class="btn btn-primary">Cancelar</a>
                    <button type="submit" class="btn btn-primary">Recuperar</button>
                </div>

                </form>

            </div>
        </div>
    </div>
    <p></p><br>
</div>

我可以请一些帮助人员。预先感谢!

0 个答案:

没有答案