用电子邮件发表WordPress日志

  |   0 评论   |   1,898 浏览

    只要稍微更改WordPress设置,就可以通过电子邮件发表WordPress日志。要实现这个功能,我们需要:

    1. 注册一个e-mail账号,专门用来发表WordPress博客日志

    2. 更改WordPress设置以便访问上述e-mail账号

    3. 对WordPress进行设置,使之能够通过e-mail发表内容

    通过E-mail发表日志
    第一步——重新注册一个e-mail账号
    1. 以博客管理员身份登录WordPress后台。

    1. 进入“设置”菜单下的“撰写”选项

    2. 阅读页面下方“通过电子邮件发表”选项下的说明。紧接着说明后WordPress给出了三个我们可以用在新e-mail账号登录名中的随机字符串。

    3. 我们可以利用WordPress建议用在登录名中的随机字符串(也可以自己设置其它名称),在虚拟主机的邮件服务器或独立邮件服务器上创建新e-mail账号的用户名(即“登录名”)。邮件服务器帮我们接收并存储邮件,以供日后检索。请不要在Yahoo、Hotmail等公共邮箱服务器上注册用于发表WordPress日志的e-mail账号。

    注意:强烈建议用户使用相对隐秘的电子邮件地址——也就是说,这个电子邮件地址需要是常人难以猜到、只有用户本人知道的地址。任何投递到这个电子邮件地址的信件将会被发表在博客上,所以我们必须要保证这个地址绝对的私密。此外,有些电子邮件服务器不允许邮件账号完全由数字组成或以数字开头。因此注册前请先了解虚拟服务器的相关规定。

    第二步——更改WordPress设置以访问上述e-mail账号
    1. 新邮件账号注册完毕后,返回WordPress后台的“撰写”选项,填写虚拟服主机商提供给用户的邮件服务器地址和端口号。(如果不确定具体的邮件服务器地址和端口号,可以在虚拟主机商网站的FAQ版块或用户手册版块中查找。端口号通常为110。)

    1. 然后输入新邮件的登录名和密码。

    注意:请在登录名输入框中填写完整的邮件地址(如user@example.com)。

    1. 选择默认邮件发表分类目录。

    2. 点击“保存更改”。

    注意:如果在注册邮件账号前已经通过“管理界面>设置>撰写>通过电子邮件发表”设置了电子邮件地址,那么注册时的登录名和密码需要和之前的设置保持一致。

    第三步——发表邮件日志
    现在我们已经注册了新的邮箱账号,也在后台进行了设置,让WordPress博客能够接收新邮箱账号中的邮件。但我们仍然需要再次设置WordPress,让它能够自动发表接收到的邮件。我们可以进行以下任一操作:

    手动浏览器激活方式

    将邮件发送到新邮箱账号后,立即访问http://example.com/installdir/wp-mail.php。(注意:每次发送日志邮件后都要访问该URL。)

    自动浏览器激活方式

    如果不想手动激活浏览器,可以在博客页脚位置加上以下iframe代码,自动激活浏览器使之帮助发表日志:

    编辑以上代码,使链接地址指向我们的wp-mail.php文件的位置。然后将代码添加到当前主题目录下的footer.php文件中(不要将代码包含在HTML段落中)。

    可能还要刷新博客才能查看到新日志。对新用户来说,自动激活浏览器好处更多。

    如果正在使用或希望使用WordPress的Postie Plugin插件,请将下列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(getsettings(‘mailserverlogin’), getsettings(‘mailserverpass’));将其后代码行替换为以下代码:

    if (0 == $count) :
    echo “There does not seem to be any new mail.
    \n”;
    echo “count = $count
    \n”;
    echo “$pop3->ERROR \n”;
    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的“转换为普通文本形式”图标则在邮件操作栏(位于邮件正文上方)的拼写检查图标附近。

    评论

    发表评论

    validate