2017-12-26 5 views
1

보내기 메일

var express = require('express'); 
 
var app = express(); 
 
var nodemailer=require('nodemailer'); 
 

 
var transporter = nodemailer.createTransport('smtps://[email protected]:[email protected]'); 
 
app.get('/sendMail', function(req,res){ 
 
\t var mailOptions={ 
 
\t \t to: '[email protected]', 
 
\t \t subject: 'Test Mail', 
 
\t \t html: 'Testing the Mail' 
 
\t } 
 
\t transporter.sendMail(mailOptions,function(err,response){ 
 
\t \t if(err){ 
 
\t \t \t res.end('Mail not sent'); 
 
\t \t } 
 
\t \t else{ 
 
\t \t \t res.end('Mail sent'); 
 
\t \t } 
 
\t }); 
 
}).listen(9091); 
 

 
console.log('This is running');

나는 중포 기지 웹 응용 프로그램을 개발하고있다. 웹 앱을 통해 이메일을 보내야합니다. 나는 튜토리얼을 보았고 약간의 코드를 발견했다. 위의 코드를 사용하여 전자 메일을 보낼 수 있습니다. 그것은 포트 에서 실행됩니다. 검색 주소창에 www.mywebsite.com/sendMail이 있으면 메시지가 전송됩니다. 그러나이 페이지를 Firebase에 호스트 할 때이 코드에서 변경해야 할 사항이 있는지, 포트 번호를 변경해야하는지 여부를 결정합니다. 내 웹 응용 프로그램에서이 코드를 구현하는 데 도움이됩니다.

+3

서버 측에서 자바 스크립트 코드를 실행하는 플랫폼 인 NodeJS에서 웹 앱이 개발 된 것 같습니다. 하지만 Firebase 호스팅은 정적 호스트입니다. 즉 자바 스크립트가 클라이언트 측에서 실행됩니다. Firebase에서 앱을 호스팅하려면 메일을 보내는 [Cloud Function] (https://firebase.google.com/docs/functions/)을 사용하면됩니다. –

+0

@ RosárioPereiraFernandes 나는 클라우드 기능을 통해서만 메일을 보낼 수 있다고 말하고 있다고 생각합니다. – Badhusha

답변

3

내 의견에 언급했듯이 문제는 웹 응용 프로그램이 NodeJS로 작성되었으며 정적 호스트 환경 (Firebase Hosting)에서 호스트하려고한다는 것입니다. 하지만 Firebase에는 Cloud Functions도 있습니다.이 서비스는 NodeJS 환경에서 기능을 실행하게합니다. 따라서 앱을 해당 서비스에 배포해야합니다.

정말 쉽게 Get Started with Cloud Functions입니다. 이미 중포 기지 호스팅을 설정 한 이후, 당신은 단순히 디렉토리로 이동하고이 명령을 사용하여 클라우드 기능을 설정할 수 있습니다

firebase init functions 

는 "기능"이 생성됩니다라는 이름의 새 폴더와 index.js 파일이있을 것입니다 해당 폴더에 자동으로 추가됩니다. 이제는 함수를 작성하는 파일입니다 (실제로는 전자 메일을 보내려면 1 개의 함수 triggered by HTTP가 필요합니다).

따라서이 기능을 만들려면 더 이상 Express가 필요하지 않습니다. 당신은을 제거하고 중포 기지-기능을 추가하기 위해 비트에게하는 index.js 파일을 변경, 그래서 될 것입니다 수 있습니다

//var express = require('express'); No longer needed 
//var app = express(); No longer needed 
var nodemailer=require('nodemailer'); 
const functions = require('firebase-functions'); 

var transporter = nodemailer.createTransport('smtps://[email protected]:[email protected]'); 

exports.sendMail = functions.https.onRequest((req, res) =>{ 
    var mailOptions={ 
     to: '[email protected]', 
     subject: 'Test Mail', 
     html: 'Testing the Mail' 
    } 
    transporter.sendMail(mailOptions,function(err,response){ 
     if(err){ 
      res.end('Mail not sent'); 
     } 
     else{ 
      res.end('Mail sent'); 
     } 
    }); 
}); 

을 이제 메시지를 보낼 때,이 URL을 사용할 수 있습니다 : https://us-central1-<project-id>.cloudfunctions.net/sendMail

<project-id>을 Firebase Project ID로 바꾸십시오.