西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > OpenCart教程 >

修正Opencart2的contact页面发信bug

时间:2016-04-27 01:48来源:未知 作者:好模板 点击:
Opencart原本使用 Mail 协议,通过服务器的 postfix 发信.尝试设置了 dns 添加 spf, 使用 RDNS, 但还是会遇到向 GMAIL 客户发信被拒的问题.没有搞懂 gmail 到底还要怎么设置. 只好先用 smtp了. smtp 有

Opencart原本使用 Mail 协议,通过服务器的 postfix 发信.尝试设置了 dns 添加 spf, 使用 RDNS, 但还是会遇到向 GMAIL 客户发信被拒的问题.没有搞懂 gmail 到底还要怎么设置. 只好先用 smtp了.

smtp 有个问题就是有些服务器无法连接上zoho的 smtp 服务器的问题. ssh登陆 服务器, “telnet smtp.zoho.com 端口号” 可以测试服务器是不是能正常连接上smtp服务器. 一般无法连接上的,就无法使用 smtp方式. 香港vps 是连不上的,万幸另一个国外vps是可以连上的.

那么问题又来了, 客户忘记密码, gmail用户可以正常收到重置密码的信了.  contact页面留言/询盘确无法发信.

原因:  contact 页面的发信,会将发信方设置为客户填写的邮件地址. 这样直接通过Mail,本机发信没有问题. 但是通过 smtp发信, 会被邮件服务器拒绝. 就像你张三不能冒用李四.

 

解决Opencart思路:

1. 设置发信方和收信方都是自己的账户.

2. 设置客户邮件地址为reply 地址. 这样管理员收到信后,可以直接回复到客户邮箱.

 

注意: 在设置reply 地址的时候,又遇到 mail 类的一个bug.

notepad  _2016-03-27_23-06-35

注意106行, reply 的邮件地址被固定在了 $this->from ,也就是说单纯改 contact 是不够的.

备注: opencart 2.1.0.1 $this->from 已经修正为 $this->reply_to, 也就是可以直接传递一个 email地址过来了. 不过想多传递个用户名的话,还要多改动一下的.(提示, 传递个包含客户名和客户邮箱的数组)

setReplyTo($reply_to) 函数只传递了客户名,没有传客户邮箱过来.

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容