PHPMailer解决OpenCart发送邮件不成功
很多人反映Opencart后台配置邮件协议为MAIL和SMTP发送邮件都不成功,官方和中文论坛上也有人反映这个问题,本文索性把Opencart中发送邮件的类库替换成PHPMailer,经测试完美解决。
- 下载PHPMailer,解压以后,将里面的
class.phpmailer.php
和class.smtp.php
复制到Opencart的system/library/PHPMailer 目录下面
- 修改system/startup.php,注释掉原来引入mail类代码,添加引入class.phpmailer.php
//用phpmailer代替系统自带的mail和smtp的发送邮件方式
require_once(DIR_SYSTEM . 'library/PHPMailer/class.phpmailer.php');
//require_once(DIR_SYSTEM . 'library/mail.php');
- 在Opencart中需要发送邮件的代码段中,将原来new Mail()的发送邮件相应注释掉,重写PHPMailer的发送邮件实现方法。比如我这里以 admin/controller/sale/contact.php为例:
foreach ($emails as $email) {
//$mail = new Mail();
//$mail->protocol = $this>config>get('config_mail_protocol');
//$mail->parameter = $this>config>get('config_mail_parameter');
//$mail->hostname = $this>config>get('config_smtp_host');
//$mail->username = $this>config>get('config_smtp_username');
//$mail->password = $this>config>get('config_smtp_password');
//$mail->port = $this>config>get('config_smtp_port');
//$mail->timeout = $this>config>get('config_smtp_timeout');
//$mail->setTo($email);
//$mail->setFrom($this>config>get('config_email'));
//$mail->setSender($store_name);
//$mail->setSubject($this>request>post['subject']);
//
//foreach ($attachments as $attachment) {
// $mail->addAttachment($attachment['path'], $attachment['filename']);
//}
//
//$mail->setHtml($message);
//$mail->send();
/**
* 用phpmailer 发送邮件
* @author yuansir
*/
ob_start();
error_reporting(0);
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->IsSMTP();
$mail->Host = $this>config>get('config_smtp_host'); // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = $this>config>get('config_smtp_host');
$mail->Port = $this>config>get('config_smtp_port');
$mail->Username = $this>config>get('config_smtp_username');
$mail->Password = $this>config>get('config_smtp_password');
$mail->SetFrom($this>config>get('config_email'), $store_name); //发件人邮箱和发件人
$mail->Subject = $this>request>post['subject']; //邮件主题
$mail->MsgHTML($message); //邮件内容
$mail->AddAddress($email, ""); //收件人邮箱和收件人
foreach ($attachments as $attachment) {
$mail->AddAttachment($attachment['path']); //添加附件
}
$mail->Send(); //发送
}
然后在后台配置邮件发送SMTP即可,接下来要做的就是替换全站涉及到发送邮件的代码段为PHPMailer的代码,关于PHPMailer的还有其他方法可以去官方查阅。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/26/phpmailer-solve-opencart-email-sending-failure/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
PHPMailer解决OpenCart发送邮件不成功
很多人反映Opencart后台配置邮件协议为MAIL和SMTP发送邮件都不成功,官方和中文论坛上也有人反映这个问题,本文索性把Opencart中发送邮件的类库替换成PHPMaile……
文章目录
关闭
共有 0 条评论