添付ファイルの設定

miyoshiya

2021.12.07既読 3757

メール送信は実装できたのですが、添付ファイルのやり方が分かりません。

以下URLに「パラメータ名にfile.txtを指定します」とありますが、うまくいきません。

フルパスを記述するのでしょうか?

具体的な記述例があると助かります。

https://developers.worksmobile.com/jp/document/1004004?lang=ja

コメント5

  • 업데이트 된 답글입니다.

    佐藤正宗

    codeのサンプル欲しいならPostman便利ですよ。
    https://qiita.com/kunihiros/items/ce3a3677113426d6b75f

    添付ファイルつけたメール送信のcurlのサンプルコード貼っておきます。
    curl --location --request POST 'https://apis.worksmobile.com/r/APIID/mail/v2/sendMail' \
    --header 'consumerKey: consumerKey' \
    --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxx' \
    --header 'Cookie: WORKS_RE_LOC=jp1; WORKS_TE_LOC=jp1' \
    --form 'to="xxxx@xxxx.com"' \
    --form 'subject="postman test mail"' \
    --form 'TEST_PDF.pdf=@"/C:/Users/xxxxxxx/TEST/TEST_PDF.pdf"'

    2021.12.09

    1
  • 업데이트 된 답글입니다.

    miyoshiya 投稿者

    @佐藤正宗 さま

    返答いただきありがとうございます。
    python、APIともに初心者のため見当違いになっていたら申し訳ございません。
    メールは何とか送信できたのですが、添付の方法が分からなくて・・・
    「添付ファイル名」に Multipart でどう値を渡せばいいのか・・・
    いただいた内容でもう少し頑張ってみようと思います。



    https://developers.worksmobile.com/jp/document/1004004?lang=ja
    パラメータ:添付ファイル名
    タイプ:Multipart
    説明:UTF-8でエンコードした添付ファイル名
    ・「添付ファイル名」は、メール送信時にアップロードするファイル名を意味します。
     例)添付ファイル名がfile.txtの場合、パラメータ名にfile.txtを指定します。


    /////////////////////////////////////////////////////////////////////////////////////////

    API_ID = xxxxx
    headers = {'consumerKey': 'xxxxx', 'Authorization': 'Bearer xxxxx'}

    url = 'https://apis.worksmobile.com/r/{0}/mail/v2/sendMail'.format(API_ID)

    filepath = r"C:\Users\xxxxx\Desktop\テスト.txt
    filename = os.path.basename(filepath)

    payload = {
       'Content-Type': 'multipart/form-data',
       'boundary': '----WebKitForm',
       'charset': 'UTF-8',
       'to': 'hoge@hoge.co.jp,
       'subject': 'テスト送信',
       'text': 'テスト送信しました。',
       '添付ファイル名': ???????????  ← ここの書き方がわかりません。
    }

    r = requests.post(url, headers=headers, data=payload)

    /////////////////////////////////////////////////////////////////////////////////////////

    2021.12.09

    0
  • 업데이트 된 답글입니다.

    佐藤正宗

    Pythonのコードだとこちらですね。

    import requests

    url = "{{API_URL}}/r/{{API_ID}}/mail/v2/sendMail"

    payload={'to': 'xxxxx@xxxx.com',
    'subject': 'postman test mail'}
    files=[
     ('TEST_PDF.pdf',('TEST_PDF.pdf',open('/C:/Users/xxxxxxxx/TEST/TEST_PDF.pdf','rb'),'application/pdf'))
    ]
    headers = {
     'consumerKey': '{{SERVICE_CONSUMER_KEY}}',
     'Authorization': 'Bearer xxxxxxxxxxxxxxxxx='
    }

    response = requests.request("POST", url, headers=headers, data=payload, files=files)

    print(response.text)

    2021.12.09

    1
  • 업데이트 된 답글입니다.

    miyoshiya 投稿者

    佐藤正宗 様

    ありがとうございます!
    できました。

    ただ、「UTF-8でエンコードした添付ファイル名」とあるためなのか、日本語のファイル名だと文字化けするようです。
    ファイル自体は添付できていますが。
    もう少しやってみようと思います。
    大変たすかりました。

    2021.12.09

    1
  • 업데이트 된 답글입니다.

    miyoshiya 投稿者

    出来た理由は分かりませんが、以下サイトの「urllib.parse.quote()」をやってみたところ日本語もきちんと表示されました。
    本当にありがとうございました!

    https://note.nkmk.me/python-urllib-parse-quote-unquote/

    //////////////////////////////////////////////////////////////

    import urllib.parse

    filepath = r"C:\Users\xxxxxxxxx\Desktop\テスト_PDF.pdf"
    filename = os.path.basename(filepath)
    filename = urllib.parse.quote(filename)

    2021.12.09

    1
前の投稿 既存のユーザからAPI経由で他ユーザにメッセージを送信したい
次の投稿廃止APIについて
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。