我正在尝试在我的网站上实现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>
我可以请一些帮助人员。预先感谢!