我维护着一个Mediawiki网站,直到最近,一切都运行良好。用户可以登录,创建页面,注册电子邮件地址等。
但是,当我的一个用户尝试创建一个新帐户时,她从未收到来自服务器的电子邮件确认,但从未发生过任何错误消息。以前,用户会从“apache@myurl.org”收到链接和所有内容。我涉足这个问题,并尝试切换到另一个电子邮件地址,通过首选项菜单。但是,在输入新的电子邮件地址后,该页面显示以下错误消息,亮红色:
发送邮件时出错:PHP的mail()函数中出现未知错误。“
我尝试创建一个测试用户,在创建帐户后,我得到了一个略有不同的消息(电子邮件是一个简单的Gmail,没有奇怪的字符或任何东西):
wikiname 无法发送您的确认邮件。请检查您的电子邮件地址是否有无效字符 Mailer返回:PHP的mail()函数中出现未知错误。“
我用Google搜索了错误,发现当管理员设置SMTP服务器时出现此错误,与我所做的事情无关。我找不到任何其他有用的信息。
我确保wiki用户可以访问mysql数据库,并确保LocalSettings.php具有正确的mysql登录信息。
LocalSettings.php中的电子邮件设置没有改变(以前有过):
$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgEmergencyContact = "apache@myurl.org";
$wgPasswordSender = "apache@myurl.org";
我能想到的另一件事就是我不久前更改了Apache端口,但其他用户已经创建了帐户并且从那时起成功验证了他们的电子邮件。
我在OSX 10.8.5上运行MAMP,其中包含:
MediaWiki 1.22.5
php 5.5.10
mysql 5.5.34
答案 0 :(得分:0)
解决方案。
将以下内容放入LocalSettings.php,为yourEmailAccount和yourEmailPassword进行必要的替换:
$wgSMTP = array(
'host' => 'ssl://smtp.gmail.com',
'IDHost' => 'gmail.com',
'port' => 465,
'username' => 'yourEmailAccount@gmail.com',
'password' => 'yourEmailPassword',
'auth' => true
);
然后安装发送邮件所需的包。
$ sudo pear install mail
$ sudo pear install net_smtp
在此之后,您可能会收到身份验证失败类型错误。您需要登录您正在使用的Gmail帐户,并验证刚刚登录的人是您。您只需要验证一次。 (gmail会向您发送电子邮件,您只需按照说明操作)
答案 1 :(得分:0)
我刚想通了!
对于遇到同样问题的人,以下是我修复它的方法:
现在返回维基并重新发送确认电子邮件。 我没有尝试过其他缓存选项,但它们也可能有用。
答案 2 :(得分:0)
https://phabricator.wikimedia.org/T32260#1093954
问题是includes/mail/UserMailer.php
设置了sendmail的-f
选项,即使已经在其他地方设置了(例如php.ini
)。
现在就注释掉这一行:
# $extraParams .= ' -f ' . $returnPath;