質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

1393閲覧

firebase cloud functionsでgmailを送信する際に、ステータス200で返ってきてるのに、メールが届かない

krtys

総合スコア8

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/08/23 23:43

編集2021/08/23 23:44

前提・実現したいこと

firebaseのcloud functionsを利用して、reactで書いた問い合わせフォームから、 gmailを経由してメールを送信したい

ここに質問の内容を詳しく書いてください。
特にエラーメッセージはなく、cloud functions上のログを確認しても、ステータス200で返ってきており、処理自体は成功しています。
が、メールが届きません。
status code 200で返ってくる直前のログに

Callable request verification passed {"verifications":{"app":"MISSING","auth":"VALID"}}

が出力されてるのが、気になりググりましたが、特にこれが問題ではなさそう。
かなりググりましたが、同じ事例に出くわしてる人がgoogle上におらず、困り果てております。。。
どなたかお力をお貸しください。

該当のソースコード

react

1const functions = require("firebase-functions"); 2 3// メール送信用 4const nodemailer = require("nodemailer"); 5const gmailEmail = functions.config().gmail.email; 6const gmailPassword = functions.config().gmail.password; 7const adminEmail = functions.config().admin.email; 8 9// 送信に使用するメールサーバーの設定 10const mailTransport = nodemailer.createTransport({ 11 service: "gmail", 12 auth: { 13 user: gmailEmail, 14 pass: gmailPassword 15 } 16}); 17 18// 管理者用のメールテンプレート 19const adminContents = data => { 20 return `以下内容でホームページよりお問い合わせを受けました。 21お名前: 22${data.name} 23メールアドレス: 24${data.email} 25内容: 26${data.content} 27`; 28}; 29 30 31exports.sendMail = functions.region('asia-northeast1').https.onCall((data, context) => { 32 data, context, () => { 33 // メール設定 34 let adminMail = { 35 from: gmailEmail, 36 to: adminEmail, 37 subject: "ホームページお問い合わせ", 38 text: adminContents(data) 39 }; 40 return mailTransport.sendMail(adminMail, (error, info) => { 41 if (error) { 42 return res.status(500).send({ 43 data: { 44 status: 500, 45 message: error.toString(), 46 }, 47 }); 48 } 49 50 return res.status(200).send({ 51 data: { 52 status: 200, 53 message: 'sent', 54 }, 55 }); 56 }); 57 }; 58});

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/08/24 00:50

data, context, () => { 〜 }; ってどういう意図で書いてますか? (これだと関数を定義して使わずに捨てちゃってるだけのはず…。)
FKM

2021/08/24 02:27

叩き台に使ってるメールサーバのステータスはどうなっていますか?ひょっとしてbouncedとかになってないですか?
krtys

2021/08/24 03:17

ご回答いただきありがとうございます! >data, context, () => { 〜 }; ってどういう意図で書いてますか? >(これだと関数を定義して使わずに捨てちゃってるだけのはず…。) すみません、、お恥ずかしながら、よく理解せずに参考サイトのコードをコピペしてました、、、 >叩き台に使ってるメールサーバのステータスはどうなっていますか?ひょっとしてbouncedとかになってないですか? これはgmailのアカウントを使ってるのですが、特にbounce errorにはなってなさそうです。 が、ステータス確認する方法調べて、確認してみます。
hoshi-takanori

2021/08/24 03:40

現状だと関数の中で関数を定義だけして何もしないコードになってるので、とりあえず data, context, () => { の行と、対応する }; を削除して試してみては。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問