用电子邮件发表WordPress日志
只要稍微更改WordPress设置,就可以通过电子邮件发表WordPress日志。要实现这个功能,我们需要: …
只要稍微更改WordPress设置,就可以通过电子邮件发表WordPress日志。要实现这个功能,我们需要:
1. 注册一个e-mail账号,专门用来发表WordPress博客日志
2. 更改WordPress设置以便访问上述e-mail账号
3. 对WordPress进行设置,使之能够通过e-mail发表内容
通过E-mail发表日志
第一步——重新注册一个e-mail账号
1. 以博客管理员身份登录WordPress后台。
2. 进入“设置”菜单下的“撰写”选项
3. 阅读页面下方“通过电子邮件发表”选项下的说明。紧接着说明后WordPress给出了三个我们可以用在新e-mail账号登录名中的随机字符串。
4. 我们可以利用WordPress建议用在登录名中的随机字符串(也可以自己设置其它名称),在虚拟主机的邮件服务器或独立邮件服务器上创建新e-mail账号的用户名(即“登录名”)。邮件服务器帮我们接收并存储邮件,以供日后检索。请不要在Yahoo、Hotmail等公共邮箱服务器上注册用于发表WordPress日志的e-mail账号。
注意:强烈建议用户使用相对隐秘的电子邮件地址——也就是说,这个电子邮件地址需要是常人难以猜到、只有用户本人知道的地址。任何投递到这个电子邮件地址的信件将会被发表在博客上,所以我们必须要保证这个地址绝对的私密。此外,有些电子邮件服务器不允许邮件账号完全由数字组成或以数字开头。因此注册前请先了解虚拟服务器的相关规定。
第二步——更改WordPress设置以访问上述e-mail账号
1. 新邮件账号注册完毕后,返回WordPress后台的“撰写”选项,填写虚拟服主机商提供给用户的邮件服务器地址和端口号。(如果不确定具体的邮件服务器地址和端口号,可以在虚拟主机商网站的FAQ版块或用户手册版块中查找。端口号通常为110。)
2. 然后输入新邮件的登录名和密码。
注意:请在登录名输入框中填写完整的邮件地址(如user@example.com)。
3. 选择默认邮件发表分类目录。
4. 点击“保存更改”。
注意:如果在注册邮件账号前已经通过“管理界面>设置>撰写>通过电子邮件发表”设置了电子邮件地址,那么注册时的登录名和密码需要和之前的设置保持一致。
第三步——发表邮件日志
现在我们已经注册了新的邮箱账号,也在后台进行了设置,让WordPress博客能够接收新邮箱账号中的邮件。但我们仍然需要再次设置WordPress,让它能够自动发表接收到的邮件。我们可以进行以下任一操作:
手动浏览器激活方式
将邮件发送到新邮箱账号后,立即访问http://example.com/installdir/wp-mail.php。(注意:每次发送日志邮件后都要访问该URL。)
自动浏览器激活方式
如果不想手动激活浏览器,可以在博客页脚位置加上以下iframe代码,自动激活浏览器使之帮助发表日志:
<iframe src=”http://yourblogdomain/wordpressinstalldir/wp-mail.php” name=”mailiframe” width=”0″
height=”0″ frameborder=”0″ scrolling=”no” title=””></iframe>
编辑以上代码,使链接地址指向我们的wp-mail.php文件的位置。然后将代码添加到当前主题目录下的footer.php文件中(不要将代码包含在HTML段落中)。
可能还要刷新博客才能查看到新日志。对新用户来说,自动激活浏览器好处更多。
如果正在使用或希望使用WordPress的Postie Plugin插件,请将下列iframe代码添加到博客页脚中,代码将调用检查邮件的命令:
<iframe src=”http://yourblogdomain/wordpressinstalldir/wpcontent/plugins/postie/get_mail.php?Submit=Run+Postie” name=”mailiframe” width=”0″ height=”0″ frameborder=”0″ scrolling=”no” title=””> </iframe>
之后只要有人访问我们的博客,新邮件就会自动发表到博客上,因此我们发送日志邮件后就可以高枕无忧了。不过可能要刷新博客才能查看到发表的新日志。
WP-Cron插件激活方式
下载、安装并激活WP-Cron插件。该插件无需用户进行后台操作,每十五分钟自动更新网站。
定时任务激活方式
这种方式利用wget、curl或是GET等命令行HTTP代理来设定一个UNIX定时任务,使博客定时查看http://example.com/installdir/wp-mail.php页面。需要执行的命令行如下:
wget -N http://example.com/installdir/wp-mail.php
如果使用的不是wget程序,请将代码行中的wget程序和wget参数替换成相应程序和参数。
注意:另一种方法是,在定时任务中运行 “php /full/path/to/wp-mail.php”命令。运行php脚本时只需要使用php而不再需要其它程序。(用户被授权使用php的机率也高于wget。)
关于定时任务的更多信息请看:
- Intro To Cron Jobs
- Automating tasks with cron services at USAIL
- 虚拟主机商网站的FAQ版块或用户手册
Windows用户请注意:也有适合Windows用户的类似定时程序。例如,VisualCron,Cron for Windows以及pycron。具体情况可以参考这些程序的使用说明。
Procmail激活方式
如果我们的服务器配备了procmail,那么只要在博客专用邮箱账号的主目录下使用.procmailrc就可以激活WordPress的发表动作了:
Shell=/bin/sh MAILDIR=$HOME/.maildir/ DEFAULT=$MAILDIR :0 { :0Wc ./ :0 | wget -N http://example.com/installdir/wp-mail.php }
当然我们可以执行更具体的动作,例如获取特定的对象表达式。更多信息请点击procmail。
.qmail激活方式
如果服务器是用qmail来处理e-mai的l,那么发送日志邮件后,可以用qmail来调用wp-mail.php。但首先要创建一个小型shell脚本以调用wp-mail.php。我们可以先调用wp-mail文件:
#!/bin/sh /bin/sh -c "sleep 5; /path/to/php /path/to/your/blog/wp-mail.php > /dev/null" &
sleep命令触发一个为时5秒的停顿,供qmail在调用wp-mail.php文件前完成对邮件信息的处理。注意:行末尾的&符号是必须的,不得省略。以上脚本应该放置在根目录下,执行位元也需要被设定(chmod 700)。为了消除系统中的bug,我们可以将/dev/null替换成一个文件名,以此保存wp-mail.php生成的结果。
接下来只要创建/修改相应的.qmail文件以调用shell脚本就大功告成了。将以下命令行输入邮箱名的.qmail文件:
|/path/to/your/root/directory/wp-mail
.qmail文件的具体用法参见互联网服务提供商的说明手册。不同互联网服务提供商对邮箱名称的规定也有所不同。
邮件格式
通过邮件发表日志时,WordPress会将邮件的主题行作为日志标题,邮件正文作为日志正文,并删除其中常用的HTML标签。WordPress将日志发表在我们之前选择的默认邮件发表分类下,并默认网站管理员作为该日志的作者。
通过邮件发表日志时,不支持附件的发表。所有通过邮件发表的附件都会以原始形式显示在日志正文中。
测试
要测试目前自己是否已经能通过邮箱发送WordPress日志,只需要发送一封邮件到“新账号@邮箱域名” (如果使用.qmail程序,则可以将邮件发送到“用户名@邮箱域名”)。之后进行以下操作:
- 如果没有设置自动系统,在浏览器中访问http://example.com/installdir/wp-mail.php。如果脚本发现有新邮件,会通知我们并显示出邮件日志的详细情况。之后我们可以返回博客查看日志是否发表成功。
- 如果页脚使用的是iframe代码,需要刷新浏览器以查看日志是否发表成功
- 如果用的是WP-Cron插件,则需要等待十五至二十分钟
- 如果是运行定时任务,那么要等到定时任务下一次执行时才能查看日志发表状况(也可以暂时缩短定时任务的时间间隔)。如果定时执行 -f /var/log/cron,该任务运行结束后会生成log记录。生成log记录后,可以在浏览器中查看邮件日志的发表状况。
- 我们的邮件发表状态可能被会标识为“审核中”而不是“已发表”。如果日志状态是“审核中”,那么该日志可以出现在控制板中,但不会显示在博客上。默认情况下,wp-mail.php会检查发送日志的邮件地址与博客用户设置的邮件地址是否一致。如果一致,日志状态显示为“已发表”,否则显示为“审核中”。
常见问题解答
下面列出了用邮件发表日志时遇到的一些常见问题,同时给出了解决方法。
错误信息:
Ooops POP3: premature NOOP OK, NOT an RFC 1939 Compliant server
如果遇到这类错误信息,请打开wp-includes/class-pop3.php文件,将下面的代码:
if($this->RFC1939) {
替换成:
if(!$this->RFC1939) {
注意其中感叹号的使用。
错误信息:There does not seem to be any new mail(没有新邮件)
关于这个错误信息,以上描述并不准确——测试只是为了查看是否能检索到新邮件。
我们可以打开:
wp-mail.php
在其中查找:
$count = $pop3->login(get_settings('mailserver_login'), get_settings('mailserver_pass'));
将其后代码行替换为以下代码:
if (0 == $count) : echo "There does not seem to be any new mail. <br/> "; echo "count = $count<br/> "; echo "$pop3->ERROR "; exit; endif;
之后我们会看见更为详细的信息。
用户试图使用未加密的密码时,邮件服务器可能会拒绝连接——如 POP3。如果web服务器和邮件服务器在同一台电脑上,我们可以指定localhost或127.0.0.1作为邮件服务器。由于这时无需连接到互联网,即使不加密也可以顺利进行。
插件与功能扩展
下面介绍一些插件和修改方法(hack),帮助WordPress扩展用邮件发送日志的功能。其中有些方法可能涉及到核心文件的修改,因此操作时一定要谨慎,保持备份资料。
加强功能hack
原始wp-mail.php文件的替代文件:
- Postie 可将日志发表到不同分类下,可自动删除邮件署名,支持POP3/IMAL (+SSL) ,等等
修改e-mail格式
对wp-mail.php进行优化处理,将e-mail转换成成日志的元数据:
发送人的邮件地址
优化后的wp-mail.php能够在用户数据库中查找邮件发送人的邮件地址。如果邮件地址和任何一个用户的邮件地址相匹配,wp-mail.php会以该用户的名义发表邮件日志。如果邮件地址不和用户邮件地址匹配,wp-mail.php会放弃对邮件日志的操作,不将日志发表到博客上。(这样既能保护博客安全又能防止垃圾邮件。)在From字段中设置该优化功能。
主题字段
如果邮件的主题行中出现[n]字样,该邮件会被发表在类别号为n的分类下。否则邮件将被发表在我们之前选择的默认邮件发表分类下。示例:若某邮件主题行是“ [1]这是一个测试!”,则将邮件作为日志发表时,日志名为“这是一个测试!”,日志所属分类为“常用”。
通过Yahoo! 邮箱、Gmail和Hotmail发表日志
默认情况下大多数基于网络的邮箱客户端都以HTML形式发送邮件,而WordPress“通过邮箱发表日志”这一功能并不支持HTML发送。
因此用这种邮箱发表日志前,一定要使用“普通文本”形式。
在Yahoo!邮箱中,“转换为普通文本形式”图标在“订阅”字样的右边。而Gmail中,“转换为普通文本形式”图标在文本格式工具栏的最右端。Hotmail的“转换为普通文本形式”图标则在邮件操作栏(位于邮件正文上方)的拼写检查图标附近。
官方支持
功能申请: Post via e-mail’s Category: allow specification from inside the mail too
分类:中文手册
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!