0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MailHoge API を利用して、Curlコマンドからメールを取得する方法

Posted at

WebAPIのテスト一環として、認証確認メール等でメールからの情報取得を行いたい時になどに利用して記事にします。
既に、コマンドラインからメールを送信するなどの記事が出ているので、ここでは取得について記載します。

MailHogのDockerコンテナで送信されたメールの内容をコマンドラインから確認するには、MailHogのAPIを使用する方法が一般的のようです。
MailHogはHTTP APIを提供しており、このAPIを通じてメールの情報を取得することができます。

/api/v2/messages エンドポイント

/api/v2/messagesエンドポイントを使用してメールを取得する基本的なcURLコマンドです。

例)保存されているすべてのメールをJSON形式で返却

curl "http://localhost:8025/api/v2/messages"

パラメータの詳細

パラメータ 説明
start 取得するメールの開始インデックスを指定します(デフォルトは0です)
limit 取得するメールの数を指定します(デフォルトは50です)

例)最初の100件のメールを取得したい場合

curl "http://localhost:8025/api/v2/messages?start=0&limit=100"

レスポンスデータ

各メールオブジェクトは、ID、From、To、およびContent(ヘッダー、ボディ、サイズ、MIMEタイプが含まれる)などの情報を含んでいます。

{
  "total": 200,
  "count": 100,
  "start": 0,
  "items": [
    {
      "ID": "message-id",
      "From": "from@example.com",
      "To": ["to@example.com"],
      "Content": {
        "Headers": {
          "Subject": ["Email Subject"],
          "Date": ["Date"],
          "Other-Headers": ["Header Value"]
        },
        "Body": "Encoded body content",
        "Size": 1234,
        "MIME": "MIME type"
      },
      "Created": "2020-01-01T12:00:00Z"
    }
  ]
}

/api/v2/search エンドポイント

MailHogの/api/v2/searchエンドポイントを使用することで、特定の条件に基づいてメールを検索することができます。このAPIは主にメールのFromToSubjectフィールドに対する検索をサポートしています。

/api/v2/searchエンドポイントは、クエリパラメータとしてkind(検索するフィールド)、query(検索クエリ)、および任意でstartlimit(ページネーションのためのパラメータ)を受け取ります。

例)特定の送信者からのメールを検索

curl "http://localhost:8025/api/v2/search?kind=from&query=example@example.com"

例)特定の受信者に宛てたメールを検索

curl "http://localhost:8025/api/v2/search?kind=to&query=recipient@example.com"

例)メール本文に特定の単語が含まれているメールを検索

curl "http://localhost:8025/api/v2/search?kind=containing&query='important'"

パラメータの詳細

パラメータ 説明
kind 検索するメールのフィールドを指定します。fromtocontainingのいずれかを指定可能です
query 検索クエリとして、実際の検索文字列を指定します
start 検索結果の開始インデックスを指定します(デフォルトは0)
limit 返されるメールの最大数を指定します(デフォルトは100)

WebAPIテストツールなどからの利用

以下に、WebAPIテストツールである Step/CI の利用例を挙げておきます。

指定したメールアドレス宛の直近のメールの取得

# 送信済みメールを取得する
name: MailHoge API Tests
version: '1.0'
tests:
  user_registration:
    steps:
      # 該当するアカウント宛の送信済みメールを取得する
      - name: Get Registration confirmation email
        http:
          url: http://localhost:8025/api/v2/search
          method: GET
          params:
            kind: to
            query: ${{env.toUserAccount}}
            start: 0
            limit: 1
          captures:
            mail:
              jsonpath: $.items.0

以上

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?