0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【aws cli ses】sendrawEmailで添付ファイル付きメールを送る方法【linuxシェル】【json形式】

Posted at

1.sendRawEmailコマンドで添付ファイル付きメールを送る方法

先日AWS cli sesを使用してlinuxのシェルでjson形式を使用して
メールを送る処理を書く機会がありました。

そのときsendRawEmailで添付ファイルを送る方法が書かれていないので
何かの役に立てばと思い残します。

2.基本の解説(ヘッダ)

ヘッダとはFromやToなどの要素のことを示します。

3.基本の構文の説明

ヘッダは改行区切りのテキスト(文字)形式で「項目名: 値¥m」という記法で設定を列挙します。

良い例

From:[メールアドレス]¥nTo:[メールアドレス]¥nSubject:[メールタイトル]¥n

と書きます。

このとき改行をせずに改行文字を入れてください。

悪い例

From:[メールアドレス]
To:[メールアドレス]
Subject:[メールタイトル]

4.添付ファイルの記載方法

まず、例を示してから解説をします。

aws ses send-raw-email --raw-message "{\"Data\":\"From: [送信元メールアドレス]\nTo: [送信先メールアドレス]\nCc: [CC欄メールアドレス]\nSubject: [メールタイトル]\nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"a-random-boundary\"\n--a-random-boundary\nContent-Type: text/plain; charset=\"UTF-8\\\"\n[本文]\n--a-random-boundary\nContent-Type: application/octet-stream; name=\\\"[ファイル名]\\\"\nContent-Transfer-Encoding: base64\nContent-Disposition: attachment\n[ファイルの中身]\n--a-random-boundary--\"}"

解説

\"Data\" :

一番最初に書く

以下のメール内容(Fromから下の内容)は¥"¥"で囲む

From:  [送信元メールアドレス]

[送信元メールアドレス]にはメールアドレスを書く

To: [送信先メールアドレス]

[送信先メールアドレス]にはメールアドレスを書く

Cc: [CC欄メールアドレス]

[CC欄メールアドレス]にはメールアドレスを書く

Subject: [メールタイトル]

[メールタイトル]にはメールタイトルを書く
メールタイトルに空白が含まれる場合は¥"¥"で囲む

MIME-Version: 1.0 

MINEのバージョン宣言

Content-Type: multipart/mixed;

「multipart」タイプは複合データを表し、複数のデータの組み合わせを一度に伝送したい場合に用いる。「mixed」サブタイプは連結されたデータの形式やデータ間の関連性について特に何も示さず、単に複数のデータが連結されていることのみを表している。

boundary=¥\"a-random-boundary¥\" 

バウンダリの文字列を指定
パートの境界は、「バウンダリ:boundary」と呼ばれる任意の文字列の行で示される。

--a-random-boundary  

バウンダリ文字列で一つのパートの開始を表す

Content-Type: text/plain;text/plain

テキストファイルを送るときのContent-Type

charset=¥\"UTF-8¥\" 

文字コードの指定

[本文]

本文を記載する
空白が含まれる場合は¥"¥"で囲む

--a-random-boundary --

バウンダリ文字列で二つ目のパートの開始を表す

Content-Type: application/octet-stream; 

電子メールの添付ファイルでファイルの種別を表すのに用いられるMIMEタイプの一つ

name= [ファイル名]

ファイル名を指定する
ファイル名に空白が含まれる場合は¥"¥"で囲む

Content-Transfer-Encoding: base64 

[ファイルの中身]のエンコード形式の指定
この場合はbase64を指定しているContent-Transfer-Encoding: base64 

Content-Disposition: attachment 

ファイルをダウンロードできることを示す

[ファイルの中身]

ファイルの中身を記載する
に空白が含まれる場合は¥"¥"で囲む

--a-random-boundary-- 

バウンダリ文字列のパートの終了を示す

[送信ファイルの中身]はContent-Transfer-Encodingで指定した
方法でデコードする必要がある。

以下にbase64のエンコード指定したときを示します。

デコード例

[デコードしたファイルの中身]=$(base64 -w 0 "ファイルの名前")

5.注意点

json形式では送れない文字があります。
その場合以下のようにエスケープする必要があります。

送れない文字 読み方
¥” ダブルクォーテーション
¥\ バックスラッシュ
¥/ スラッシュ 
¥b バックスペース
¥f 改ページ
¥r ラインフィード 
¥n 改行・キャリジリターン
¥t タブ 
¥uXXXX 4桁の16進数で表記されたUnicode文字

6.締め

コピペOKですのでコマンドを使用してメールを送ってみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?