2015-10-13 18 views
8

Dưới đây là mã Node.js của tôi. Sử dụng kết quả mã trong:Nodemailer và "SSL23_GET_SERVER_HELLO: giao thức không xác định" lỗi

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

Đây là mã:

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"} 
})); 

Làm thế nào để giải quyết lỗi này?

+0

Có thể trùng lặp của [SSL23 \ _GET \ _SERVER \ _HELLO: giao thức không xác định \ [kết nối tới cổng msa (587) \]] (http://stackoverflow.com/questions/22462819/ssl23-get-server-hellounknown-protocol- connection-to-msa-587-port) – hobo

+0

Có thể trùng lặp của [nút-yêu cầu - Lỗi "SSL23 \ _GET \ _SERVER \ _HELLO: giao thức không xác định"] (http://stackoverflow.com/questions/15421050/node-request -getting-error-ssl23-get-server-hellounknown-protocol) –

Trả lời

1

Sử dụng này này đang làm việc

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

clientId, clientSecret, refreshToken là gì? – Naveen

+0

@Naveen Tạo một ứng dụng trong Gmail và sau khi tạo ứng dụng, bạn sẽ nhận được tất cả những thứ này. –

0

Dường như bạn làm cho nó phức tạp hơn một chút so với mức cần thiết. Tôi đang sử dụng thành công phiên bản này với phiên bản 0.7.0 của Nodemailer.

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

không hoạt động mã này –

+0

Có. Tôi đang sử dụng nó trên một máy chủ sản xuất. Lỗi chính xác mà bạn nhận được với phiên bản này và phiên bản nút nào bạn đang sử dụng? – tier1

+1

Tôi đang sử dụng máy chủ http trên máy chủ cục bộ. Câu hỏi thứ hai là cách tạo máy chủ https trên localhost –

6

Tôi có lỗi này bằng cách sử dụng smtp của bên thứ ba với 'nodemailer-smtp-vận chuyển' module node.

Vấn đề của tôi hóa ra là rằng tôi đã sử dụng cổng 587.

Khi tôi chuyển nó đến 465 nó tất cả bắt đầu làm việc.

cấu hình của tôi trông giống như:

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

Và chức năng của tôi email (nguyên cảo, bluebird Promise):

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

hoạt động cho zoho.com.Zoho đề cập đến cổng là 587 cho Loại bảo mật: TLS, vậy tại sao nó không thành công trên cổng 587 khi hoạt động trên 465 –

2

tôi đã phải đối mặt với vấn đề tương tự

giải quyết với điều này 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' 
    } 
}); 
Các vấn đề liên quan