添付ファイル付きメールを受信・送信する方法

回答済み

コメント

1件のコメント

  • 正式なコメント
    Kompiraサポートチーム

    お問い合わせありがとうございます。

     

    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サーバ上に保存済みのファイルを指定しておりますが、他に下記の方法で指定することもできます。

    1. nameとdataというフィールドを持つ辞書
    2. ファイル名とコンテンツのリスト
    3. Kompiraオブジェクトの添付ファイルフィールド
    4. 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"]

     

    参考になさってみてください。

    以上、よろしくお願いいたします。

    コメントアクション Permalink

サインインしてコメントを残してください。