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.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話
ポートフォリオサイトのお問い合わせフォームをSendgrid + microCMSで作成したお話します。
site:
https://uemu-engineer.com/
Nobuyoshi
December 09, 2021
More Decks by Nobuyoshi
See All by Nobuyoshi
ピクセルパーフェクトの定義
uemura
1
110
仕事では採用されなかったホスティングサービス、 せっかくなのでLTで話します
uemura
0
130
Babylon.js × microCMS でフォトギャラリーサイト作った
uemura
0
280
2年ぶりにCSSアニメーションを作ったよ!
uemura
0
1k
今年初めてのBabylonJsを触ってみた
uemura
0
300
Three.js(WebGL)で一年以上学習した成果と便利なクラス/ライブラリを紹介
uemura
0
340
Pug / SASS でピクロス(カービィ)を作成
uemura
0
200
僕の好きなcssプロパティ・値5選
uemura
0
520
複雑なHTML_CSS アニメーション 作品一覧 + 苦労したこと
uemura
0
160
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
Oxlintのカスタムルールの現況
syumai
6
1.2k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
16
8.1k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
160
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
180
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
620
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
450
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.5k
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.1k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.5k
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
Between Models and Reality
mayunak
4
360
Building Adaptive Systems
keathley
44
3.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
300
RailsConf 2023
tenderlove
30
1.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
The Curious Case for Waylosing
cassininazir
1
420
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
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!