@sampo2910 of None is the only option that works, then that's probably the only one your email provider supports. It should be fine as long as you don't need your emails to be perfectly secure.
Change email subject
-
I know that one can mess around with the email templates, but I see no way to change the subject of the email.
Like:[sitename #topic_id] topic_name
I need to include the topic id in the subject because I need to parse the subject ( postfix forward pointing to a Yii console controller, if you must know) - do I need to mess around in the source code?
Edit:
I am implementing reply by email, btw.
And since I am a PHP developer, I am using the api and dirty tricks -
I also do know that I can grab the topic id from the URL - that thought came to me just now
- but it is easier to just regex the subject.
-
Emailer fires:
Plugins.fireHook('filter:email.modify', data, next);
Listen to that hook, modify
subject
indata
, voila. -
/* puts nodejs on list of stuff to learn .. */
Ok, I will perhaps try and look into that
-
I just did a stupidly simple (stupid?) plugin but it does not seem to do much
(function(module) { "use strict"; var autoreplyit = {}; autoreplyit.filter = function(data) { data.subject = data.subject + ' #' + data.pid; }; module.exports = autoreplyit; }(module));
{ "id": "nodebb-plugin-autoreplyit", "name": "NodeBB Autoreply email subject changer", "description": "NodeBB Plugin that changes the email subject field to include the topic id.", "url": "https://github.com/jacmoe/nodebb-plugin-autoreplyit", "library": "./library.js", "hooks": [ { "hook": "filter:email.modify", "method": "filter" } ] }
-
Check to see that
autoreplyit.filter
is executed (maybe aconsole.log
?)Your filter will need a callback:
autoreplyit.filter = function(data, callback) { data.subject = data.subject + ' #' + data.pid; callback(null, data); };
-
It works
(function(module) { "use strict"; var autoreplyit = {}; autoreplyit.filter = function(data, callback) { var re = /http:\/\/nodebbjacmoe-jacmoe\.rhcloud\.com\/topic\/(\d+)/; var str = data.plaintext; var found = str.match(re); data.subject = data.subject + ' #' + found[1]; callback(null, data); }; module.exports = autoreplyit; }(module));
Totally hard-coded, of course
Edit:
I am fully aware that it is only a matter of time before a kind soul points out to me that I can easily get the site url from a dark corner of the API - but, hey: it works.
Now the receiving PHP script can grab the topic id and make sure that it is sent to the right place. -
Thanks a lot @julian
-
@Jacob-Moen Hey, if it works, it works!
Now you've written a NodeBB plugin
-
I threw in an
if(found)
just in case - but I am always amazed by how little code is required.
That seem to happen a lot with Node.js and a well written software entitled NodeBB