WordPress 与 Qzone 和 Live Space 同步

背景及插件介绍

很多人倾心于 WordPress 博客平台的灵活性和可定制性,跑到 WordPress 中来写文章。但这样的话,文章一般只在由评论、Trackback/Pingback 等构成的博客圈内有影响,我们在 QQ、MSN 等即时通讯工具上的朋友就很难看到文章了(大多数人还不会用 RSS)。再者,QQ 和 MSN 对于自家的空间有良好的支持,如果有文章更新的话会有小星星或者小黄花的提示。这样我们如果将文章同步到 Qzone 及 Live Space 上,则可以达到一个推广的效果,可以利用之。

李光明同学写了一个 Post2qzone 插件,用来将 WordPress 中发布的文章同步到 Qzone 中。插件的原理比较容量理解。Qzone 和 Live Space 都支持邮件发布的功能。也就是说,可以通过发邮件到指定的邮箱来更新你的 Qzone 和 Live Space。但由于 Qzone 的邮件发布只接受从 QQ Mail 寄来的邮件,这就要求必须使用 QQ 邮箱的 SMTP 服务向 Qzone 的指定邮箱发信以同步更新 Qzone。 Live Space 的要求则宽松一些,可以自行设置发信的邮箱地址。

安装和设置

在安装前,首要先确认你的空间支持 socket 功能。没有此功能将无法使用 SMTP 服务来发送邮件,也就无法实现发布文章时同步更新。在 PHP 中调用 phpinfo() 函数,输出信息中有一个“Sockets support”,支持的话显示为 Enabled。

接下来是开通 QQ 空间、QQ 邮箱。登录到 QQ 邮箱,进入“设置”->“账户”,勾选“开启POP3/SMTP服务”,然后保存更改。这样就打开了 QQ 邮箱的 SMTP 功能。

然后下载 post2qzone.php,上传到 WordPress 插件目录,然后从插件面板启用此插件。在“设置”中有一个“Post2qzone”的页面。在此页面中设置你的 QQ 号、邮箱密码、邮件标题和邮件正文模板。

设置完成以后邮件同步发布应该就可以实现了。记得在 WordPress 中发布文章的时候,要在页面的“Post to qzone”选项中中勾选“Confirm publish”才会同步。临时不需要同步功能,可以去掉这个选项。

优化与提高

说了半天都是在说 Qzone 的事情,如何同时同步到 Live Space 呢?首先要在 Live Space 中启动邮件发布功能。登录到 Live Space,选择“选项”->“邮件发布”,在第一步中填入qq邮箱的地址;第二步中自己编造一个 secret word ,第四步中选择“立即发布”。然后直接用文本编辑器打开 post2qzone.php 插件文件,在 function Halo() 下面添加一行代码,就可以同时更新到 Live Space 上。

	function Halo($subject,$body){
		// BLOGNAME 替换为你的 Live Space 名称。比如网址 blogtest.spaces.live.com ,那么 BLOGNAME 就是 blogtest
		// SECRET 替换为 Live Space 设置中自己设定的单词,不要公开
		$this->AddAddress("BLOGNAME.SECRET@spaces.live.com","BLOGNAME.SECRET@spaces.live.com");
		$this->AddAddress("{$this->qq}@qzone.qq.com", "{$this->qq}@qzone.qq.com");
		$this->Subject = $subject;
		$this->Body	= $body;
		return $this->Send();
	}

添加好此代码以后,就可以同时通过邮件来更新 Qzone 和 LiveSpace 了。

由于此插件默认输出的是全文,为了增加自己博客的访问量,可以在插件中只输出摘要,同时给出原文链接。示意图如图所示。(此文为博客迁移后导入,图片已薨) 

怎么改我就不详细说了,无非是借用了 Advanced Excerpt 插件的处理思路来输出指定长度的摘要。我的 post2qzone 插件文章内容模板是这么写的,如下列出作为参考,摘要的效果可以在我的Live Space 上看到。

〖原文发表于<a href=”http://blog.xiaoding.org” target=”_blank”>我的部落格</a> http://blog.xiaoding.org 〗<br /><br />
{post_content}<br /><a href=”{post_link}”>阅读原文»</a> 

这儿是修改好的 post2qzone 插件的下载。(附件已遗失,不提供下载,可依文章思路自行修改)使用到了 mb_substr() 函数,不支持此函数的同学请自行依靠 Google 解决……

“WordPress 与 Qzone 和 Live Space 同步”的76个回复

  1. Warning: Attempt to assign property of non-object in /home/webchsco/public_html/wp-content/plugins/post2qzone.0.2.1.php on line 198

    Warning: Cannot modify header information – headers already sent by (output started at /home/webchsco/public_html/wp-content/plugins/post2qzone.0.2.1.php:198) in /home/webchsco/public_html/wp-includes/pluggable.php on line 850

    我碰到这样的问题,怎么解决呢?

  2. Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.qq.com:25 (Connection refused) in /home/webchsco/public_html/wp-includes/class-smtp.php on line 122

  3. @huahua
    前两个错误你把源代码的第 198 行改成

    $psw = $crypter->decrypt($psw);

    即可

    后面这个

    fsockopen()

    的错误是你的虚拟主机的配置问题,请询问服务商关于 socket 支持的问题。

  4. fsockopen()问题解决不了了。我的主机是hostmonster的,支持socket,我估计问题在邮局上。我的邮局用的是google的企业邮箱,没有用hostmonster的MX记录。

  5. 查了后得知:php的fsockopen函数用来创建一个socket连接。但因为HostMonster在共享IP的主机里使用了防火墙(方便跟踪用户的流量),所以,当fsockopen用来连接有别于80端口的URL地址时,是不奏效的。如果您需要连接其他端口,需要向HostMonster另外订购独立IP的费用。
    看来我是用不成了,呵呵。

  6. 我按您说的 去查看了 只有在Qzone上发布出来的那篇在发件箱里有 其他的都没有了。

    会不会是没有安装您那个摘要插件的原因?

  7. @苍月
    这个跟摘要插件无关,我已经把那段代码移植到这个插件中了。而且这个在我的系统上一直是正常的。 你在发布的时候要勾选那个“Publish to qzone”的选项,同时最好重新输入一下密码。

    @shinemoon
    这个插件用到了 wordpress 后台的一个 publish hook,所以没法用在离线工具比如 Live Writer 上面(不知道Live Writer 有插件没? )

  8. @苍月
    这个。。 没有错误信息输出恐怕也不好判断啊。。 我只是把这个插件输出内容由全文改为摘要了。 发布不了的问题你请教一下原作者看看有什么说法没有。 我还不太精通这个……

  9. @xiaoding
    过来报喜,终于搞定Qzone sync。关键一点就是修改模板的时候,必须清空全部内容,再重新添加才行。
    PS:live space的同步没有搞定,索性用了更专业的Live Sync来做同步。呵呵

    多谢xiaoding了。 😛

  10. Pingback: 李光明
  11. 看样子你成功啦~恭喜哈
    为什么我不行呢? 小沈阳:“为什么呐..”

    我看QQ邮箱的发件记录有些通过了~但是显示在qzone中的很少
    有些拦截??!!!
    为什么呐 ~哈~
    拜 赐教

  12. @YoYo
    嗯 已经用了一段时间了。
    不清楚你用的是哪个版本,你到作者那儿看看最新版试试。 QQ 邮件有发件记录的话就是成功了,能不能发表出来是Qzone自己的问题 这我就不清楚了 🙁

  13. 发布文章时出现如下错误:

    Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.qq.com:25 (Connection refused) in /home/sharze/public_html/wordpress/wp-includes/class-smtp.php on line 122

    Warning: Cannot modify header information – headers already sent by (output started at /home/sharze/public_html/wordpress/wp-includes/class-smtp.php:122) in /home/sharze/public_html/wordpress/wp-includes/pluggable.php on line 865

    不知道该怎么解决?

  14. @谙恋法兰西
    上面的 connection refused 那个信息还在么? 如果在说明你的主机拒绝了此次连接,因为 25 端口是 SMTP 服务的,有可能被用来发送垃圾邮件,你看是不是因为这个限制导致的

  15. post-to-qzone已经支持离线客户端同步到QZONE和Live Space 了。博主如果有空更新一下,我们这些不懂代码菜鸟就幸福了 🙂

  16. 请问已用phpinfo探测到socket是enabled,但为什么发布新文章时,在页面下方的post to qzone还是写着:

    Sorry,Your webserver do not support socket!

    谢谢!不胜感激!

  17. 新文件有个小小的错误:
    // 添加你自己的 Live Space 邮件发布地址
    // $this->AddAddress
    最后这个“//”多了,把后面的也给注释了,删了就好,嘻嘻
    在网络上发现wp-qzone.0.4.php,看似可以后台设置live的,但是确实全文输出,而不是摘要输出,请教如何修改,菜鸟一个不会修改 ❗

  18. @doggou
    感谢你的细心。 其实那一行我是作为一个示例写出来作为参考的,实际的邮件地址需要自己填写,所以注释掉只供参考格式。新版本中已经可以自己填写其它的邮箱了,这个地方也就不需要了。
    带摘要输出的插件已经发送到你的邮箱,请查收。

  19. @xiaoding
    还是谢谢你。

    另外,我想知道你回复别人的评论或留言,会给对方发送邮件通知,用的是什么插件。
    我就是收到你回复的邮件通知所以才过来的。

  20. blogger跟live space差不多,既支持邮件发布也支持xmlrpc发布,所以你可以用这个插件通过发送邮件到blogger的发布邮箱。 也可以用其它的wordpress上的 xmlrpc 插件通过xmlrpc调用发送文章到blogger
    当然最重要的一点是你的wordpress主机应该在国外,这样才可以访问blogger站点,否则会被墙。

  21. 我的dreamhost空间用这个插件存在问题,就是无法连接smpt.qq.com的25号端口,需要使用安全连接,如果有使用这个插件无法无法同步的可以参考我写的这篇文章:http://www.lifecrunch.biz/archives/90

  22. @GoTop
    该提供的都已经提供了。不懂代码的人写出来也看不会,懂代码的人自然会下载了看。
    回复和头像都是主题提供的功能。 头像需要自己去 Gravatar.com 注册,以后就能自动显示了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注