如何在codeigniter中使用PHPMailer?

sta*_*bie 4 php email codeigniter

当我尝试使用PHPMailer发送电子邮件时出现以下错误



2016-05-31 10:44:55客户端 - >服务器:EHLO localhost 2016-05-31 10:44:56客户端 - >服务器:邮件来自:2016-05-31 10:44:56 SMTP错误:邮件来自命令失败:530-5.5.1需要验证.了解更多信息,请访问530 5.5.1 https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp 2016-05-31 10:44:56以下发件人地址失败:my.news.app@gmail .com:MAIL FROM命令失败,需要验证.有关详情, 访问https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp,530,5.5.1SMTP服务器错误:MAIL FROM命令失败详细信息:需要验证.有关详情, 访问https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp SMTP代码:530其他SMTP信息:5.5.1以下发件人地址失败:my.news.app@gmail.com: MAIL FROM命令失败,需要验证.有关详情, 访问https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp,530,5.5.1SMTP服务器错误:MAIL FROM命令失败详细信息:需要验证.有关详情, 访问https://support.google.com/mail/answer/14257 v27sm39349082pfi.49 - gsmtp SMTP代码:530其他SMTP信息:5.5.1 2016-05-31 10:44:56客户端 - >服务器:退出

Pra*_*eri 6

首先,您需要确保sendmail在灯泡服务器上安装程序,以便从CI3电子邮件类发送邮件.在您的本地主机上,您很可能不会安装此主机,但在大多数Web主机服务器上,它将是.所以我的第一个建议是尝试从远程Web服务器运行它,看看是否发送了邮件.确保email在从控制器发送邮件之前加载库.像这样的东西:

//run this from your controller
$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
Run Code Online (Sandbox Code Playgroud)

如果您想要更多地控制它,CI3还为您提供配置选项.您可以sendmail在发送邮件之前按如下方式配置路径和其他变量.以下是您可以设置的完整首选项列表:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);
Run Code Online (Sandbox Code Playgroud)

但是,如果你仍然坚持使用PHPMailer,那么你可以像elddenmedio建议的那样做.但是,在这种情况下,最好将PHPMailer放在libraryor或third_party文件夹中,然后从构造函数中加载,而不是偶尔使用require.

编辑:

如果有人通过谷歌搜索找到这个,这里是完整的代码,用于发送smtp我在最近的CI3项目中使用过的邮件.这是用于在使用PHPMailer库的情况下发送邮件:

public function send_email($to, $subject, $message) {
    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'mail.gmx.com',
        'smtp_port' => 587, //465,
        'smtp_user' => 'myself@gmx.com',
        'smtp_pass' => 'PASSWORD',
        'smtp_crypto' => 'tls',
        'smtp_timeout' => '20',
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );
    $config['newline'] = "\r\n";
    $config['crlf'] = "\r\n";
    $this->CI->load->library('email', $config);
    $this->CI->email->from('myself@gmx.com', 'Admin');
    $this->CI->email->to($to);
    $this->CI->email->subject($subject);
    $this->CI->email->message($message);

    //$this->email->send();
    if ( ! $this->CI->email->send()) {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

只需用您自己的凭据替换myself@gmx.comPASSWORD.