- 投稿日:2020-02-19T20:35:35+09:00
nodemailer envelope設定サンプル
テスト環境
- node.js v12
- nodemailer v6.3
サンプルコード
send-mail.jsvar Mailer = require('nodemailer') // // ローカルsmtpサーバ // const smtp = Mailer.createTransport({ host: 'localhost', port: 25 }) const message = { // メッセージヘッダとかの設定 // => メール受け取る側から見える情報 from: 'from@example.com', to: ['to@example.com'], cc: ['cc@example.com'], bcc: ['bcc@example.com'], subject: 'HELLO! nodemailer!!', text: 'this is a test mail', html: '<p>this is a test mail</p>', // envelope: SMTPサーバー用の設定 // FROM: (バウンスメールが届くアドレス) // envelope.from // と // RCPT TO: (実際に送信する宛先) // envelope.to, envelope.cc, envelope.bcc // envelopeは "省略可能" // 省略した場合は以下のように自動付与されると思っていい envelope: { from: 'from@example.com', to: ['to@example.com'],// RCPT TO: に突っ込まれる cc: ['cc@example.com'],// RCPT TO: に突っ込まれる bcc: ['bcc@example.com'],// RCPT TO: に突っ込まれる } } smtp.sendMail(message)メッセージヘッダのfromとバウンスメールの受け取りアドレスを変えたい場合
例えば、MAILER-DAEMONが返ってきてしまった該当メールアドレスは無効化したいので、バウンスメール用のメールアドレスを用意して監視したい時などが利用場面です。
この場合は、envelopeを明示的に設定する必要あります。
envelopeを明示的に設定する場合、message.to, message.cc, message.bccに宛先を書くだけでは、メールは届かないので注意。
envelope.to, envelope.cc, envelope.bcc に宛先を書く必要がある。
const message = { from: 'from@example.com', to: ['to@example.com'], cc: ['cc@example.com'], bcc: ['bcc@example.com'], subject: 'HELLO! nodemailer!!', text: 'bounce-mails are sent to for-bounce@example.com ', html: '<p>bounce-mails are sent to for-bounce@example.com</p>', envelope: { from: 'for-bounce@example.com', to: ['to@example.com'], cc: ['cc@example.com'], bcc: ['bcc@example.com'], } }
- 投稿日:2020-02-19T16:21:02+09:00
Node.jsで動画変換処理
目次
概要
Node.jsをサーバとして利用した時に、動画加工処理の最適な方法は何かを調査する。
有名どころでは、ffmpeg。参考
Node.jsでffmepgを使って動画からサムネイル/静止画を生成する
https://qiita.com/nasbi_suganuma/items/222cd894e09b7c5e9652それFFmpegで出来るよ! ffmpeg自体の説明と操作
https://qiita.com/cha84rakanal/items/e84fe4eb6fbe2ae13fd8環境構築
Macでのffmpegのインストール(時間がかかる)
brew install ffmpeg※こんなエラーが出たので、
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworksディレクトリを作成し、権限与えて、もう一度インストール! 成功!
sudo mkdir /usr/local/Frameworks sudo chown $(whoami):admin /usr/local/FrameworksWinでのffmpegのインストール 参考
【windows】FFmpegをインストールする手順
https://fukatsu.tech/windows-ffmpegfluent-ffmpegをインストール
npm install fluent-ffmpegfluented-ffmpegの使い方
難しいことをしないなら、
ffmpeg(入力ファイル).output(出力ファイル)
で完了なので、結構簡単。const filePath = `${__dirname}/../static/MovieFiles/${id}/` ffmpeg(`${filePath}movie.mp4`) .output(`${filePath}movie.avi`) .on('end', () => { // ここに処理完了後の処理記述 console.log('Processing finished !') }) .screenshots({ // これはサムネイル作成の記述 count: 1, folder: filePath, filename: 'thumbnail.jpg', size: '150x150' })
- 投稿日:2020-02-19T16:21:02+09:00
Node.jsで動画変換処理(fluent-ffmpeg)
目次
概要
Node.jsをサーバとして利用した時に、動画加工処理の最適な方法は何かを調査する。
有名どころでは、ffmpeg。参考
Node.jsでffmepgを使って動画からサムネイル/静止画を生成する
https://qiita.com/nasbi_suganuma/items/222cd894e09b7c5e9652それFFmpegで出来るよ! ffmpeg自体の説明と操作
https://qiita.com/cha84rakanal/items/e84fe4eb6fbe2ae13fd8環境構築
Macでのffmpegのインストール(時間がかかる)
brew install ffmpeg※こんなエラーが出たので、
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworksディレクトリを作成し、権限与えて、もう一度インストール! 成功!
sudo mkdir /usr/local/Frameworks sudo chown $(whoami):admin /usr/local/FrameworksWinでのffmpegのインストール 参考
【windows】FFmpegをインストールする手順
https://fukatsu.tech/windows-ffmpegfluent-ffmpegをインストール
npm install fluent-ffmpegfluent-ffmpegの使い方
難しいことをしないなら、
ffmpeg(入力ファイル).output(出力ファイル)
で完了なので、結構簡単。const filePath = `${__dirname}/../static/MovieFiles/${id}/` ffmpeg(`${filePath}movie.mp4`) .output(`${filePath}movie.avi`) .on('end', () => { // ここに処理完了後の処理記述 console.log('Processing finished !') }) .screenshots({ // これはサムネイル作成の記述 count: 1, folder: filePath, filename: 'thumbnail.jpg', size: '150x150' })
- 投稿日:2020-02-19T13:02:40+09:00
AWS Lambda@Edge で 環境変数を使う方法 (Node.js)
はじめに
Lambda ならば、環境変数という項目があり、
そこにキーと値を書けばprocess.env
オブジェクトから取得できました。参考URL
AWS Lambda で環境変数を渡してみる(Node.js)
Lambda@Edge にも同じく環境変数の入力欄があるのですが、
どういうわけかまだサポートされてないらしく、
2020年2月時点では使用できません。初見殺しもいいところですね。
でも、環境変数が使いたい時はあると思います。
色々模索した結果、以下の方法に落ち着きました。結論
dotenv
ライブラリを使うローカル環境とかにdotenvライブラリを導入します
$ cd /path/to/project $ npm install dotenv次に、
.env
ファイルを用意して、そこに環境変数を色々書いておきます。$ touch .env $ vi .env私はかつてLaravel5(PHP)を使っていたので、それに習った書き方をしています。
Laravelいいよね。.envAPP_ENV=production APP_URL=https://www.example.com APP_DEBUG=falseここまで出来たら、これらをZIPファイルにまとめて、
Lambda@Edgeにアップロードします。ZIPファイルでアップロードする方法は、
ネットに腐るほど書いてますのでググってください【絶対にすること】 エディタで隠しファイルを表示する
2020.02.19 追記
下の方法よりもっと簡単な方法がありました。
プロジェクトフォルダの右の歯車をクリックした後、「Show Hidden Files」をクリックするだけですファイルアップロードが終わったら、
以下の手順に従い、コンソールエディタで
「.env」などの隠しファイルが表示されるようにしてください
(将来の Lambda@Edge のアップデートで表示方法が変更になる可能性があります)① エディタ右上の歯車マークをクリック
② User Settings をクリック
③ Tree and Go Panel をクリック
④ Hidden File Pattern: から 次のように 「, .*」 を削除*.pyc, __pycache__, .* ↓ *.pyc, __pycache__これにより、隠しファイルが表示されるので
どこに設定ファイルがあるかがわかるようになりますね。(筆者は動作確認のために .envファイルを複数用意していますが、
必要ありません。「.env」ファイルだけが使用されます)環境変数の取得方法
Lambdaで環境変数を取得する方法と全く同じやり方で取得できます。
つまり、process.env
オブジェクトから取得できます。var ENV = require('dotenv').config(); var appUrl = process.env['APP_URL']; console.log(appUrl); // e.g. "https://www.example.com"私の場合、毎回
process.env
って書くのがだるいので
Laravelのenv関数みたいな感じにラッピングしてから使用していますindex.js/* ===================================================================== * Load External Modules * =================================================================== */ try { var ENV = require('dotenv').config(); // 環境変数が使えるようになったらこのモジュールは不要 } catch(ex){ // if module is not exists console.error(ex); } /** * Get Envrionment Variable * Lambda@Edgeは2020年2月時点では環境変数が使えないから * DotEnvライブラリで代用する(環境変数もDotEnvも process.env で値を取得できる) * * @param string key (should be write UPPERCASE) * @param mixed defaultValue [optional] * @return mixed */ function getEnv(key, defaultValue = null) { var myKey = key.toUpperCase(); return process.env[myKey] ? process.env[myKey] : defaultValue; } function loadProfile() { var env = new Object(); env.APP_URL = getEnv("APP_URL", "https://www.example.com"); env.APP_ENV = getEnv("APP_ENV", "development"); env.APP_DEBUG = getEnv("APP_DEBUG", true); env.S3_BUCKET_NAME = getEnv("S3_BUCKET_NAME", "my-s3-bucket-name"); env.EC2_URL = getEnv("EC2_URL", ""); return env; } exports.handler = async (event, context, callback) => { var request = event.Records[0].cf.request; var env = loadProfile(); console.log(env["APP_URL"]); // e.g. "https://www.example.com" console.log(env["APP_ENV"]); // e.g. "production" .env に定義されているので その値が使用される console.log(env["S3_BUCKET_NAME"]); // e.g. "my-s3-bucket-name" .env に定義されていないので getEnv関数の第2引数が使用される callback(null, request); };もっと良い方法をご存知の方が
いらっしゃいましたらコメントください。
- 投稿日:2020-02-19T00:02:01+09:00
Cloud9上でYarnでbootstrap material designを導入する
railsで、初心者のメンターをしていて、非Macユーザーで、環境がcloud9のケースで、yarnでbootstrapを導入しました。あまり記事がなかったので、備忘録で書きます。
環境
windows(64bit)
ruby 2.6.4
Rails 5.2.4
Cloud9上で開発Node.jsのバージョンアップ
Nodeのstableなバージョンをインストールします。
$ nvm install stableYarnのインストール
$ npm install -g yarnbootstrap material designを導入
package.jsonを生成
$ yarn initbootstrap material designを追加
$ yarn add bootstrap-material-designインストール
$ yarn installマニフェストファイルへ読み込みのpathを記載
app/assets/javascripts/application.js//= require bootstrap-material-design/dist/js/bootstrap-material-design.jsapp/assets/stylesheets/application.scss@import 'bootstrap-material-design/dist/css/bootstrap-material-design'; @import 'font-awesome-sprockets'; @import 'font-awesome';ここまでブラウザ画面で確認しても、
Sass::SyntaxErrorが出る。
config/initializers/assets.rbRails.application.config.assets.paths << Rails.root.join('node_modules')こちらの記載でファイルが読み込めるように設定。
サーバーを再起動すれば、無事表示!
- 投稿日:2020-02-19T00:00:26+09:00
Cloud9上でYarnでbootstrap material designを導入する
railsで、初心者のメンターをしていて、非Macユーザーで、環境がcloud9のケースで、yarnでbootstrapを導入しました。あまり記事がなかったので、備忘録で書きます。
環境
windows(64bit)
ruby 2.6.4
Rails 5.2.4
Cloud9上で開発Node.jsのバージョンアップ
Nodeのstableなバージョンをインストールします。
$ nvm install stableYarnのインストール
$ npm install -g yarnbootstrap material designを導入
package.jsonを生成
$ yarn initbootstrap material designを追加
$ yarn add bootstrap-material-designインストール
$ yarn installマニフェストファイルへ読み込みのpathを記載
app/assets/javascripts/application.js//= require bootstrap-material-design/dist/js/bootstrap-material-design.jsapp/assets/stylesheets/application.scss@import 'bootstrap-material-design/dist/css/bootstrap-material-design'; @import 'font-awesome-sprockets'; @import 'font-awesome';ここまでブラウザ画面で確認しても、
Sass::SyntaxErrorが出る。
config/initializers/assets.rbRails.application.config.assets.paths << Rails.root.join('node_modules')こちらの記載でファイルが読み込めるように設定。
サーバーを再起動すれば、無事表示!