システムを開発している中で、メールを送るシーンがあります。
例えば、サインアップするシステムを作っていると、サインアップ後に登録の確認をするメールを送るとか、パスワードのリセットするためにメールを送るとか。
これを、Herokuでやろうとしても、素のHerokuではできません。
そんな時は、SendGridを使いましょうという話です。
HerokuにSendGridを追加
まずは、HerokuにSendGridアドオンを追加します。
HerokuのOverViewから、「Configure Add-ons」をクリックします。

次に、「Find more add-ons」をクリックします。

SendGridを検索します。

「Install SendGrid」でインストールしましょう。

SendGridの設定
次は設定です。
まずは、HerokuのAdd-onsリストから、SendGridを選択しましょう。

次にSendGridのSettingsのAPI Keysで、メール送信時に使うAPI Keyを作成します。


API Keyが生成されました。
ここで注意です。API Keyはここでしか表示されません。API Keyをクリックすると、クリップボードにコピーできますので、必ず、コピーしましょう。

Node.jsでメールを送る
@sendgrid/mailのインストール
まずは、SendGridでメールを送るための、npmパッケージをインストールします。
npm install @sendgrid/mail --save
インプリする
いよいよ、インプリです。
import { Injectable } from '@nestjs/common';
import * as sgmail from '@sendgrid/mail';
@Injectable()
export class EmailService {
sendMail(templateName: string, toemail: string): Promise<boolean> {
return new Promise((resolve, reject) => {
// SENDGRID_API_KEYを設定する
sgmail.setApiKey(process.env.SENDGRID_API_KEY);
// 送信するメールの内容を設定する
const msg = {
to: toemail,
from: opts.email,
subject: '【' + opts.servicename + '】からのお知らせ',
text: data
};
// メールを送信する
sgmail.send(msg)
.then((req) => {
resolve(true);
})
.catch((err) => {
reject(err);
});
}
});
}
}
これで、Herokuからメールが送信できるようになります。
簡単!!