1

Cloud Functions for Firebasenodemailerを使用しようとしていますが、smptサーバーにアクセスできないか、見つからないようなエラーが発生しているようです。 Iv'eは、Gmail、Outlook、そして通常のホスト型smptサービスを試しました。ローカルノードサーバーからうまく機能します。Firebaseのクラウド機能でnodemailerを使用するにはどうすればよいですか?

これは私が電子メールを送信するために失敗したから受け取る記録されたエラーである:私は次のように私のサイトのコンタクトフォームセクションからメールを送信するために、クラウド機能(HTTPイベント)を作成し

{ 
    Error: getaddrinfoENOTFOUNDsmtp-mail.outlook.comsmtp-mail.outlook.com: 587aterrnoException(dns.js: 28: 10)atGetAddrInfoReqWrap.onlookup[ 
    asoncomplete 
    ](dns.js: 76: 26)code: 'ECONNECTION', 
    errno: 'ENOTFOUND', 
    syscall: 'getaddrinfo', 
    hostname: 'smtp-mail.outlook.com', 
    host: 'smtp-mail.outlook.com', 
    port: '587', 
    command: 'CONN' 
} 
+0

このタグは存在しません。 http://stackoverflow.com/questions/42854865/what-is-the-difference-between-cloud-function-and-firebase-functions –

+2

有料プロジェクトで機能を実行するプロジェクトはありますか?フリー/スパークプランのプロジェクトは、(潜在的な虐待を防ぐために)外部サービスを呼び出すことはできません。 –

+1

@FrankvanPuffelenそれはおそらく問題であるように、フリー/スパークです。悪いことに、Gmailではうまくいきませんでした。 – Tim

答えて

1

const functions = require('firebase-functions'); 
const nodemailer = require('nodemailer'); 
const rp = require('request-promise'); 

//google account credentials used to send email 
const mailTransport = nodemailer.createTransport(
    `smtps://[email protected]:[email protected]`); 

exports.sendEmailCF = functions.https.onRequest((req, res) => { 

    //recaptcha validation 
    rp({ 
     uri: 'https://recaptcha.google.com/recaptcha/api/siteverify', 
     method: 'POST', 
     formData: { 
      secret: 'your_secret_key', 
      response: req.body['g-recaptcha-response'] 
     }, 
     json: true 
    }).then(result => { 
     if (result.success) { 
      sendEmail('[email protected]', req.body).then(()=> { 
       res.status(200).send(true); 
      }); 
     } 
     else { 
      res.status(500).send("Recaptcha failed.") 
     } 
    }).catch(reason => { 
     res.status(500).send("Recaptcha req failed.") 
    }) 

}); 

// Send email function 
function sendEmail(email, body) { 
    const mailOptions = { 
    from: `<[email protected]>`, 
    to: email 
    }; 
    // hmtl message constructions 
    mailOptions.subject = 'contact form message'; 
    mailOptions.html = `<p><b>Name: </b>${body.rsName}</p> 
         <p><b>Email: </b>${body.rsEmail}</p> 
         <p><b>Subject: </b>${body.rsSubject}</p> 
         <p><b>Message: </b>${body.rsMessage}</p>`; 
    return mailTransport.sendMail(mailOptions); 
} 
関連する問題