添付ファイル付きメールを受信・送信する方法
回答済み【利用環境】
Kompira:1.5.5post1
OS: CentOS7.6
【実現したいこと】
Kompiraでの添付ファイル付きメールを受信・送信方法を知りたいです
【実現したいことの詳細】
メールチェック、および送信の業務をKompiraで自動化する事となりました。
つきましては、以下の点について回答いただけますでしょうか。
1.Kompiraのメールチャネル機能を使ったメール、および添付ファイル受信方法
受信したメールの送信元アドレス、及びタイトルを基に、条件処理をする業務があります。
このような業務を自動化するために、Kompiraで受信したメールの解析方法、および添付されたファイルを保存する方法を教えてください。
2.添付ファイル付きのメールを送信する方法
一方で、同一のファイルを添付して複数の宛先に送るような業務の自動化も検討しております。
マニュアルの「5.1.1.ローカル組み込みジョブ」を読むと「mailto()」関数の引数「attache_files」に添付するファイルを指定できるとありますが、具体的な指定方法の記載がないようです。
この方法をご教示いただけないでしょうか。
よろしくお願いいたします。
-
正式なコメント
お問い合わせありがとうございます。
1.kompiraのメールチャネル機能を使ったメール、および添付ファイル受信方法
組み込み関数のmail_parseである程度、メールの解析処理を行うことは可能です。
例えば、下記のようなJobflowにてメールチャネルで受信したメールからサブジェクト、本文、及び添付ファイルを取り出すことができます。
|dest = '/tmp'|
<./mailch> ->
print("メールを受信しました") ->
[raw_mail_text = $RESULT] ->
print("メールを解析します") ->
[mail_text = mail_parse(raw_mail_text)] ->
[from = mail_text['from'] ->
print('from:', mail_text['From']) ->
print('Subject:', mail_text['Subject']) ->
{ if mail_text['Is-Multipart'] |
then:
print("$from からマルチパートメールを受信しました") ->
{ for part in mail_text['Body'] |
{ if part['Filename'] | # 添付ファイルパート
then:
print("---- 添付パート: ファイル名=%Filename ----" % part) ->
["cat > $dest/%Filename" % part << part['Body']]
else:
print("---- 本文パート ----") ->
print(part['Body'])
}
}
else:
print("$from からシングルパートメールを受信しました") ->
print(mail_text['Body'])
}- 上記の例では受信した添付ファイルはKompiraサーバの/tmpディレクトリ配下に保存されます
-
もっと複雑な解析を行いたい場合(メール本文に含まれる特定キーワードを条件に処理を振り分けたい、等)Pythonでメール解析ルーチンを作成し、そのコードをKompiraのライブラリ型オブジェクトとして登録しておき、ジョブフローから呼び出すような形で実装することが多いです
2.添付ファイル付きのメールを送信する方法
Kompiraサーバ上のファイルを添付したメールを送信する場合、下記のジョブフローで実現可能です。
|to="to@example.com"|
|from=to|
|subject="HTMLを添付するテスト"|
|body="mailto() で HTML ファイルを添付するサンプルです"|
|attach_files=['/tmp/sample1.txt', '/tmp/sample2.txt']|
mailto(to, from, subject=subject, body=body, attach_files=attach_files]本例では添付ファイルとしてKompiraサーバ上に保存済みのファイルを指定しておりますが、他に下記の方法で指定することもできます。
- nameとdataというフィールドを持つ辞書
- ファイル名とコンテンツのリスト
- Kompiraオブジェクトの添付ファイルフィールド
- Kompiraサーバ上のファイルパス
ジョブフローではそれぞれ次のように指定します。
# 1.nameとdataフィールドを持つ辞書
attach_files=[{name='filename', data='content'}]
# 2.ファイル名とコンテンツのリスト attach_files=[['filename', 'content']]
# 3.Kompiraオブジェクトの添付ファイルフィールド attach_files=[./attached_file.attached1]
# 4.Kompiraサーバ上のファイルパス
attach_files=["/tmp/filename.xls"]参考になさってみてください。
以上、よろしくお願いいたします。
コメントアクション
サインインしてコメントを残してください。
コメント
1件のコメント