私が実装した解決策は、mailcatcher APIを使用することでした。少し下にスクロールすると、API について次のことがわかります。
RESTful な URL スキーマとは、/messages からメッセージのリストを JSON 形式でダウンロードし、各メッセージのメタデータを /messages/:id.json でダウンロードし、関連部分を /messages/:id.html と /messages/:id でダウンロードできることを意味します。デフォルトの HTML およびプレーン テキスト バージョンの場合は .plain、CID による個々の添付ファイルの場合は /messages/:id/:cid、または /messages/:id.source のメッセージ全体。
したがって、最初に json 応答全体を取得し、それを解析して最新の電子メール ID を取得します。
// Returns the last email id
function(emails, user) {
var email, recipient;
for(var i = emails.length - 1; i >= 0; i--) {
email = emails[i];
for(var j = 0; j < email.recipients.length ; j++) {
recipient = email.recipients[j];
if(recipient == "<"+user+">") {
return email.id;
}
}
}
};
その電子メールIDを使用して、ヒットすることで電子メールの本文を取得できます/messages/:id.plain
(もちろん、電子メールのソースコードまたはHTMLでレンダリングされた電子メールを取得するなどのバリエーションがあり、メッセージのみが必要でした)その後、本文を解析して必要なものを取得できます、コードは次のとおりです。
browser.driver.get(mailcatcherUrl+"/messages");
browser.driver.findElement(by.tagName('body')).getText().then(function(response) {
var emails, lastEmailId, partialTokens ;
emails = JSON.parse(response);
lastEmailId = getLastEmailId(emails, user);
browser.driver.get(mailcatcherUrl+"/messages/"+lastEmailId+".plain");
browser.driver.findElement(by.tagName('body')).getText().then(function(lastEmail) {
// use latestEmail to get what you want.
});
});
そして乾杯!