1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[T-DASH] テスト自動化の中で、IMAPを利用してメールの本文を取得する

Last updated at Posted at 2024-06-12

Outline

前回、テスト自動化の中のステップでgmailをgoogle cloudのAPI経由で取得する方法を記載した

今回、IMAPを利用してもっと簡単に取得して、T-DASHテスト自動化で利用する方法を解説する。

IMAPのテストサイト

IMAPが使えるサイトとして5x2.deを用いた。
こちら、ドイツのサイトになりますが、IMAPを利用でき、無料です。

このメールサーバーではIMAPの情報は以下の通りです

パラメータ
IMAP_SERVER mail.5x2.de
IMAP_PORT 993
MAIL_USER メールアドレス (ex. xxxx@5x2.me)

技術情報

ImapLibrary2 を用いた
※ImapLibraryにバグがあるため、改修されたものである。

このkeywordは、TEXT MAILとHTML MAILで取得方法が異なります。
今回、取得するメールのフィルターキーワードとして senderを指定して取得します。

T-DASH

カスタム動作

以下設定なようをメール処理IMAP.yamlのファイルで保存する

ACT-CAT-CUSTOM-f3ef5f76-9206-4c08-9847-ecdcbfdebac2:
  action_category_name: メール処理IMAP
  icon: ''
  color: '#2f630e'
  custom_data:
    file_name: MailIMAP
    pip_list:
    - robotframework-imaplibrary2
    library_list:
    - ImapLibrary2
  actions:
    ACT-CUSTOM-8db3608b-cc10-4009-aeb1-8925be06aaa2:
      action_name: IMAPでTEXTメールを取得する
      action_type: operation
      action_format: sender=「設定値1」のTEXTメールを取得
      action_note: ''
      action_args:
      - value1
      action_def:
      - - Set Test Variable
        - ${IMAP_SERVER}
        - imap.example.com
      - - Set Test Variable
        - ${IMAP_PORT}
        - '993'
      - - Set Test Variable
        - ${MAIL_USER}
        - xxxxx@example.com
      - - Set Test Variable
        - ${MAIL_PASSWORD}
        - password
      - - ImapLibrary2.Open Mailbox
        - host=${IMAP_SERVER}
        - user=${MAIL_USER}
        - password=${MAIL_PASSWORD}
        - port=${IMAP_PORT}
        - is_secure=True
      - - '${LATEST} = '
        - ImapLibrary2.Wait For Email
        - sender=${value1}
      - - '${text} = '
        - ImapLibrary2.Get Email Body
        - ${LATEST}
      - - Set Suite Variable
        - ${share_value}
        - '${text} '
      - - Log
        - ${share_value}
    ACT-CUSTOM-255625f3-6009-4e41-984e-4acdef324438:
      action_name: IMAPでHTMLメールを取得する
      action_type: operation
      action_format: sender「設定値1」のHTMLメールを取得する
      action_note: ''
      action_args:
      - value1
      action_def:
      - - Set Test Variable
        - ${IMAP_SERVER}
        - imap.example.com
      - - Set Test Variable
        - ${IMAP_PORT}
        - '993'
      - - Set Test Variable
        - ${MAIL_USER}
        - xxxxx@example.com
      - - Set Test Variable
        - ${MAIL_PASSWORD}
        - password
      - - ImapLibrary2.Open Mailbox
        - host=${IMAP_SERVER}
        - user=${MAIL_USER}
        - password=${MAIL_PASSWORD}
        - port=${IMAP_PORT}
        - is_secure=True
      - - ${LATEST} =
        - ImapLibrary2.Wait For Email
        - sender=${value1}
      - - '${parts} = '
        - ImapLibrary2.Walk Multipart Email
        - ${LATEST}
      - - FOR
        - ${i}
        - IN RANGE
        - ${parts}
      - - ''
        - ImapLibrary2.Walk Multipart Email
        - ${LATEST}
      - - ''
        - ${ctype} =
        - ImapLibrary2.Get Multipart Content Type
      - - ''
        - Continue For Loop If
        - '''${ctype}'' != ''text/html'''
      - - ''
        - '${payload} = '
        - 'ImapLibrary2.Get Multipart Payload '
        - decode=True
      - - ''
        - Set Suite Variable
        - ${share_value}
        - ${payload}
      - - END
      - - Log
        - ${share_value}

次に、作成された IMAP.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートする

IMAPでTEXTメールを取得する

image.png

IMAPでHTMLメールを取得する

image.png

引数として、senderを指定することで、最新のメールを取得し、本文を変数${share_value}に格納します

スクリプト

TEXTメールを取得する

スクリプト
image.png

実行結果
image.png

HTMLメールを取得する

image.png

実行結果

image.png

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?