Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

discuz7.2discuz论坛邮箱测试成功 注册验证时邮件未发出 iis配置sendmail的说明

[复制链接]
shenmao1989 发表于 2010-6-26 22:53:56 | 显示全部楼层 |阅读模式
本帖最后由 shenmao1989 于 2010-6-26 22:57 编辑

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

注意在

虚拟服务器->属性->访问->中继
将那个复选框选好,然后再添加了*.*.*.*(一定要填写服务器的公网ip,稍后解释)的本地地址
但是这样之后我们在discuz的后台如下配置:



接着进行测试:



这样测试是完全可以成功的,但是如果发件人或者收件人是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的问题。
原文地址:http://www.feeqi.com/?p=95002
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 06:36 , Processed in 0.019875 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表