orm - How to use Haraka librairy -
"पोस्ट-टेक्स्ट" आइटमप्रॉप = "टेक्स्ट">
हम हरका हमारे आवेदन मेल सर्वर के रूप में उपयोग करते हैं। हमने एक सरल प्लगइन लिखा है जो आने वाले मेल को लेता है और हमारे आवेदन वेब सर्वर पर पोस्ट करता है।
यहां प्लगइन स्क्रिप्ट है बस इसे किसी फ़ाइल में सहेजें जरूरी नाम बदलकर हरकास कॉन्फ़िग / प्लगइन्स फ़ाइल का पथ जोड़ें।
var fs = require ('fs'), query_string = need ('querystring') , लकड़हारा = ( './ लकड़हारा') की आवश्यकता होती है, DROP_DIRECTORY_PATH = '/ path / Haraka / ड्रॉप /', RETRY_DIRECTORY_PATH = '/ path / Haraka / पुन: प्रयास /', HOST_NAME = 'this_haraka_servers_name'; Export.hook_queue = फ़ंक्शन (अगला, कनेक्शन, पैरामीटर) {'सख्त प्रयोग करें'; फ़ंक्शन हाकाका_लाग (फ़ंक्शन_नाव_इन, सेक्शन_इन, टेक्स्ट_इन) {var log_text = '[एचटीटीपी मेल]'; Log_text + = '[' + function_name_in + ']'; Log_text + = '[' + section_in + ']'; Log_text + = '' + text_in; logger.lognotice (log_text); } // समारोह haraka_log समारोह move_file (filename_in) {fs.rename (DROP_DIRECTORY_PATH + filename_in, RETRY_DIRECTORY_PATH + filename_in, समारोह (गलती) {अगर (गलती) {// फेंक अं; haraka_log ( 'move_file', 'fs.rename .. विफल ', filename_in +' \ n '+ JSON.stringify (err));} else {haraka_log (' move_file ',' fs.rename ... सफलता ', filename_in);}}); } // समारोह move_file समारोह delete_file (filename_in) {fs.unlink (DROP_DIRECTORY_PATH + filename_in, समारोह (गलती) {अगर (गलती) {// फेंक अं; haraka_log ( 'delete_file', 'fs.unlink ... विफल', Filename_in + '\ n' + JSON.stringify (err));} अन्य {haraka_log ('delete_file', 'fs.unlink ... सफलता', filename_in);}}); } // फ़ंक्शन delete_file फ़ंक्शन http_post_file (filename_in) {var http = की आवश्यकता है ('http'), पोस्ट_ोपेशन = {होस्ट: 'my.server.com', पोर्ट: 80, पथ: '/ http_mail /' + HOST_NAME + '? ' + Query_string.stringify ({FileName: filename_in}), विधि: 'POST', हेडर: {'सामग्री-प्रकार': 'टेक्स्ट / सादा'}}, पोस्ट_रेक्वेस्ट, read_stream; Haraka_log ('http_post_file', 'http.request से पहले, filename_in); post_request = http.request (post_options, समारोह (post_response) {haraka_log ( 'http_post_file', 'post_response', 'post_response.statusCode =' + post_response.statusCode + ':' + filename_in); अगर (post_response.statusCode === 200 ) {delete_file (filename_in);} else {move_file (filename_in); // फिर से प्रयास करें स्क्रिप्ट के द्वारा बाद में प्रकाशित किया गया था;} post_response.resume ();}); // post_request = http.request (post_options, समारोह (post_response) {post_request। // post_request.on, ( 'त्रुटि', समारोह (गलती) {; move_file (filename_in); haraka_log ( 'http_post_file post_request.on (\' त्रुटि \ '...)', err.message, filename_in)}) पर ('त्रुटि', फ़ंक्शन (त्रुटि) {read_stream = fs.createReadStream (DROP_DIRECTORY_PATH + filename_in); read_stream.pipe (post_request);} // फ़ंक्शन http_post_file var x_sender = connection.transaction.mail_from, x_receiver_l Ist = connection.transaction.rcpt_to, filename = x_seender + '_' + नया दिनांक ()। ToISOString () + '_' + connection.uuid, writeStream; Filename = filename.replace (/ \ // g, ''); Connection.transaction.add_header ('x- प्रेषक', x_sender.toString ()); X_receiver_list.forEach (फ़ंक्शन (मान) {connection.transaction.add_header ('एक्स-रिसीवर', value.toString ());}); हरका_log ('मुख्य', 'फाइलनाम', फ़ाइल नाम); WriteStream = fs.createWriteStream (DROP_DIRECTORY_PATH + फाइलनाम); //connection.transaction.message_stream.pipe (लिखोस्ट्रीम, {dot_stuffing: true, ending_dot: true}); Connection.transaction.message_stream.pipe (लिस्टस्ट्रीम, {dot_stuffing: true}); Writestream.on ("close", function () {haraka_log ('main write stream.on ("close" ...', 'file saved!', Filename); http_post_file (filename); next (OK);}); //writestream.on(close ", function ()}; // export.hook_queue = फ़ंक्शन (अगला, कनेक्शन, पैरामीटर) {