2015-10-13 5 views
8

नीचे मेरा नोड.जेएस कोड है। में कोड परिणामों का उपयोग करना:नोडेमेलर और "SSL23_GET_SERVER_HELLO: अज्ञात प्रोटोकॉल" त्रुटि

var express = require('express')  
    , fs = require("fs") 
    , app = express() 
    , path = require('path') 
    , request = require('request') 
    , bodyParser = require('body-parser') 
    , http = require('http') 
    , server = http.createServer(app) 
    , io = require('socket.io').listen(server, {log: true, origins: '*:*'}) 
; 

var smtpTransport = require('nodemailer-smtp-transport'); 
var options = { 
    key : fs.readFileSync('server.key'), 
    cert : fs.readFileSync('server.crt') 
}; 
var nodemailer = require('nodemailer'); 
var sendmailTransport = require('nodemailer-sendmail-transport');  

    var emailserver = nodemailer.createTransport(smtpTransport({ 
    service: 'Gmail', 
    port: 25, 
    strictSSL: false, 
    host:'smtp.gmail.com', 
    SSL Protocol: 'off', 
TLS Protocol: ON, 
    auth: { 
     user: '[email protected]', 
     pass: 'mypassword' 
    }, 
    tls: {ciphers: "SSLv3"} 
})); 

कैसे इस त्रुटि को हल करने के लिए:

Error: 0:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:794

यहाँ कोड है?

+0

[एसएसएल 23 \ _GET \ _SERVER \ _HELLO: अज्ञात प्रोटोकॉल \ [msa (587) पोर्ट से कनेक्शन \]] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/22462819/ssl23-get-server-hellounknown-protocol- कनेक्शन-टू-एमएसए -587-पोर्ट) – hobo

+0

संभावित नलिका [नोड-अनुरोध - त्रुटि प्राप्त करना "SSL23 \ _GET \ _SERVER \ _HELLO: अज्ञात प्रोटोकॉल"] (http://stackoverflow.com/questions/15421050/node-request -getting-error-ssl23-get-server-hellounknown-प्रोटोकॉल) –

उत्तर

1

उपयोग इस इस

var nodemailer = require('nodemailer'); 

     var smtpTransport = nodemailer.createTransport("SMTP", { 
     service: "Gmail", 
     connectionTimeout : "7000", 
     greetingTimeout : "7000", 

     auth: { 
     XOAuth2: { 
      user: "email id", 
      clientId: "client id", 
      clientSecret: "secret", 
      refreshToken: "refresh token" 
     } 
     } 
    }); 
+0

पर https सर्वर कैसे बनाएं क्लाइंट आईडी, क्लाइंटसेक्रेट, रीफ्रेश टोकन क्या है? – Naveen

+0

@Naveen जीमेल में एक ऐप बनाएं और ऐप बनाने के बाद आपको ये सब चीज़ें मिलेंगी। –

0

ऐसा लगता है कि इसे इसे थोड़ा अधिक जटिल बनाने की आवश्यकता है। मैं सफलतापूर्वक Nodemailer के संस्करण 0.7.0 के साथ इसका उपयोग कर रहा हूं।

var smtpTransport = nodemailer.createTransport("SMTP", { 
      service: "Gmail", 
      auth: { 
       user: "***@gmail.com", 
       pass: "****" 
      } 
     }); 

     var mailOptions = { 
      from: "****@gmail.com", 
      to: to, 
      subject: 'Subject Line!', 
      text: 'Alternate Text', 
      html: '<label>Hello!</label>' 
     } 

     smtpTransport.sendMail(mailOptions, function(error, response) { 
      if (error) { 
       console.log(error); 
      } else { 
       console.log("Message sent: " + response.message); 
      } 

      // if you don't want to use this transport object anymore, uncomment following line 
      smtpTransport.close(); // shut down the connection pool, no more messages 

      callback(); 
     }); 
+0

इस कोड को काम नहीं करते –

+0

हां यह करता है। मैं इसे एक उत्पादन सर्वर पर उपयोग कर रहा हूँ। इसके साथ आपकी सटीक त्रुटि क्या है और आप किस नोड का उपयोग कर रहे हैं? – tier1

+1

मैं स्थानीयहोस्ट पर http सर्वर का उपयोग कर रहा हूं। दूसरा सवाल यह है कि स्थानीयहोस्ट –

0

आपकी समस्या एसएसएलवी 3 की संभावना है। Most servers have it disabled

TLS Protocol: ON, 
    auth: { 
     user: '[email protected]', 
     pass: 'super-secret-password' 
    }, 
    tls: {ciphers: "SSLv3"} 

आपको टीएलएस 1.0 और ऊपर का उपयोग करना चाहिए।

आपको Server Name Indication or SNI का उपयोग भी करना चाहिए, लेकिन मुझे नहीं पता कि इसका उपयोग करने के लिए Node.js को कैसे बताना है।

6

काम कर रहा है मैं 'nodemailer-smtp-परिवहन' नोड मॉड्यूल के साथ एक तीसरी पार्टी smtp का उपयोग कर इस त्रुटि थी।

मेरे समस्या पता चला कि मैं बंदरगाह 587

उपयोग कर रहा था होना करने के लिए जब मैंने इसे 465 पर स्विच यह सब काम करना शुरू किया।

मेरे विन्यास लगता है:

const smtpConfiguration = { 
    host: '<my smtp host>', 
    port: 465, 
    secure: true, // use TLS 
    auth: { 
     user: '<user account>', 
     pass: '<password>' 
    } 
}; 

और मेरे ईमेल समारोह (टाइपप्रति, Bluebird वादा):

export const SendEmail = (from:string, 
          to:string[], 
          subject:string, 
          text:string, 
          html:string) => { 

    const transportOptions = smtpConfiguration; 

    const transporter = nodemailer.createTransport(smtpTransport(transportOptions)); 

    const emailOptions = { 
     from: from, 
     to: to.join(','), 
     subject: subject, 
     text: text, 
     html: html 
    }; 

    return new Promise((resolve, reject) => { 
     transporter.sendMail(emailOptions, (err, data) => { 
      if (err) { 
       return reject(err); 
      } else { 
       return resolve(data); 
      } 
     }); 
    }); 
}; 
+0

zoho.com.Zoho के लिए काम करता है पोर्ट के लिए सुरक्षा प्रकार के लिए 587 के रूप में उल्लिखित पोर्ट: टीएलएस, तो यह 465 पर काम करते समय बंदरगाह 587 पर क्यों विफल रहता है –

2

मैं का सामना करना पड़ा गए समान समस्या

इस thread

के साथ हल
// For port 465 
var transporter = nodemailer.createTransport({ 
    host: 'smtp.hostname', 
    port: 465, 
    secure: true, 
    auth: { 
     user: 'email', 
     pass: 'password' 
    } 
}); 

// for port 587 or 25 or 2525 etc. 
var transporter = nodemailer.createTransport({ 
    host: 'smtp.hostname', 
    port: 587, 
    secure: false, 
    requireTLS: true, // only use if the server really does support TLS 
    auth: { 
     user: 'email', 
     pass: 'password' 
    } 
}); 
संबंधित मुद्दे