discuz7.2 在iis下配置php sendmail功能

本文不是将怎样配置IIS下面的SMTP的,详情请看php的mail函数在WinXP+IIS环境下的应用/设置这篇文章。

注意在

虚拟服务器->属性->访问->中继
将那个复选框选好,然后再添加了*.*.*.*(一定要填写服务器的公网ip,稍后解释)的本地地址

但是这样之后我们在discuz的后台如下配置:

image

接着进行测试:

image

这样测试是完全可以成功的,但是如果发件人或者收件人是username user@domain.com这样的格式就不能发送了,也许是iis的服务器不能个支持这样的格式(本人不才,如果高人看到请指教具体原因)

对于论坛上面说到的情况就是这样,后台测试成功,但是在注册或者找回密码或者邀请码发送时候就发送不出去了。

找到原因就好办了,打开sendmail.inc.php文件,修改两处代码:

第一处:

$email_from = $email_from == ” ? ‘=?’.$charset.’?B?’.base64_encode($bbname)."?= <$adminemail>" : (preg_match(‘/^(.+?) <(.+?)>$/’,$email_from, $from) ? ‘=?’.$charset.’?B?’.base64_encode($from[1])."?= <$from[2]>" : $email_from);

改为

$email_from = $email_from == ” ? $adminemail : preg_match(‘/^(.+?) <(.+?)>$/’,$email_from, $from) ? $from[2] : $email_from;

第二处:

$tousers[] = preg_match(‘/^(.+?) <(.+?)>$/’,$touser, $to) ? ($mailusername ? ‘=?’.$charset.’?B?’.base64_encode($to[1])."?= <$to[2]>" : $to[2]) : $touser;

改为

$tousers[] = preg_match(‘/^(.+?) <(.+?)>$/’,$touser, $to) ? $to[2] : $touser;

再测试邮件就成功发送了。以上希望对大家有帮助

同时刚才说到中继要填写服务器真实IP,这是由于如果不设置这些就会使收到的邮件被判定为垃圾邮件。但是只是这样设置也是不够的,还需要在php.ini配置的时候也填写真是IP,而不是填写127.0.0.1 。

接下来你还需要绑定你自己的域名到刚才的IP,比如我的bt.sicau.org,那么发送邮件时候设置发件人为XXX@bt.sicau.org 那么邮件就不会再直接进入QQ,gmail等的垃圾箱了。

以上初步解决RDNS的问题。

  1. 还没有评论

  1. 还没有引用通告。