Code Monkey home page Code Monkey logo

bp-reply-by-email's Introduction

BuddyPress Reply By Email

BuddyPress Reply By Email is a plugin for BuddyPress that allows you to reply to various email notifications from the comfort of your email inbox.

You can reply to the following items from your inbox:

You can also create new group forum topics from your email inbox as well.

This plugin was developed for the CUNY Academic Commons. Licensed under the GPLv2 or later.

Get Help

Check out the wiki for up-to-date information.


Translations

Italian - htrex

Thanks

bp-reply-by-email's People

Contributors

boonebgorges avatar htrex avatar mikethicke avatar modelm avatar r-a-y avatar tux-rampage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bp-reply-by-email's Issues

Google disabled auto-responder account (Google Apps)

This may have been a fluke thing, but my emails started bouncing so I went in and found that the account I'd been using on Google Apps (my domain) had been disabled for unspecified reason. I've submitted a request to re-instate it -- will let you know if that happens.

Custom mailserver options not saved to database

When using a mailserver other than gmail, the server settings for mailserserv, port, and tag are not saved to the database.
The rest of the options are saved just fine.

Using WP 3.4.1, BP 1.6.1.

Thanks

Plans

I apologize if this is not the appropriate forum to ask the if there is any plan to continue development on this plugin or does BP have plans for a reply by email functionality. I realize how busy you guys are and appreciate everything you do.

I did install this on the latest WP/BP versions. It seems to install OK using a gmail IMAP account with no errors. Could not get any emails to post.

Thanks,
Jack

Important delays

We have installed and tested BP Reply by Email on our testing environment with an e-mail provided by our registrar and then with a GMail account. We, of course, have BP 1.7 and WP 3.5.2.

Whenever there's a new activity on the site, the e-mail goes out immediately. However, replies take sometimes up to six hours to appear on the site and in the other group members' inboxes. This delay is annoying and prevents us from putting this feature in production. Do you have an idea what causes the problem? Is it our particular setup, GMail, or the plugin?

Any piece of insight would greatly help us. We would love to use your plugin in production as soon as possible.

Clear object cache

During the inbox loop, the data referenced in the loop can sometimes be older than the current version.

Some quick examples:

  • Changing your email address when RBE is connected
  • Marking / unmarking a user as a spammer when RBE is connected

This could potentially be fixed by doing a direct DB query or by clearing the object cache.

@mentions and forum posts

If you at-mention someone, RBE automatically uses the activity item for the "Reply-To" email header.

However, RBE should check if the at-mention is used in a forum post and if activity replies are allowed on forum posts, if not, the "Reply-To" header should change to reflect the group forum topic somehow.

This may be tricky to fix due to load order.

Mailing list + forum/group integration?

Hi! I just discovered this plugin via commonsinabox and I'm wondering if this would integrate in the mailing list workflow and netiquette and if it's implemented or planned?

What I mean is, would RBE craft emails in a way mailing list users and software expect to? For instance, treat all emails in a thread as an email thread (this would involve using In-Reply-To headers), allow bottom-posting, etc.?

Plain-text line wrap removal

RBE attempts to strip line wraps from plain-text emails before posting to BuddyPress:
https://github.com/r-a-y/bp-reply-by-email/blob/master/includes/bp-rbe-functions.php#L443

The current implementation is a little hacky, but works somewhat decently.

Edit: Filter is removed until further notice! If you feel adventurous, you can add it back using:

 add_filter( 'bp_rbe_parse_email_body', 'bp_rbe_remove_line_wrap_from_plaintext', 10, 2 );

To-do:

  • Need to add an extra space after line-wrap removal - See commit 233debe.
  • Rewrite using regex instead (future release)

German translation

Hi there,

I have translated the frontend parts of the Plugin in German. Its not the best quality (it was a quick process), but maybe this is of help for someone. I considered putting it into the GIT, but for this it is probably a too dirty version...

Can i put it somewhere here as a draft version for other to continue if they like?

Send emails to author when a RBE item fails

Right now, RBE silently logs failed parsed items in the debug log, but it would be nice if RBE could send an email back to the author on failed attempts.

Most of the logic for this is already done. Just need to hook into the action and use wp_mail() to send the response back!

Multiple IMAP connections

I've noticed that sometimes the cron schedules tend to run in shorter periods than what we really want them to run for (See #5).
This leads our inbox check function, bp_rbe_check_imap_inbox(), to fire more than once in a given period.

In bp_rbe_check_imap_inbox(), instead of trying to check if the IMAP connection is still valid via a global variable (which doesn't seem to work properly), use a DB marker and check that instead.

Support email replies that are encoded in base64

RBE doesn’t currently support base64-encoded emails; these emails need to be decoded first before we can start parsing.

Should be simple to support it by checking the email headers for the “Content-Transfer-Encoding: base64″ flag, then running base64_decode().

reply by email error log

Hello, we use RBE in our website and it works great! It's a fantastic work.
Please excuse my English!

The plugin is working in our configuration, but to be perfect, we want to avoid error messages and understand why we have errors in the logs. I tried to identify and fix the problem myself but I can't find a solution.

Looking at the RBE log and our server log, we have a lot of errors:
In the RBE log, we have a lot of messages, for exemple this kind of messages comes all day long in the log :

[27-Jan-2014 09:04:44] --- Closing current connection automatically ---
[27-Jan-2014 09:04:46] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:06:46] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:08:46] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:08:46] --- Uh-oh! Looks like RBE is stuck! - FORCE RBE cleanup ---
[27-Jan-2014 09:09:05] --- Attempting to start new connection... ---
[27-Jan-2014 09:09:05] --- Connection successful! ---
[27-Jan-2014 09:09:05] --- Keep alive for 2 minutes ---
[27-Jan-2014 09:10:05] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:11:06] --- Closing current connection automatically ---
[27-Jan-2014 09:11:15] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:13:58] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:15:58] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:15:58] --- Uh-oh! Looks like RBE is stuck! - FORCE RBE cleanup ---
[27-Jan-2014 09:16:46] --- Attempting to start new connection... ---
[27-Jan-2014 09:16:46] --- Connection successful! ---
[27-Jan-2014 09:16:46] --- Keep alive for 2 minutes ---
[27-Jan-2014 09:18:40] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[27-Jan-2014 09:18:47] --- Closing current connection automatically ---

In parralel, in our apache error log, we have mysql server errors with queries concerning RBE (the RBE log grow continuously):

Mon Jan 27 10:04:44.306891 2014] WordPress database error MySQL server has gone away for query UPDATE wp_options SET option_value = '0' WHERE option_name = 'bp_rbe_is_connected' made by do_action_ref_array, call_user_func_array, bp_rbe_check_imap_inbox, BP_Reply_By_Email_IMAP->run, BP_Reply_By_Email_IMAP->close, bp_update_option, update_blog_option, update_option

[Mon Jan 27 10:04:44.307868 2014] WordPress database error MySQL server has gone away for query UPDATE wp_options SET option_value = 'a:17:{i:1390813436;a:2:{s:26:"postindexer_firstpass_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"5mins";s:4:"args";a:0:{}s:8:"interval";i:300;}}s:27:"postindexer_secondpass_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"5mins";s:4:"args";a:0:{}s:8:"interval";i:300;}}}i:1390813557;a:1:{s:45:"ws_plugin__s2member_auto_eot_system__schedule";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:8:"every10m";s:4:"args";a:0:{}s:8:"interval";i:600;}}}i:1390814094;a:3:{s:24:"postindexer_tagtidy_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}s:29:"postindexer_postmetatidy_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}s:30:"postindexer_agedpoststidy_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}}i:1390814356;a:1:{s:18:"wp_rss_multi_event";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}}i:1390815217;a:1:{s:21:"update_network_counts";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1390816395;a:1:{s:16:"gform_polls_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}}i:1390816643;a:1:{s:24:"bp_links_cron_popularity";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"hourly";s:4:"args";a:0:{}s:8:"interval";i:3600;}}}i:1390819069;a:1:{s:38:"check_plugin_updates-bp-reply-by-email";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1390821572;a:3:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1390821578;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1390832025;a:1:{s:29:"threewp_activity_monitor_cron";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1390845360;a:1:{s:20:"wp_maybe_auto_update";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1390845827;a:1:{s:22:"wpmudev_scheduled_jobs";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1390848843;a:1:{s:30:"wp_scheduled_auto_draft_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1390885200;a:1:{s:16:"ass_digest_event";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}i:1391058000;a:1:{s:23:"ass_digest_event_weekly";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:6:"weekly";s:4:"args";a:0:{}s:8:"interval";i:604800;}}}s:7:"version";i:2;}' WHERE option_name = 'cron' made by do_action_ref_array, call_user_func_array, bp_rbe_check_imap_inbox, BP_Reply_By_Email_IMAP->run, wp_clear_scheduled_hook, wp_unschedule_event, _set_cron_array, update_option

[Mon Jan 27 10:04:44.308317 2014] WordPress database error MySQL server has gone away for query INSERT INTO wp_options (option_name, option_value, autoload) VALUES ('bp_rbe_spawn_cron', '1', 'yes') ON DUPLICATE KEY UPDATE option_name = VALUES(option_name), option_value = VALUES(option_value), autoload = VALUES(autoload) made by do_action_ref_array, call_user_func_array, bp_rbe_check_imap_inbox, BP_Reply_By_Email_IMAP->run, bp_update_option, update_blog_option, update_option, add_option

Sorry for the long code exemple.

Thanks for your help,

Alex

Parse HTML body as fallback

When replying by email, RBE looks at emails that contains a plain-text version.

This can cause issues with email clients that set the email format to HTML-only. In these situations, since the plugin can't find the plain-text version, it cannot see the email body and will not post the reply.

The plugin should attempt to parse the HTML email body as a fallback if a plain-text version cannot be found.

BP-RBE & wpMandrill don't like each other

I have wpMandrill installed (http://wordpress.org/extend/plugins/wpmandrill/) and unfortunately when I installed BP-RBE the feature of RBE did not work.

When I deactivated wpMandrill the line --- Reply ABOVE THIS LINE to add a comment --- appeared...

I'd love to use both features.

What can be done?

On another note, how can I increase the speed at which the Reply By Email gets sent? It takes likes 10 minutes each time (even if I'm refreshing my site).

Where is the cron job limit?

Thank you,
Giovanni

Fatal error; can't activate

When I try to activate the plugin, I get this error:

Fatal error: Call-time pass-by-reference has been removed in /wordpress/wp-content/plugins/r-a-y-bp-reply-by-email-7301e4c/includes/bp-rbe-functions.php on line 778

I'm running a brand-new install of WP 3.4.2 and Commons In A Box 1.0-beta1. Let me know what other info might be useful.

In the "From" field, use the member's name

When an email is sent by RBE, the "From" field by default uses the site's name, perhaps manipulate this to use the member who is sending the email.

Basecamp does this.

Inbound email support

Currently, RBE utilizes PHP's IMAP module to connect to an IMAP-enabled inbox (like GMail).

This requires elaborate cron-checking and that the server and IMAP connection are reliable.

I want to get out of these limitations and just handle email posting.

Inbound email is a way around this. Basically, what this means is email is sent to an external provider's domain. Meaning if an email is sent to this provider, they will do all the email parsing and post back a response of the email data to us. Then, I can solely worry about parsing that data and posting it.

(FYI, this is what Github uses for their reply-by-email functionality.)

Some inbound email services include:

The negatives are:

  • We're essentially moving from one 3rd-party service (GMail) to another.
  • If the install is really active, webhooks would mean a ton of incoming POST responses being sent from the inbound email provider.

The positives are:

  • Shared hosts will probably be able to use this.

This is just an initial sketch from brain to post. If I were to start building this out, I would try out Mandrill support first.

Strip the last line created by email clients before posting

When people reply by email via their preferred email client, a "USER wrote:" line (or variations of this string that include the timestamp or different verbiage) will be prepended to the "--- Reply ABOVE THIS LINE to add a comment ---" line.

Most people will not remove this line when replying. Hence this "USER wrote:" string will also be posted.

Perhaps do a regex match for this line and strip it before posting. We'll also have to look out for localized email clients as well.

Note: Basecamp, which this plugin is modelled after, does not do this.


Perhaps we can just search the last line and last character to see if a colon exists. If it does, strip the line?

Grey Screen o' Doom - Something Ain't Right

Upon loading up and activating the BP RbE plugin, users are presented with a full screen of grey. The administration side of things works just fine. It appears that the page is clipping off the BODY portion of the page. Any thoughts on why this would occur?

I'm running only the following in determining any conflicts:

BuddyPress Reply By Email 1.0-RC2
BuddyPress 1.8.1
bbPress 2.5
Twenty Twelve theme

And here is the page view results:

<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" lang="en-US">
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" lang="en-US">
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
<html lang="en-US">
<!--<![endif]-->
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>Flint Hahn | Art and Portfolio</title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="http://fh.io/xmlrpc.php" />
<!--[if lt IE 9]>
<script src="http://fh.io/wp-content/themes/twentytwelve/js/html5.js" type="text/javascript"></script>
<![endif]-->
<link rel="alternate" type="application/rss+xml" title="Flint Hahn &raquo; Feed" href="http://fh.io/feed/" />
<link rel="alternate" type="application/rss+xml" title="Flint Hahn &raquo; Comments Feed" href="http://fh.io/comments/feed/" />
<link rel='stylesheet' id='admin-bar-css'  href='http://fh.io/wp-includes/css/admin-bar.min.css?ver=3.7.1' type='text/css' media='all' />
<link rel='stylesheet' id='bp-admin-bar-css'  href='http://fh.io/wp-content/plugins/buddypress/bp-core/css/admin-bar.min.css?ver=1.8.1' type='text/css' media='all' />
<link rel='stylesheet' id='bbp-default-css'  href='http://fh.io/wp-content/plugins/bbpress/templates/default/css/bbpress.css?ver=2.5-5199' type='text/css' media='screen' />
<link rel='stylesheet' id='bp-legacy-css-css'  href='http://fh.io/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/buddypress.css?ver=1.8.1' type='text/css' media='screen' />
<link rel='stylesheet' id='twentytwelve-fonts-css'  href='http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700&#038;subset=latin,latin-ext' type='text/css' media='all' />
<link rel='stylesheet' id='twentytwelve-style-css'  href='http://fh.io/wp-content/themes/twentytwelve/style.css?ver=3.7.1' type='text/css' media='all' />
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentytwelve-ie-css'  href='http://fh.io/wp-content/themes/twentytwelve/css/ie.css?ver=20121010' type='text/css' media='all' />
<![endif]-->
<script type='text/javascript' src='http://fh.io/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script>
<script type='text/javascript' src='http://fh.io/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var BP_DTheme = {"my_favs":"My Favorites","accepted":"Accepted","rejected":"Rejected","show_all_comments":"Show all comments for this thread","show_x_comments":"Show all %d comments","show_all":"Show all","comments":"comments","close":"Close","view":"View","mark_as_fav":"Favorite","remove_fav":"Remove Favorite","unsaved_changes":"Your profile has unsaved changes. If you leave the page, the changes will be lost."};
/* ]]> */
</script>
<script type='text/javascript' src='http://fh.io/wp-content/plugins/buddypress/bp-templates/bp-legacy/js/buddypress.js?ver=1.8.1'></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://fh.io/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://fh.io/wp-includes/wlwmanifest.xml" /> 
<meta name="generator" content="WordPress 3.7.1" />

    <script type="text/javascript">var ajaxurl = 'http://fh.io/wp-admin/admin-ajax.php';</script>

<style type="text/css" media="print">#wpadminbar { display:none; }</style>
<style type="text/css" media="screen">
    html { margin-top: 28px !important; }
    * html body { margin-top: 28px !important; }
</style>

Nested multipart emails fail body parsing

Some multipart emails contain an additional level before the plain text version of the email can be found. If a multipart email matches this use-case, then RBE cannot properly parse the body of the email and will fail to post the reply.

Should use a recursive method to parse multipart emails.

USER ID rejection error

I've just been testing out the plugin over the last couple of days and it's truly remarkable. I imagine our particular use of it is fairly standard - allowing a group to have an archive of mailing list-style conversations while allowing the option to interact via a forum simultaneously.

The problem I'm running into is one of consistency. While testing, I'll be using two accounts with their own e-mail addresses. Occasionally, one (or both) of the e-mail addresses will be (seemingly randomly) rejected with a "no USER ID can be found error". This often happens immediately after the user had been successfully parsed.

For instance:

[07-Mar-2013 15:14:13] - Checking inbox -
[07-Mar-2013 15:14:14] Message #1 of 1: email headers successfully parsed
[07-Mar-2013 15:14:14] Message #1: address tag successfully parsed
[07-Mar-2013 15:14:14] User email address is [email protected]
[07-Mar-2013 15:14:14] Message #1: user id successfully parsed - user id is - 8
[07-Mar-2013 15:14:14] Message #1: params = Array
(
[t] => 10
[g] => 4
)

[07-Mar-2013 15:14:16] Message #1: body contents - If you need any help setting it up, just let us know. We have lots of material from our fundraiser last year.
[07-Mar-2013 15:14:16] Message #1: this is a forum reply
[07-Mar-2013 15:14:17] Message #1: forum reply successfully posted!
[07-Mar-2013 15:17:15] --- Closing current connection automatically ---
[07-Mar-2013 15:22:02] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[07-Mar-2013 15:22:09] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[07-Mar-2013 15:25:23] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[07-Mar-2013 15:25:23] --- Uh-oh! Looks like RBE is stuck! - FORCE RBE cleanup ---
[07-Mar-2013 15:31:15] --- Attempting to start new connection... ---
[07-Mar-2013 15:31:24] --- Connection successful! ---
[07-Mar-2013 15:31:24] --- Keep alive for 3 minutes ---
[07-Mar-2013 15:31:25] - Checking inbox -
[07-Mar-2013 15:31:25] Message #1 of 1: email headers successfully parsed
[07-Mar-2013 15:31:25] Message #1: address tag successfully parsed
[07-Mar-2013 15:31:25] User email address is [email protected]
[07-Mar-2013 15:31:25] Message #1: user id successfully parsed - user id is - 2
[07-Mar-2013 15:31:25] Message #1: params = Array
(
[t] => 10
[g] => 4
)

[07-Mar-2013 15:31:27] Message #1: body contents - Thanks for the offer! We'll go over things with the staff and then get
back to you.
[07-Mar-2013 15:31:27] Message #1: this is a forum reply
[07-Mar-2013 15:31:27] Message #1: forum reply successfully posted!
[07-Mar-2013 15:32:28] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[07-Mar-2013 15:33:58] - Checking inbox -
[07-Mar-2013 15:33:59] Message #1 of 1: email headers successfully parsed
[07-Mar-2013 15:33:59] Message #1: address tag successfully parsed
[07-Mar-2013 15:33:59] User email address is [email protected]
[07-Mar-2013 15:33:59] Message #1: error - no user ID could be found

It's a bit confusing that an e-mail address would be accepted once, but rejected the second time. Perhaps I'm doing something incorrectly?

you do not have the ability to post replies

Hi,
After sending few messages successfully I get the following error message:
Your reply to the forum topic: "XXXX"
Could not be posted because it appears that you do not have the ability to post replies.
We apologize for any inconvenience this may have caused.

Any help would be highly appreciated.
Thanks,
Eyal

Not working in PHP 5.4: Call time pass by reference has been removed

Hi,

first of all thanks for your plugin, the idea is really great. However I can't active the plugin in Wordpress, probably due to an PHP 5.4 issue. The error message is the following

Fatal error: Call-time pass-by-reference has been removed; If you would like to pass argument by reference, modify the declaration of apply_filters(). in /www/htdocs/w0103f42/wp-content/plugins/r-a-y-bp-reply-by-email-7301e4c/includes/bp-rbe-functions.php on line 778

Can you help me find a way to get the plugin working?

Add option to disable new topic via email

Hi r-a-y,

I had problem with "creating new group forum topics from your email inbox".

What have I done: Created new group as hidden, changed in its settings to public, join group with another user account and tried to submit new topic by mail. I got this message in errorlog:
[07-Nov-2013 13:58:39] Message #1: this is a bbPress group forum new topic
[07-Nov-2013 13:58:39] Message #1: error - bbPress new topic failed. forum is hidden. user doesn't have access.

I want to remove this feature from plugin because it's not reliable so I had to comment add_action with new_topic_via_email_block function.

  1. Could you add option in administration for select features of plugin which will be allowed?
  2. Take a look why the function doesn't allow me post new topic however I'm member of the group. (This is something what I don't need but you may like to check it out)

Thanks,
Richard

RBE sometimes hangs during the inbox loop

Received reports that RBE occasionally gets stuck as always connected.

This occurs some time during the inbox check and as a result, RBE fails to stop the connection and the DB markers are not cleared. During each successive WP cron check, RBE will think it's still connected to the inbox, when in actual fact, it isn't. This leads to many potential emails being stuck in perpetuity.

IMAP: set_time_limit() doesn't work for certain server setups

RBE uses set_time_limit( 0 ) to let our script run until the "Keep Alive" duration (as set in RBE) runs its course.

However, on most shared hosts and on certain server setups (like LiteSpeed, nginx, IIS, etc.), set_time_limit() has no effect and RBE will hang after the server's connection timeout value, which is usually a lower value than RBE's "Keep Alive" duration.

Shared hosts will disable set_time_limit() to save resources across the pool, which is understandable and isn't really possible to solve unless the "Keep Alive" value in the admin area is set to a lower value.

However, for servers not using Apache and are on a dedicated server, set_time_limit() is sometimes not applicable.

In the case of LiteSpeed, they have additional server variables that can take precedence over PHP's:
http://www.litespeedtech.com/support/wiki/doku.php?id=litespeed_wiki:php_run_without_timeout

Will need to add a server detection script (perhaps with $_SERVER['SERVER_SOFTWARE']) and add a notice so people are aware that their server connection timeout might need to be manually altered so RBE can run for the time it needs.

Apostrophe kills rest of reply

Hi Ray, I stumbled over something funny. I send this reply:

“Youth worker: It’s a number of the boys who came here and they’d obviously been drinking earlier, not here. Suddenly a fight flared up over a game of pool between two boys, well 18 year olds. And then one of them, one of them whose brother’s here joined in, and they were just getting desperate. And they were just flinging stuff all around the building, and they were being held down by staff.”

But only this arrived:

“Youth worker: It”

The apostroph killed the rest. It's reproducible.

Customization Request

Ray,

I am interested in having you customize or add some features to your Reply by Email Plugin.

Specifically I would like to come up with an easier way for users to add new posts to a forum using email. I understand why you use address tags and have specific emails addresses for each person, however my user base is not that quite sophisticated.

Is there some way we can simplify that process? Ideally I would like to have a specific email address without all the extra keys. I would avoid spam by only giving the email address to specific people.

Please let me know if you are interested in taking in a project like this.

Thanks
Joe

Errors sent to server

I'm building a CBox site

Just after enabling this plugin, using gmail, and setting pingdom to check the site at 1minute intervals, lots of errors were reported to my server, and the host contacted me ...

copy of their message and logs as below:
hi
you are getting loads of errors on this account
the sites main error log
[24-Dec-2012 02:02:16] PHP Warning: include_once(wp-load.php) [function.include-once]: failed to open stream: No such file or directory in /home/natural/public_html/wp-content/plugins/bebop/secondary_import.php on line 15
[24-Dec-2012 02:02:16] PHP Warning: include_once() [function.include]: Failed opening 'wp-load.php' for inclusion (include_path='/home/natural') in /home/natural/public_html/wp-content/plugins/bebop/secondary_import.php on line 15

also bp-rbe-debug.log in wp-content folder
[24-Dec-2012 00:49:20] --- Attempting to start new connection... ---
[24-Dec-2012 00:49:21] --- Connection successful! ---
[24-Dec-2012 00:49:21] --- Keep alive for 15 minutes ---
[24-Dec-2012 00:49:21] - Checking inbox -
[24-Dec-2012 00:49:21] Message #1: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:22] Message #2 of 55: email headers successfully parsed
[24-Dec-2012 00:49:22] Message #2: error - no address tag could be found
[24-Dec-2012 00:49:22] Message #3 of 55: email headers successfully parsed
[24-Dec-2012 00:49:22] Message #3: error - no address tag could be found
[24-Dec-2012 00:49:22] Message #4 of 55: email headers successfully parsed
[24-Dec-2012 00:49:22] Message #4: error - no address tag could be found
[24-Dec-2012 00:49:23] Message #5 of 55: email headers successfully parsed
[24-Dec-2012 00:49:23] Message #5: error - no address tag could be found
[24-Dec-2012 00:49:23] Message #6 of 55: email headers successfully parsed
[24-Dec-2012 00:49:23] Message #6: error - no address tag could be found
[24-Dec-2012 00:49:23] Message #7 of 55: email headers successfully parsed
[24-Dec-2012 00:49:23] Message #7: error - no address tag could be found
[24-Dec-2012 00:49:23] Message #8: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:24] Message #9: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:24] Message #10: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:24] Message #11 of 55: email headers successfully parsed
[24-Dec-2012 00:49:24] Message #11: error - no address tag could be found
[24-Dec-2012 00:49:25] Message #12 of 55: email headers successfully parsed
[24-Dec-2012 00:49:25] Message #12: error - no address tag could be found
[24-Dec-2012 00:49:25] Message #13: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:25] Message #14: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:26] Message #15: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:26] Message #16 of 55: email headers successfully parsed
[24-Dec-2012 00:49:26] Message #16: error - no address tag could be found
[24-Dec-2012 00:49:26] Message #17: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:26] Message #18: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:27] Message #19 of 55: email headers successfully parsed
[24-Dec-2012 00:49:27] Message #19: error - no address tag could be found
[24-Dec-2012 00:49:27] Message #20: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:27] Message #21: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:28] Message #22: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:28] Message #23 of 55: email headers successfully parsed
[24-Dec-2012 00:49:28] Message #23: error - no address tag could be found
[24-Dec-2012 00:49:29] Message #24 of 55: email headers successfully parsed
[24-Dec-2012 00:49:29] Message #24: error - no address tag could be found
[24-Dec-2012 00:49:29] Message #25 of 55: email headers successfully parsed
[24-Dec-2012 00:49:29] Message #25: error - no address tag could be found
[24-Dec-2012 00:49:29] Message #26: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:29] Message #27: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:30] Message #28 of 55: email headers successfully parsed
[24-Dec-2012 00:49:30] Message #28: error - no address tag could be found
[24-Dec-2012 00:49:30] Message #29 of 55: email headers successfully parsed
[24-Dec-2012 00:49:30] Message #29: error - no address tag could be found
[24-Dec-2012 00:49:30] Message #30: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:30] Message #31: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:31] Message #32: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:31] Message #33: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:31] Message #34 of 55: email headers successfully parsed
[24-Dec-2012 00:49:31] Message #34: error - no address tag could be found
[24-Dec-2012 00:49:32] Message #35: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:32] Message #36: error - this is some type of bulk / junk / mailing list email, so stop now!
[24-Dec-2012 00:49:32] Message #37: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:33] Message #38: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:33] Message #39: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:33] Message #40: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:33] Message #41 of 55: email headers successfully parsed
[24-Dec-2012 00:49:33] Message #41: error - no address tag could be found
[24-Dec-2012 00:49:34] Message #42: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:34] Message #43 of 55: email headers successfully parsed
[24-Dec-2012 00:49:34] Message #43: error - no address tag could be found
[24-Dec-2012 00:49:34] Message #44: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:35] Message #45: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:35] Message #46: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:35] Message #47 of 55: email headers successfully parsed
[24-Dec-2012 00:49:35] Message #47: error - no address tag could be found
[24-Dec-2012 00:49:36] Message #48 of 55: email headers successfully parsed
[24-Dec-2012 00:49:36] Message #48: error - no address tag could be found
[24-Dec-2012 00:49:36] Message #49 of 55: email headers successfully parsed
[24-Dec-2012 00:49:36] Message #49: error - no address tag could be found
[24-Dec-2012 00:49:36] Message #50 of 55: email headers successfully parsed
[24-Dec-2012 00:49:36] Message #50: error - no address tag could be found
[24-Dec-2012 00:49:36] Message #51 of 55: email headers successfully parsed
[24-Dec-2012 00:49:36] Message #51: error - no address tag could be found
[24-Dec-2012 00:49:37] Message #52 of 55: email headers successfully parsed
[24-Dec-2012 00:49:37] Message #52: error - no address tag could be found
[24-Dec-2012 00:49:37] Message #53: error - this is auto-reply from MS Exchange, so stop now!
[24-Dec-2012 00:49:37] Message #54 of 55: email headers successfully parsed
[24-Dec-2012 00:49:37] Message #54: error - no address tag could be found
[24-Dec-2012 00:49:37] Message #55 of 55: email headers successfully parsed
[24-Dec-2012 00:49:37] Message #55: error - no address tag could be found
[24-Dec-2012 00:49:49] - Checking inbox -
[24-Dec-2012 00:49:49] Message #1 of 1: email headers successfully parsed
[24-Dec-2012 00:49:49] Message #1: error - no address tag could be found
[24-Dec-2012 00:55:16] - Checking inbox -
[24-Dec-2012 00:55:16] Message #1 of 1: email headers successfully parsed
[24-Dec-2012 00:55:16] Message #1: error - no address tag could be found
[24-Dec-2012 00:59:16] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 01:04:21] --- Closing current connection automatically ---
[24-Dec-2012 01:05:12] --- Attempting to start new connection... ---
[24-Dec-2012 01:05:12] --- Connection successful! ---
[24-Dec-2012 01:05:12] --- Keep alive for 15 minutes ---
[24-Dec-2012 01:05:43] - Checking inbox -
[24-Dec-2012 01:05:43] Message #1 of 1: email headers successfully parsed
[24-Dec-2012 01:05:43] Message #1: error - no address tag could be found
[24-Dec-2012 01:06:16] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 01:20:15] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 01:20:17] --- Closing current connection automatically ---
[24-Dec-2012 01:21:16] --- Attempting to start new connection... ---
[24-Dec-2012 01:21:16] --- Connection successful! ---
[24-Dec-2012 01:21:16] --- Keep alive for 15 minutes ---
[24-Dec-2012 01:23:16] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 01:36:24] --- Closing current connection automatically ---
[24-Dec-2012 01:36:50] --- Attempting to start new connection... ---
[24-Dec-2012 01:36:51] --- Connection successful! ---
[24-Dec-2012 01:36:51] --- Keep alive for 15 minutes ---
[24-Dec-2012 01:38:16] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 01:51:37] - Checking inbox -
[24-Dec-2012 01:51:37] Message #1 of 1: email headers successfully parsed
[24-Dec-2012 01:51:37] Message #1: error - no address tag could be found
[24-Dec-2012 01:51:57] --- Closing current connection automatically ---
[24-Dec-2012 01:52:16] --- Attempting to start new connection... ---
[24-Dec-2012 01:52:16] --- Connection successful! ---
[24-Dec-2012 01:52:16] --- Keep alive for 15 minutes ---
[24-Dec-2012 01:53:16] --- Cronjob wants to connect - however according to our DB indicator, we already have an active IMAP connection! ---
[24-Dec-2012 02:01:39] - Checking inbox -
[24-Dec-2012 02:01:39] Message #1 of 2: email headers successfully parsed
[24-Dec-2012 02:01:39] Message #1: error - no address tag could be found
[24-Dec-2012 02:01:39] Message #2 of 2: email headers successfully parsed
[24-Dec-2012 02:01:39] Message #2: error - no address tag could be found

the wp cron is also taking a very long time to run
Time: Mon Dec 24 01:23:13 2012 +0000
PID: 4557
Account: natural
Uptime: 118 seconds

Executable:

/usr/bin/php

Command Line (often faked in exploits):

/usr/bin/php /home/natural/public_html/wp-cron.php

Network connections by the process (if any):

tcp: 83.170.114.14:55452 -> 173.194.67.109:993

Files open by the process (if any):

/tmp/session_mm_cgi-fcgi1620.sem (deleted)
/tmp/sess_45a1992e85a7fe92a8a5d9040ab0ad30
/home/natural/public_html/wp-content/plugins/bebop/extensions

i have had to rename bebop to bebop –problem in plugins so the error log does not fill up the server to you can sort this out
please turn off if you are unable to fix

RBE activity listener is too greedy

Right now, any activity that is email-sendable is manipulated by RBE.

We should only allow activity updates and comments to be manipulated, but add a hook so 3rd-party plugins can enable this feature.

Next scheduled cron runs irregularly

I've noticed that the next scheduled cron can run irregularly than the keep alive value located in the settings area.

eg. My keep alive value is 5 minutes. I visit my site at 9:00am and trigger WP cron to run our task. The next scheduled event is correctly set for 9:05am. However, if no one visits our site afterwards until 9:07am. The cron job will reactivate at 9:07am and run for 5 minutes (end at 9:12am), but the next scheduled event in WP is set for 9:10am (which is 5 minutes after 9:05am).

This can cause irreguarity between inbox checks. It also doesn't help that sleep( 10 ) is used during the inbox check and that a leeway gap is added in bp_rbe_custom_cron_schedule().

Will need to think of a better way to reschedule cron.

In the meantime, if you run into this problem, deactivate the plugin and reactivate.

Gmail connection problem

Hi

the plugin doesn't connect with my new, IMAP enabled, email account. It returns this message: Error: Unable to connect to inbox - Can't connect to gmail-imap.l.google.com,993: Connection timed out.

Do you know what this may be?

Thanks

Adam

BuddyPress Reply By Email cannot initialize. Please navigate to "BuddyPress > Reply By Email" to fill in the required fields and address the webhost warnings.

BuddyPress V 1.6.1
Select BuddyPress Reply By Email V 1.0-beta1

Getting the above message when activating and saving settings, pretty much all the time in the admin pages. Did some examining and the error is coming from the bp_rbe_is_required_completed function in bp-rbe-functions.php. It ha passed the imap test and is checking for required fields in the settings. The settings array contains:

[email] => [email protected]
[username] => replybuddypress
[password] => ******************
[key] => 51e70af084c7b
[keepalive] => 15

but it is looking for 'servername', 'port', 'tag', 'username', 'password', 'key', 'keepalive', 'connect'. Missing are 'servername', 'port', 'tag', and 'connect'. They are not being saved. I tried updating the record in the wp_options table and it still failed, the required settings were removed before checking them. Another point is that the password is being set to something I didn't enter.

IMAP: Add more connection settings options on the admin settings page

RBE incorrectly assumes that the email host supports SSL and certificate checking. (Those not using GMail.)

Although it is possible to use the 'bp_rbe_mailbox' filter to filter the IMAP connection settings, should probably add some options on the admin settings page.

A couple of options that have been requested include:

  • Disable SSL
  • Disable certificate checking

Perhaps add some more.

Unable to setup with Hostgator

I have been trying to setup this module but I'm receiving and error message:

Error: Unable to connect to inbox - Certificate failure for ***.hostgator.com: unable to get local issuer certificate: /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=PositiveSSL CA 2

I am using Hostgator as my shared web host and they have verified that the PHP IMAP module is installed and present. Hostgator support suggested I contact you as they believe that there is a "bug in the script that prevents it from verifying the certificate presented by the IMAP server. Additionally, the script does not properly detect if SSL is being used or not, so even setting the IMAP port to 143 and using localhost as the server does not work because the script assumes SSL is in use and fails to establish a connection."

Thank you

Check email password on settings save

At the moment, if you save an incorrect password in the settings, you can exhaust your login attempts without any warning. It would be nice if the password was checked right away when the settings were saved, to avoid this problem. And/or, when a connection attempt fails because of an incorrect password, further attempts should not be made until the password is changed.

Remove BuddyPress dependency

RBE recently added basic bbPress 2 support (#24), however bbPress users cannot use this without installing BuddyPress since this plugin was originally intended for BP.

Eventually, I'd like to remove BuddyPress dependency and open this up to WP. This is very low priority, but I'm adding this issue now.

Use custom marker to denote end of email

Jetpack recently added this feature to their Post By Email module; RBE should implement something like this as well, but be a bit more liberal.

From Jetpack's documentation:

If your email system attaches a signature that does not match any of these patterns then you can manually tell Post by Email to stop including text by adding the special [end] shortcode on its own line with a blank line above it.

Post via Email - Mandrill

Hello! I replied to another post, but thought perhaps I needed to start a new topic -

I am trying to set up what is an essence a ListServ within a WordPress membership site using S2Member. I was using BBPress, as I have a way to an existing GoogleGroup into BBPress. I am using a reply-by-email feature via Mandrill that seems to be working, however it does not really handle posting new topics by email -- which is a major necessity. I looks like your plug-in might do the trick using BuddyPress, but I am not sure that all of my users are using a compatible email. I also want to find a way around each user having to find, copy, and paste their own unique post-via-email address. Are these things that you are contemplating or have already been working on? If so, when do you anticipate releasing an update? Thanks so much for all you are doing.

Is there a way to strip the reply citation?

Hi Ray,

I am just trying out RBM on http://www.youthpolicy.org/community/ with the Gmail setup you described. Works like a charm! My latest reply-comment was “This is fucking fantastic!” and I mean it.

One tiny question: is is possible to strip the reply citation stuff from the response automagically? Apple Mail adds this, for example, by default when replying to an email.

» On Nov 26, 2012, at 10:54 PM, Youthpolicy Community [email protected] wrote:

I am certain most people won't delete this systematically, so a lot of replies by email will have this addendum otherwise.

I would be happy to do some research on the various default citation styles in use by Outlook, Thunderbird, Squirrelmail, Roundcube etc. I guess it might even be possible to use a snippet for recognition…

A couple of reply styles are:

On Mon, November 26, 2012 10:54 pm, Youthpolicy Community wrote:
At 10.01 am Wednesday, Youthpolicy Community wrote:
On Nov 26, 2012, at 10:54 PM, Youthpolicy Community wrote:

bbPress 2 support

bbPress 2.2 was just released that has increased BuddyPress support, so RBE functionality would be ideal for RBE v1.1.


What works currently in 1.0-RC1

  • Posting new forum topics via email for non-BuddyPress forums
  • Posting new forum topics via email for BuddyPress groups (requires BP Group Email Subscription plugin)
  • Posting forum replies via email for BuddyPress groups (requires BP Group Email Subscription plugin)

What doesn't work
* Posting forum replies via email for non-BuddyPress forums - this basically works, but is disabled at the moment. See below for more details. - see commit b34d1be

Remaining issues:

* "Post link" in regular bbPress email notifications is inaccurate when replying by email - this is a bbPress bug and is holding up resolving this ticket. Replying to a bbPress forum thread from a BP group works though because of GES. - see commit b34d1be
* Support multisite if RBE is network-activated (See #94)

  • Add RBE support for forum subscriptions

Basic code to force Notification to get filtered by RBE?

Hello,

First off, this isn't an " issue", but I don't know where else to turn for help.

I am using a modified version of bbpress-notify-nospam to send a message to all members of the corresponding BP group whenever a new Topic is posted to the forum. This is a small, private, professional group, and therefore the volume of emails is not an issue.

ANY hints, tips, or advice on integrating the plugin with RBE would be greatly appreciated. I have been hacking at it for days, but obviously I am missing something. I believe it's as simple as hooking into the "notify_new_topic" function of the Notify plugin, but I just can't seem to put it together.

I'm not looking for someone to do the work for me, but just a few tips as to the first baby-steps would be overwhelmingly appreciated.

Thanks for the great plugin, it works very well!

-Phil

Request Timeout

Configured RBE email server settings with a gmail account. After clicking Save button getting Request Timeout error from browser. IMAP is definitely turned on in gmail.

Also. Configured email settings to my localhost which I know has imap usinge port 26 and 993. After clicking Save, getting standard error from RBE "BuddyPress Reply By Email cannot initialize...:"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.