欢迎光临!
若无相欠,怎会相见

解决MediaWiki邮件发送问题

序言

由于之前服务器软件的问题,导致我的使用MediaWiki搭建的知识库使用起来很烦,每次都得远程连接上服务器,重启软件才能打开。于是,我花了这几天时间调研测试几款服务器软件,最终我选择了upupw这款软件。主要是对新手友好,一些常用的模块带上了。补充说一下,我的这个服务器是阿里云的,系统是Windows。

重建网站

由于我的知识库暂时没有添加资料,就写了关于和免责声明,所以数据库基本上是空的,在加上LOGO和小图标我已经设计好了,所以我是直接把网站程序全部删除,使用另一个服务器软件重新搭建知识库。

一开始还好,很顺利,由于web服务器软件带有我需要的xcache或wincache模块,所以我搭建的很顺利。后来在“参数设置”里的验证电子邮件的地方出错了。

报错

点击发送电子邮件,各种出错,一开始主要就是php mail() 出错, 我到这个服务器软件的官网查了一下,在sendmail.ini 里面配置了一下SMTP相关的参数,很好,不是mail() 出错了,结果又出现(code: -1, response: )] 这个报错了。然后我花了一天的时间,查看了不下于100篇的文章,经过重建网站三四次,测试各种方案,终与完美的解决了MediaWiki发邮件的问题。其实,我自己都快烦了,各种方案都不行,网站都重建了几次,我都在想换一个程序,不用MediaWiki了,换一个用Python写的Wiki程序,而且我也下载了好几个基于Python的Wiki程序,例如MoinMoin,Trac,Wikka,tiki,Piggydb,Mantiabt等。但是这几个除了Trac的界面比较符合我的胃口外,其他的都太丑了,但是Trac并不是纯粹的Wiki。思来想去还是想办法解决MediaWiki的邮件问题,它是很适合我的,界面很简约。

解决办法

安装Pear

首先,安装PEAR。PHP里面有一个mail函数,一般PHP发送电子邮件使用的就是mail() 函数,所以我们要安装这个模块。它的下载链接是:https://pear.php.net/go-pear.phar,这个链接直接打开是很长的代码,所以复制它的链接,用下载软件直接下载。然后上传到服务器里面,也可以在服务器里下载。

打开命令行,在PHP目录里面执行php go-pear.phar 后会出现

Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :

我选择的是system 之后一路Enter ,就安装成功了。同时在最后提示是否更新php.ini的时候,记得按y。你再打开php.ini会发现在最后面多了一行Pear的路径。

安装Mail、Net_SMTP

上一步安装成功后,你可以执行 pear list ,看看你当前用的PHP有哪些模块。

这个是没有Mail、Net_SMTP模块的。那么就需要安装,因为在MediaWiki上的介绍是需要的。执行命令:

pear install MAIL Net_SMTP

它会把依赖的包一块下载安装。安装成功后如下:

修改LocalSetting.php

上面需要安装的已经安装完成,接下来修改MediaWiki的配置文件LocalSetting.php。首先,需要指明的是pear的路径。

$path = array( $IP, "$IP/includes", "$IP/languages","C:\UPUPW_ANK_W64\Modules\PHPX\PHP7X\pear\PEAR","C:\UPUPW_ANK_W64\Modules\PHPX\PHP7X\pear");

将上面的一行代码添加到LocalSetting.php中。然后,再将SMTP信息填上。

$wgSMTP = array(
 'host'     => "ssl://smtp.mxhichina.com", // could also be an IP address. Where the SMTP server is located
 'IDHost'   => "smtp.mxhichina.com",      // Generally this will be the domain name of your website (aka mywiki.org)
 'port'     => 465,                 // Port to use when connecting to the SMTP server
 'auth'     => true,               // Should we use SMTP authentication (true or false)
 'username' => "[email protected]",     // Username to use for SMTP authentication (if being used)
 "password" => "*********"       // Password to use for SMTP authentication (if being used)
 );
$wgEmergencyContact = "[email protected]";
$wgPasswordSender = "[email protected]";

$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgEmailAuthentication = true;

可以按我的填写。把username和password改成你自己的。

同时,之前我还安装了SwiftMailer 拓展,按照官方的方法,一定能安装上去。当时我也是没办法了。

修改sendmail.ini

把sendmail.ini文件的内容补充完整。

[sendmail]
smtp_server=ssl://smtp.mxhichina.com 
; smtp port (normally 25)
smtp_port=465
; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl  = alway use SSL
;   tls  = always use TLS
;   none = never try to use SSL
smtp_ssl=auto
error_logfile=error.log
;debug_logfile=debug.log
; if your smtp server requires authentication, modify the following two lines
auth_username= 自己的邮箱
auth_password= 邮箱密码
; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.
pop3_server=
pop3_username=
pop3_password=

这个是阿里企业邮箱。

注意: 如果你的服务器是阿里云的,SMTP端口一定不要填写25,阿里云把25端口封了。这是我血淋淋的教训。

我当时用的25端口,在这里找到了,都被当做攻击了。我以为是需要pop3验证,所以pop3的资料我也填了,结果今天查看邮箱登陆记录,才知道不能用25端口。

昨天的pop3是成功的,今天换成465端口的ssl,成功发信了。

经过一天的折腾,把发邮件的功能弄好,我还是很高兴的。

最后

最后说一下,这个解决方案并不适合所有人,因为我上网查了100多篇的文章,经过很多次的实验,才成功的,这个解决方案能解决我的问题,但不一定能解决你的问题,所以,对你来说只是参考,我也希望能解决你的问题。

如有错误,敬请指出,感谢阅读!  —2018-01-24  22:06:21

赞(0) 打赏
转载请注明:飘零博客 » 解决MediaWiki邮件发送问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临