php外包、微信开发、app开发尽在蓝普!PHP技术服务商

uchome 不能正常发送邮件

1)登陆数据库,检查mailcron和mailqueue数据表,看看字段email字段是否存在一些错误的邮件地址,如果存在就删除这些错误的邮件地址。经检查发现部分用户安装了某些插件往这2个表里面塞入了非法格式的邮件地址也可能导致无法发送邮件。

2)经检查,部分用户由于发送邮件的时候mysql经常丢失链接,导致数据库中堆积了大量不成功的邮件,从而新的邮件无法发送造成。自查方法,可以看看mailcron和mailqueue表是否存在大量数据,如果存在,建议你可以如此修改下:
打开do_sendmail.
找到
//开始发送
include_once(S_ROOT.’./source/function_sendmail.php’);
foreach ($list as $cid => $value) {
$mlist = $sublist[$cid];
if($value[’email’] && $mlist) {
$subject = getstr($mlist[0][‘subject’], 80, 0, 0, 0, 0, -1);
$message = ”;
foreach ($mlist as $subvalue) {
if($subvalue[‘message’]) {
$message .= “<br><strong>$subvalue[subject]</strong><br>$subvalue[message]<br>”;
} else {
$message .= $subvalue[‘subject’].'<br>’;
}
}
if(!sendmail($value[’email’], $subject, $message)) {
runlog(‘sendmail’, “$value[email] sendmail failed.”);
}
}
}

//更新用户最后发送时间
if($touids) {
$_SGLOBAL[‘db’]->query(“UPDATE “.tname(‘space’).” SETlastsend=’$_SGLOBAL[timestamp]’ WHERE uid IN (“.simplode($touids).”)”);
}

//删除邮件
$_SGLOBAL[‘db’]->query(“DELETE FROM “.tname(‘mailcron’).” WHERE cid IN (“.simplode($cids).”)”);
$_SGLOBAL[‘db’]->query(“DELETE FROM “.tname(‘mailqueue’).” WHERE cid IN (“.simplode($cids).”)”);

调整下顺序,修改为:

//更新用户最后发送时间
if($touids) {
$_SGLOBAL[‘db’]->query(“UPDATE “.tname(‘space’).” SETlastsend=’$_SGLOBAL[timestamp]’ WHERE uid IN (“.simplode($touids).”)”);
}

//删除邮件
$_SGLOBAL[‘db’]->query(“DELETE FROM “.tname(‘mailcron’).” WHERE cid IN (“.simplode($cids).”)”);
$_SGLOBAL[‘db’]->query(“DELETE FROM “.tname(‘mailqueue’).” WHERE cid IN (“.simplode($cids).”)”);
//开始发送
include_once(S_ROOT.’./source/function_sendmail.php’);
foreach ($list as $cid => $value) {
$mlist = $sublist[$cid];
if($value[’email’] && $mlist) {
$subject = getstr($mlist[0][‘subject’], 80, 0, 0, 0, 0, -1);
$message = ”;
foreach ($mlist as $subvalue) {
if($subvalue[‘message’]) {
$message .= “<br><strong>$subvalue[subject]</strong><br>$subvalue[message]<br>”;
} else {
$message .= $subvalue[‘subject’].'<br>’;
}
}
if(!sendmail($value[’email’], $subject, $message)) {
runlog(‘sendmail’, “$value[email] sendmail failed.”);
}
}
}

3)经检查,部分不能发送的用户是修改了模版,footer模版中去掉了以下代码导致,如果你修改了模版也可自查
查找footer.htm查看是否有下列代码  没有的话加入
<!–{if !isset($_SCOOKIE[‘sendmail’])}–>
<scriptlanguage=”javascript”  type=”text/javascript”src=”do.php?ac=sendmail&rand=$_SGLOBAL[timestamp]”></script>
<!–{/if}–>

这样应该发送就没有问题了,只要有人访问站点页面,邮件5分钟发送一次。

如果你按照以上设置论坛发送邮件成功,uch仍旧无法发送,可以到uch安装使用区提出。
将testmail.php访问url地址贴出来,并把你的data/log目录下的以下2个log文件贴出,类似这样的文件名:
200812_sendmail.php
200812_smtp.php

*****************************************
常见log错误整理:
1,(smtp.qq.com:25) CONNECT – Unable to connect to the SMTP server
表示的是你的uch文件所在服务器无法连接到邮件服务器
可能原因一般都是服务器没有开启25端口或者防火墙拦截导致

自测服务器是否能够连接邮件服务器的方法:
将下列代码保存为testmail.php,上传到uch程序根目录,运行,根据自己的情况修改其中的邮件服务器smtp地址,默认为foxmail

<?php
if(!function_exists(‘fsockopen’)) {
echo ‘系统不支持fsockopen函数,请联系空间商’;
}
$fp = fsockopen(‘smtp.foxmail.com’, 25, $errno, $errstr, 60);
if(!$fp) {
echo “联接失败了”;
} else {
echo “联接成功哦”;
}
?>

如果提示连接失败,那么就是你的空间无法连接邮件服务器,找空间商协助解决吧。
如果提示Warning: fsockopen(): unable to connect to smtp.foxmail.com:25 in\wwwroot\testmail.php on line 2那么说明你的空间不支持fsockopen()函数,联系空间商吧。

2,smtp.foxmail.com:25) PASSWORD – 535 Error: authentication failed

这是SMTP身份验证出错了。现在大多数的邮箱提供的发送邮件服务器都需要身份验证。

要求身份驗證  选择是
發信人郵件地址  和下面的账户信息必须正确
邮件服务端必须开启smtp

3,553 this mail is rejected by antispam system
你发的邮件内容被认为是垃圾邮件了
可以考虑更换下其他的邮件系统吧

4,503 Error: need EHLO and AUTH first !
可能之一服务器要求身份验证没有打勾 原因之二就是你的密码较验错误,看一下是否密码不正确

标签:,

转载请注明来源蓝普网络并以链接形式标明本文地址
本文链接: http://www.wbphp.cn/html/y10/7668.html

作者:星 | 日期:2014-10-10 | 分类:新闻中心 | 评论:0 条 | 浏览:22


上一篇:
下一篇:

发表评论

*

* 以便邮件回复


给我汇款 | 合作流程 | 看看我们 | 加入我们 Copyright 2008-2016 php外包与洛阳php培训服务商. Some Rights Reserved. 豫ICP备12025288号-1