Junjun&3588 个人博客

-个人博客-
热爱技术,喜欢科技. Hello Coder!!
  1. 首页
  2. 编程语言
  3. php
  4. 正文

修正后的 post2qzone

2011-06-14 794点热度 0人点赞 0条评论

使用 Gmail的方式失败。

选用了 SSl连接的方式,虽然有点慢,但是已经可以用了,也算不错的啦。

增加部分 post2qzone.php

$mail->SMTPSecure = "ssl"; $mail->Port = 587;

全代码 < ?php / Plugin Name: post2Qzone Plugin URI: http://liguoliang.com/2010/wordpress-post-to-qzone/ Description: post2Qzone是一款将新Post同步发表到Qzone的小插件. 可将新文章同步发布到Qzone的制定目录(无对应目录会自动创建), 支持使用Windows Live Writer发布, 并可同时抄送到指定邮箱. Version: 1.2.0 Author: Liguoliang.com Author URI: http://liguoliang.com/ / //TODO : 修改sendmail方法, 以便在post中get opt, 直接传递到sendmail中. 同时增加BCC opt.

require_once 'inc-post2email-utils.php';

$debug = false; // 仅在需要Debug时设置为True static $POST_LINK_RP = '%%LINK%%';

//Options $OPTPREFIX = 'post2QZone'; $OPT_QQ_NO = $OPT_PREFIX.'qq'; $OPT_QQ_PW = $OPT_PREFIX.'pw'; $OPT_QQ_BCC = $OPT_PREFIX.'bcc';

$OPT_POST_CATS_RULES = $OPT_PREFIX.'catsRules';

$OPT_TITLE_PREFIX = $OPT_PREFIX.'title_prefix'; $OPT_CONTENT_PLAIN = $OPT_PREFIX.'plain'; $OPT_CONTENT_LENGTH = $OPT_PREFIX.'length'; $OPT_CONTENT_PREFIX = $OPT_PREFIX.'content_prefix'; $OPT_CONTENT_SUFFIX = $OPT_PREFIX.'content_suffix';

register_activation_hook(FILE,'post2QZone_activate'); register_deactivation_hook(FILE,'post2QZone_deactivate');

function post2QZone_activate() { //Options $OPTPREFIX = 'post2QZone'; $OPT_QQ_NO = $OPT_PREFIX.'qq'; $OPT_QQ_PW = $OPT_PREFIX.'pw'; $OPT_QQ_BCC = $OPT_PREFIX.'bcc';

$OPT_POST_CATS_RULES = $OPT_PREFIX.'catsRules';

$OPT_TITLE_PREFIX = $OPT_PREFIX.'title_prefix'; $OPT_CONTENT_PLAIN = $OPT_PREFIX.'plain'; $OPT_CONTENT_LENGTH = $OPT_PREFIX.'length'; $OPT_CONTENT_PREFIX = $OPT_PREFIX.'content_prefix'; $OPT_CONTENT_SUFFIX = $OPT_PREFIX.'content_suffix';

add_option($OPT_QQ_NO, '', ''); add_option($OPT_QQ_PW, '', ''); add_option($OPT_QQ_BCC, '', '');

add_option($OPT_POST_CATS_RULES, '', '');

add_option($OPT_TITLE_PREFIX, 'blog', ''); add_option($OPT_CONTENT_PLAIN, '0', ''); add_option($OPT_CONTENT_LENGTH, '0', ''); add_option($OPT_CONTENT_PREFIX, '本文自动转发自我的博客: %%LINK%%', ''); add_option($OPT_CONTENT_SUFFIX, '

查看原文: %%LINK%%', '');

}

/* Deactivate 时响应. / function post2QZone_deactivate() { global $OPT_QQ_NO, $OPT_QQ_PW, $OPT_QQ_BCC, $OPT_POST_CATS_RULES, $OPT_TITLE_PREFIX, $OPT_CONTENT_PLAIN, $OPT_CONTENT_LENGTH, $OPT_CONTENT_PREFIX, $OPT_CONTENT_SUFFIX;

// delete_option($OPT_QQ_NO); // delete_option($OPT_QQ_PW); // // delete_option($OPT_TITLE_PREFIX); // delete_option($OPT_CONTENT_PREFIX); // delete_option($OPT_CONTENT_SUFFIX); }

// 注册init响应 add_action('init', 'Post2Qzone_init');

function Post2Qzone_init() { add_action('admin_menu', 'Post2Qzone_config'); }

// 增加配置菜单 function Post2Qzone_config() { if (function_exists('add_options_page')) { add_options_page('Post2QZone Options', 'Post2Qzone', 'manage_options', 'post2Qzone-config', 'post2Qzone_options'); // add_submenu_page('plugins.php', 'Post2QZone Options', '配置Post2QZone', 'manage_options', 'wp2qzone-config', 'wp2qzone_config_page'); } }

function post2Qzone_options() { global $OPT_QQ_NO, $OPT_QQ_PW, $OPT_QQ_BCC, $OPT_POST_CATS_RULES, $OPT_TITLE_PREFIX, $OPT_CONTENT_PLAIN, $OPT_CONTENT_LENGTH, $OPT_CONTENT_PREFIX, $OPT_CONTENT_SUFFIX;

if (!current_user_can('manage_options')) { wp_die( __('You do not have sufficient permissions to access this page. 您无权限进入此配置页面.') ); }

if (!empty($_POST['submit'])) { update_option($OPT_QQ_NO, $_POST[$OPT_QQ_NO]); update_option($OPT_QQ_PW, $_POST[$OPT_QQ_PW]); update_option($OPT_QQ_BCC, $_POST[$OPT_QQ_BCC]);

update_option($OPT_POST_CATS_RULES, $_POST[$OPT_POST_CATS_RULES]);

update_option($OPT_TITLE_PREFIX, $_POST[$OPT_TITLE_PREFIX]); update_option($OPT_CONTENT_PLAIN, trim($_POST[$OPT_CONTENT_PLAIN])); update_option($OPT_CONTENT_LENGTH, trim($_POST[$OPT_CONTENT_LENGTH])); update_option($OPT_CONTENT_PREFIX, str_replace('\', '', $_POST[$OPT_CONTENT_PREFIX])); update_option($OPT_CONTENT_SUFFIX, str_replace('\', '', $_POST[$OPT_CONTENT_SUFFIX]));

$save_msg = "选项已保存成功!"; } ?>

Post2Qzone设置

1.登陆设置

QQ号码:

邮箱密码: QQ邮箱密码(默认为QQ密码)

请开通QQ邮箱的SMTP服务, 具体可登陆邮箱后进入 设置/账户 配置 页面开启POP3/SMTP服务;

2.发布范围限制

参与同步目录: 设置参与同步的目录, 留空表示全部同步, 否则请填入目录ID, 多个ID已逗号隔开, 如: "1,2,3";

3.发布内容设置

剔除格式: 0表示发布为HTML格式, 1表示发布为纯文本格式(将剔除HTML标签)

发布字数: 0表示发布全文, 输入具体字数表示无摘要时截断字数(建议不小于200).

目标目录: 8个英文或4个汉字以内

内容前缀: 内容前缀, 支持HTML代码, 使用%%LINK%%插入博文地址

内容后缀: 内容后缀, 支持HTML代码, 使用%%LINK%%插入博文地址

4.其他设置

抄送地址: 抄送邮件地址, 请填写Email(选填)


最近工作比较忙, 没时间优化后台配置界面, 请各位多多包涵, 如有不清楚的地方或建议, 请:

访问插件主页查找更多信息或直接联系: guoliang.me@gmail.com,

如果大家觉得插件用着还好, 请推荐给身边的其他博友, 谢谢!

1.1.0 更新说明: 如发现同步出现问题, 请确定参与目录填写是否正确.

    • 1. 增加了同步长度 - 如果需要输出全文, 请将长度设置为0.

 

  • 2. 增加了参与同步的目录, 请填入参与同步的目录ID, 多个ID请以半角逗号分隔. 如果要全站文章参与同步, 请留空.

 

 

< ?php }

// 注册日志发布后的响应函数 add_action('publish_post', 'postToQzone', 0);

/**

  • 新POST发布后响应函数
  • @param $post_ID PostID
  • @return unknown_type */ function postToQzone($post_ID){ global $debug, $POST_LINK_RP, $OPT_PREFIX, $OPT_QQ_NO, $OPT_QQ_PW, $OPT_QQ_BCC, $OPT_POST_CATS_RULES, $OPT_TITLE_PREFIX, $OPT_CONTENT_PLAIN, $OPT_CONTENT_LENGTH, $OPT_CONTENT_PREFIX, $OPT_CONTENT_SUFFIX;

if (!current_user_can('publish_posts')) { wp_die( __('You do not have sufficient permissions to access this function. 您无权限使用本方法.') ); }

$qzone = get_post_meta($post_ID, 'postToQzone', true); // 获得Metadata if($qzone) { return; }

// get options $qq = get_option($OPT_QQ_NO); $qqpw = get_option($OPT_QQ_PW); $bcc = get_option($OPT_QQ_BCC);

$catRules = get_option($OPT_POST_CATS_RULES);

$title_prefix = get_option($OPT_TITLE_PREFIX); $isPlainText = get_option($OPT_CONTENT_PLAIN); $length = get_option($OPT_CONTENT_LENGTH); $prefix = get_option($OPT_CONTENT_PREFIX); $suffix = get_option($OPT_CONTENT_SUFFIX);

$post_pending_send = get_post($post_ID); // 获得Post

// 检查当前Post是否符合发布目录规则要求. if(Post2EmailUtils::isPostInCatList($post_pending_send, $catRules)) { $post_title = $post_pending_send->post_title; // Post标题 $post_content = Post2EmailUtils::getContents($post_pending_send, $length, $isPlainText); //$post_pending_send->post_content; // Post内容 $post_link = get_permalink($post_ID); // Post地址

// 处理标题及内容 $post_link = ''.get_permalink($post_ID).''; // 获得博客原文链接 $prefix = str_ireplace($POST_LINK_RP, $post_link, $prefix); // 替换通配符 $suffix = str_ireplace($POST_LINK_RP, $post_link, $suffix);

if(!empty($post_title)) { $post_title = '['.$title_prefix.']'.$post_title; } $post_content = $prefix.' '.$post_content.' '.$suffix;

sendPostByPhpMailer($qq, $qqpw, $bcc, $post_title, $post_content); // 发送邮件 TODO: 尝试在这里遍历所有邮件目标, 进行发送. add_post_meta($post_ID, 'postToQzone', 'true', true); // 加入MetaData }else { if($debug) { echo " 该文章不在发布范围之内, 跳过处理."; exit(); } } }

/**

  • 使用PHPMailer发送邮件 - SMTP方式
  • PHPMailer使用指南: http://deepakssn.blogspot.com/2006/06/gmail-php-send-email-using-php-with.html
  • @param $subject 邮件标题. 将作为日志标题.
  • @param $body 邮件内容. 将作为日志内容
  • @return null */ function sendPostByPhpMailer($qq, $qqpw, $bcc, $title, $body){ global $debug; if ( !class_exists('PHPMailer') ) { require_once ABSPATH . WPINC . '/class-phpmailer.php'; require_once ABSPATH . WPINC . '/class-smtp.php'; } $mail = new PHPMailer(); $mail->SMTPDebug = $debug;

$mail->IsSMTP(); $mail->Mailer = "smtp"; $mail->CharSet = 'utf-8'; $mail->Encoding = 'base64'; $mail->IsHTML(true); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = 587; $mail->Host = "smtp.qq.com"; $mail->Username = $qq."@qq.com"; $mail->Password = $qqpw; $mail->From = $qq."@qq.com"; $mail->FromName = $qq;

// $mail->AddAddress($qq."@qzone.qq.com"); // if(!empty($bcc)) { // $mail->AddAddress($bcc); // }

$recipients = array(); $recipients[] = $qq."@qzone.qq.com"; $recipients[] = $bcc;

foreach ($recipients as $recipient) { if(!empty($recipient)) { $mail->ClearAllRecipients(); // remove previously set addresses. $mail->ClearReplyTos(); $mail->AddAddress($recipient); $mail->Subject = $title; $mail->Body = $body;

if($debug) { echo "标题: [".$title."] "; echo "内容: [".$body; echo " ]------------------- 使用账号: "; echo $qq."抄送到:".$bcc." "; echo " 发送结果: ".$mail->Send(); echo "

Debug结束, 请检查内容是否发布到QQ或指定抄送邮箱"; exit(); }else { $mail->Send(); } } } }

?>

 

标签: 暂无
最后更新:2011-06-14

admin3588

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

COPYRIGHT © 2022 Junjun&3588 个人博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang