mediawiki的发送邮件功能(邮件验证,找回密码,watch邮件提醒)解决办法 收藏
2009年12月24日


近期在用mediawiki做二次开发。
开始就被挡在了邮件发送功能。
邮件功能是mediawiki的重要功能之一。必须要用的东西。


综合各种信息,有两种解决方案:

一是mediawiki用PHP的mail函数发邮件。
这依赖于SMTP服务器。一般而言,对于linux系统,要求开启邮件服务器服务,这一般自动开启。所以一般问题不大。

但对于win系统而言,要求在本地安装smtp服务器。我的就档在这儿了。本地安装,发送正常。但不知为何,smtp在收到邮件后去无法将邮件送出。

我的本地机是局域网。家里两台电脑,一个路由器上网,网关192.168.1.1。 按相关资料配置后,smtp只能接收邮件,但无法发送邮件,有高人帮助的可以给我留言。


二是用外部smtp服务器发邮件,这需要pear扩展。
     配置localsetting.php

按照要求安装既可。如果遇到时区问题,设置时区:ini_set('date.timezone', 'Asia/Shanghai');

添加

$wgSMTP = array(
"host" => 'smtp.sina.com.cn',
"IDHost" => 'sina.com.cn',
"port" => "25",
"auth" => true,
"username" => 'fxs_2008@sina.com',
"password" => '邮件密码');


却验证用户的邮箱,OK了!



三、其他信息:



下面的我参考的相关资料

参考一:

mediawiki邮件设置

在mediawiki中的邮件功能主要有:1注册新用户时会发邮件到用户注册信箱进行确认。
2用户修改,找回密码时会发邮件确认。
3用户的监视页面发生改变时会发邮件通知已经注册监视了该页面的用户。
对应在wiki设置中,需要改动两个文件:includes下的Default

settings文件,以及Local

Settings文件。defaultsettings文件中,主要设置管理员邮箱的用户名,密码,邮件服务器的信息等,如:
$wgSMTP =

array(
"host" => 'smtp.sina.com.cn',
"IDHost" =>

'sina.com.cn',
"port" => "25",
"auth" => true,
"username" =>

'wikinfs@sina.com',
"password" => '******');
记得还要$wgEnableUserEmail =

true;$wgEnableEmail =

true;
而localsettings文件主要设置对应email服务的路径,以及发送邮件对应的邮箱名字:
$path = array( $IP,

"$IP/includes",

"$IP/languages","D:/web_root/php/PEAR/PEAR","D:/web_root/php/PEAR");
$wgEmergencyContact

= "wikinfs@sina.com";
$wgPasswordSender    =

"wikinfs@sina.com";


wiki使用时找不到mail.php的解决


系统平台:


OS: Centos 4.2


php: php5.1.1


wiki: mediawiki


相关目录:


php: /usr/local/php5


wiki:/usr/local/wiki


问题描述:


在wiki的注册页面使用email发送新建用户的密码时,页面报错:找不到mail.php。


问题解决:


mail.php是pear的模块,而pear是 "PHP Extension and Application

Repository"(pear.php.net).


php5.1.1默认情况下自动安装1.4.5版本的pear,但是mail等pear模块需要独自下载安装。

最新的模块包可以到pear.php.net去下载,那里有最新的模块包。


安装mail:


cd /usr/local/php5/bin/


wget [url]http://pear.php.net/get/Mail-1.1.9.tgz"[/url]

下载最新的mail模块包(可以先上网查看)


./pear install -O Mail-1.1.9.tgz 离线安装mail包


之后再次试验wiki,又报错:找不到Net/SMTP模块。


安装smtp:


cd /usr/local/php5/bin


wget [url]http://pear.php.net/get/Net_SMTP-1.2.7.tgz"[/url]


./pear install -O Net_SMTP-1.2.7.tgz


报错,需要安装Net_Socket包。


安装socket:


wget [url]http://pear.php.net/get/Net_Socket-1.0.6.tgz"[/url]


./pear install Net_Socket-1.0.6.tgz


./pear install Net_SMTP-1.2.7.tgz


然后再次试验wiki注册,用email发送密码成功。呵呵,终于搞定了。


默认情况下,./pear install xxx.tgz 试图从

pear.php.net网站上下载xxx包。但是,我发现总是出错,干脆把包先当下来,然后加个参数 -O(大写字母),本地安装,一切顺利。



http://hi.baidu.com/danghj/blog/item/2f4314335b92f7f31b4cff61.html

参考二:
http://blog.csdn.net/wangxg_7520/archive/2009/06/16/4274180.aspx


参考三:



教你如何安装PEAR。

pear是PHP的扩展和应用程序库,包含了很多有用的类,安装好php5.0后,pear实际上并没有被安装,安装的方法如下:

1.在php目录中双击go-pear.bat。

2.按照提示输入一些设置信息,主要是要把局域网的网关加上,如http://192.168.0.1:80/

,pear要用这个地址访问Internet,若无代理服务器则直接回车

3.然后会提示一些包和PHP绑定,选择Y 。

4.然后安装基本包和提示安装成功,就这么简单。

5.打开windows目录下的php.ini文件,然后查找到如下的地方:

; UNIX: "/path1:/path2"

;include_path = ".:/php/includes"

;

; Windows: "path1;path2"

;include_path = ".;c:phpincludes"

把最后一行的注释去掉,然后把后面路径改成你的PEAR路径,例如:

include_path = ".;c:phppear"

保存PHP.INI,然后重新启动APACHE即可。

---------------

pear命令帮助

---------------

在php目录下多了个pear.bat,在CMD中使用。它的部分命令功能如下:

安装:

自网路安装某一个pear程式库:

pear install packagename

下载 packages 但不安装:

pear download packagename

pear download-all

安装已下载的package:

pear install filename.tgz

列表:

目前pear网站上所有可取得pear程式库列表:

pear remote-list

列出已安装package:

pear list

列出可以升级的package:

pear list-upgrades

更新(升级):

更新package:

pear upgrade packagename

pear upgrade-all

移除:

删除已安装的package:

pear uninstall packagename

安装后安装DB库:

命令行安装pear类库

cmd进入此目录

>pear.bat install db

效果是安装了db库。

写个程序测试: (这里使用Mysql数据库新建了个Table .数据表自建.这里不再详述.不会回家面壁50分钟!!)

<html><head><title>Library

Books</title></head>
<body>

<table

border=1>
<tr><th>Id</th><th>name</th><th>Age</th></tr>
<?php
//

connect
require_once('DB.php');
$db_host = "localhost";
$db_user =

"root";
$db_passwd = "123456";
$db_dbName =

"stu";
$PersistentConnection = 1 ;
$db_type ="mysql";
$db_proto

="";
$db_options="";
$db=DB::connect("$db_type://$db_user:$db_passwd@$db_host/$db_dbName",$db_options);
if

(DB::iserror($db)) {
die($db->getMessage());
}

// issue the

query
$sql = "SELECT * FROM students";

$q =

$db->query($sql);
if (DB::iserror($q)) {

die($q->getMessage());
}

// generate the table
while

($q->fetchInto($row)) {
?>
<tr><td><?= $row[0]

?></td>
<td><?= $row[1]

?></td>
<td><?= $row[2]

?></td>
</tr>
<?php
}
?>




 

本文永久链接: http://www.zzxj.net/blog/fxs_2008/archive/2009/12/24/106.html

发表于 @ 2009年12月24日 |评论(loading... )|收藏

发表评论 姓  名: