Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話
Search
Nobuyoshi
December 09, 2021
Programming
1
1.5k
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話します。
site:
https://uemu-engineer.com/
Nobuyoshi
December 09, 2021
Tweet
Share
More Decks by Nobuyoshi
See All by Nobuyoshi
仕事では採用されなかったホスティングサービス、 せっかくなのでLTで話します
uemura
0
100
Babylon.js × microCMS でフォトギャラリーサイト作った
uemura
0
250
2年ぶりにCSSアニメーションを作ったよ!
uemura
0
900
今年初めてのBabylonJsを触ってみた
uemura
0
270
Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介
uemura
0
320
Pug / SASS でピクロス(カービィ)を作成
uemura
0
170
僕の好きなcssプロパティ・値5選
uemura
0
480
複雑なHTML_CSS アニメーション 作品一覧 + 苦労したこと
uemura
0
150
Microcms + nuxt.jsで個人ブログサイトをデプロイした件
uemura
0
900
Other Decks in Programming
See All in Programming
Deno Tunnel を使ってみた話
kamekyame
0
320
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
Basic Architectures
denyspoltorak
0
180
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.2k
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
160
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
220
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
4
710
CSC307 Lecture 01
javiergs
PRO
0
670
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
630
Go コードベースの構成と AI コンテキスト定義
andpad
0
160
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
150
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.1k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
41
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
49
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
360
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
37
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
120
WENDY [Excerpt]
tessaabrams
9
35k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
280
Transcript
うえむー ポートフォリオサイトのお問い合わせフォームを Sendgrid + microCMSで作成したお話 うえむー
自己紹介 Name:うえむー フロントエンドエンジニア Job Skill:html / css / scss /
javascript / jQuery / vue.js / php etc... Private Skill:next.js / React.js / nuxt.js / micro cms / go etc... Hobby:プログラミング学習・ボードゲーム・麻雀・筋トレ SNS・ブログサイト Twitter::https://twitter.com/uemuragame5683 ブログサイト:https://nu-blogsite.net/ ポートフォリオサイト:https://uemu-engineer.com/
目次 ・サイト紹介 ・Send Gridについて ・SendGridを登録・API発行 ・実装 ・まとめ
サイト紹介
サイトの紹介 https://uemu-engineer.com/
サイト全体図 domain Frame work CMS Source code control Hosting CDN
お名前.com Mail Platform
Send Gridについて
SendGrid って何? SendGridというのは全世界で利用されているメール配信プラットフォームで す。 クラウドサービスを会員登録するだけで、トランザクションメール・マーケティン グメールをメールサーバー不要で利用できます。 有料プラン・無料プランがあります。
SendGridでフリープランでできること メール送信API ・SMTPリレー ・WebAPI(HTTPS) マーケティングキャンペーン機能 上限2,000件 通数上限 12,000通/月 日本語ドキュメント 日本語での無料サポート
配信結果の把握・サプレッション管理 配信状況の確認(到達 /再送/エラー等) 開封・クリックの測定 配信停止管理 独自ドメイン利用 etc...
改修内容 Mail Platform お問い合わせ フォーム Headless cms 変更前 変更後 Headless
cms お問い合わせ フォーム mail
SenadGridを登録・API発行
SendGridを登録・API発行する 仮登録完了メール受信 されるので本登録 「ユーザー情報を登録」 ボタンを押下すると新規 会員登録に遷移され本 登録 会員登録後、以下の メールが受信されユー ザ名が発行
※審査が通らないと利用できません。 「無料で始める」ボタン を押下して会員登録 「メールアドレス」を入力 して仮登録 1 2 3 4 5
SendGridを登録・API発行する API KEYSをクリッ クします。 以下の様にAPI発行される様になります。
実装編
SendGridをインストール npm install --save @sendgrid/mail package.json "dependencies" : { ...
"@sendgrid/mail" : "^7.4.7", ... }, command sendgrid/mailをnpmでインストールします。 package.jsonにsendgrid/mail をインストールされていることを 確認できます。
envを設定 NS_GRID_API_KEY='SG.XXXXXXX'
[email protected]
next.config.js module.exports = { env: { NS_GRID_API_KEY:
process.env.NS_GRID_API_KEY , NS_FROM: process.env.NS_FROM, }, ... }; .env 発行したAPIKeyを入力します 送信先のアドレスを入力します next.config.jsファイルを開き envの設定を追加します
api/send.tsx export default function handler(req, res) { if(req.method === 'POST')
{ const sgMail = require('@sendgrid/mail'); sgMail.setApiKey(process.env.NS_GRID_API_KEY); const msg = { to: req.body.email, from: process.env.NS_FROM, subject: 'お問合せありがとうございました。', text: req.body.name + '様<br><br>平素より、Nu-。。。' + req.body.body, html: req.body.name + '様<br><br>平素より、Nu-。。。' + req.body.body, }; (async () => { try { await sgMail.send(msg); } catch (error) { console.error(error); if (error.response) { console.error(error.response.body) } } })(); } res.status(200) } トランザクションメールを送信す るために、send.tsxファイルを生 成します。 その後、先ほど設定した APIキー を利用して実装します。
contact.tsx const 関数 = async e => { e.preventDefault(); const
datas = { email: email, name: name, title: title, body: body }; axios({ method: "post", url: "https://XXXXXXXXXXXXXXXXXXXXXXXX.io/api/v1/XXXXXXXX", data: datas, headers: { "Content-Type": "application/json", "X-MICROCMS-API-KEY": process.env.XXXXXXXXXXXXXXX } }) .then(() => { const contact_form = document.getElementsByClassName("c-contact__conform"); const complete_cont = ReactDOMServer.renderToStaticMarkup(<Complete />); contact_form[0].insertAdjacentHTML('afterbegin', complete_cont); axios( { method: "POST", url:'/api/send', data: datas, headers: { "Content-Type": "application/json", }, } ).then(() => { }) }) .catch(err => { console.log(err); }); } import * as React from 'react'; export default function Component() { return ( <> <div className='c-contact__complete'> <p> XXXXXXX </p> </div> </> ); } お問い合わせ内容確認を送信した時のイベント処理のコード でaxiosを利用して実装しました。 まず、microcmsでPOST送信して、送信成功したらトランザク ションメールを送信します。
実装結果 実装した結果、図のように microcmsの管理画面に受信 できて、自動送信できるようになりました。
まとめ SendGridは全世界で利用されている、メール配信プラットフォームである。 SendGridはアカウント登録するだけで、トランザクションメール・マーケティン グメールをメールサーバー不要で利用できる。 APIを発行してenvファイルに設定して、フロントに実装するだけでトランザク ションメールを送信することができる。
Thank YOU!