由于本人技术非常非常有限,Blog的评论邮件回复功能一直没能设置成功,因此回复了你们的留言也没法提示,深表遗憾!恳请各路大神不吝指点一二,不甚感激!
空间:老薛主机的云虚拟主机
程序:Typecho 1.2.1,免费Let's Encrypt证书
插件:CommentNotifier、CommentToMail等都设置不成功
邮箱:QQ、126、139等都试过
测试:CommentNotifier提示:SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting SMTP server error: Failed to connect to server SMTP code: 101 Additional SMTP info: Network is unreachable
最终通过CommentNotifier提供的api推送方式解决
测试的时候使用插件作者提供的公益API进行测试可以成功发送邮件
在自己用的虚拟服务器搭建的API就不行
最后在一个阿里服务器搭建了API就可以发邮件
看来还是服务器的问题
但是受自己技术所限没办法知道是哪里的问题
暂且就这么解决吧
谢谢各位提供的解决思路和帮忙
——以上更新于20250520 18:45

我用的CommentNotifier 和 126 邮箱,之前也断过一段时间,是因为网易邮箱现在也搞授权验证码登陆了,看看是不是这个原因?如不是,可以考虑重新下载typecho和添加主题(不是覆盖,而是删除旧的web目录,再建立重名的web目录)。
意思是重新建一遍站点吗,好复杂啊😂
升级到1.2.3 版本看看?https://typecho.work/download.html
是不是主机厂屏蔽端口了。
也曾这么怀疑过,但是使用探针工具(雅黑PHP探针)的邮件发送检测却又可以发送成功,收到的邮件显示了一个443端口
这个我熟,找我帮你免费解决。
愿闻其详,已邮件咨询,谢谢
你这是连接不上发件服务器鸭,是不是SMTP服务器配置有问题,如果是tls端口一般是587,确认 SSL/TLS 加密连接,验证 SMTP 服务器地址、端口、用户名和密码是否正确,不同的 SMTP 服务要求不同,因为连接的是其他服务商的端口,如果是密码错误也不应该,一般服务商会提示密码错误,而不是说网络不可达
你说的这些大概都可以排除,就是找不到原因
我也是用的typecho1.2.1 而且也是用的 CommentToMail 465的端口可以发送成功。
看来还是得再研究一下,始终有问题
更换php版本试试,我之前的虚拟主机只有php7.3可以发送邮件,其他版本都不行
换为7.3还是不行,有可能是其他问题
也用的typecho1.2.1和CommentNotifier,之前设置时用126不通,后来换用qq通了,使用的也是 SSL/465,有个【异步提交】启动/不启用会不是会是这个影响的,这个比较明显按理应该不至于。
我的应该是虚拟服务器的问题,现在暂时在别的阿里服务器搭建API解决了,后面再慢慢摸索学习。
如果smtp之类的信息都填对了,那就是空间商屏蔽了这些地址的访问,所以连接失败,可以发工单问问空间商
嗯,应该是虚拟空间的原因,换了阿里的服务器搭建API就成功了
绝对是主机问题,以前我也遇到过,换个虚拟主机就好了
我也这么怀疑的,但是不知道具体是哪里的问题,现在也暂时通过API解决了,就没去找主机商了。
而且这个虚拟主机不支持中文,打算明年到期就换掉。
我用的也是老薛主机,邮件通知是正常的,不过我的是WordPress程序,只是在 functions.php加段代码就行了。
可以分享一下代码吗?
/ 邮件通知/
function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
if (!$comment) {
return;
}
$content = $comment->comment_content;
$match_count = preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si', $content, $matches);
if ($match_count > 0) {
foreach ($matches[1] as $parent_id) {
send_comment_reply_notification($parent_id, $comment);
}
} elseif ($comment->comment_parent != '0') {
$parent_id = $comment->comment_parent;
send_comment_reply_notification($parent_id, $comment);
}
}
add_action('comment_post', 'comment_mail_notify');
function send_comment_reply_notification($parent_id, $comment) {
$admin_email = get_bloginfo('admin_email');
$parent_comment = get_comment($parent_id);
if (!$parent_comment) {
return;
}
$author_email = $comment->comment_author_email;
$to = trim($parent_comment->comment_author_email);
$spam_confirmed = $comment->comment_approved;
if ($spam_confirmed != 'spam' && $to != $admin_email && $to != $author_email && !empty($to)) {
$wp_email = 'i@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
$subject = '您在 [' . get_option("blogname") . '] 的留言有了回應';
$message = '
' . esc_html(trim($parent_comment->comment_author)) . ', 您好!
您曾在《' . esc_html(get_the_title($comment->comment_post_ID)) . '》的留言:
'
. esc_html(trim($parent_comment->comment_content)) . '
' . esc_html(trim($comment->comment_author)) . ' 给你的回复:
'
. esc_html(trim($comment->comment_content)) . '
您可以点击
谢谢,你这是代替插件的代码吧?我还以为是调整某个设置的代码,我就感觉是某个设置或者是虚拟服务器设置问题导致的,还是就用API解决吧,后面不行了再想其他办法。
我没用插件,直接把上面的代码放到functions.php文件里面就行了。我的也是虚拟主机,不用设置什么。