さて、SendGridでメールを送る準備編、テキストメール編を経て、今回はファイルをメールに添付して送る話です。
FileMakerのバージョン等は、準備編の記事を参考にしてください。
テーブル設計
今回もテスト用ですがテーブルにオブジェクトフィールドを設定しました。
通常の運用だと、ここに請求書のpdfや管理している画像などが入る感じでしょうか?
計算フィールドでBase64EncodeRFCを使ってオブジェクトをテキストにしていますが、データサイズが増えてしまうのでメールに添付するだけでしたらスクリプトなどで処理中に変換するだけでいいと思います。
Base64EncodeRFCで指定する4648は、エンコードしたデータに改行コードを付けない、という意味です。
改行コードありの指定をしてしまうと、ある一定の間隔(RFC番号ごとに決まっている間隔)で改行コードが入ってしまい、復元できなくなってしまいますので、注意してください。
SendGrid APIの確認
SendGrid APIでは、attachmentsというキーを配列で指定します。
contentとfilenameが必須項目です。
contentは、Base64EncodeRFCでエンコードしたテキストを設定します。
filenameはGetContainerAttributeで取得できます。
スクリプトの確認
基本的なスクリプトは、テキストメール編を参考にしてください。
今回追加したのは、attachmentsキーの部分になります。
当然ですが、attachmentsキーは配列なので複数のファイルを設定できます。
実行する
では、今回も自分宛に送信してみます。
今回は、infoseek,gmail,macMailアプリでテストしてみました。
infoseek
gmail
こちらも成功です。
「sendgrid.net経由」というのも表示されています。
macMailアプリ
だがしかし、こちらはちょっと問題がありました。
添付ファイル名の日本語(2バイト文字)が文字化けしてしましました。
まだ解決していませんが、とりあえず添付ファイルを送信できて、受信したメールから添付ファイルをダウンロード→開くということもできたので、今回はこれで終わりにします。
解決策がわかったらまた記事にします。