I'm tryin to parse a specific string from an email(gmail
) using the ImapLibrary2 in Robot Framework.
Here is the code I'm trying to use -
Email Parsing
Open Mailbox host=imap.gmail.com user=testing.abc@gmail.com password=Secret
${LATEST} = Wait For Email sender=support@abc.net timeout=60
${HTML} = Get Email Body ${LATEST}
${Paser_Body}= Get Regexp Matches ${HTML} ^.*([a-zA-Z]+(\d[a-zA-Z]+)+).*$
Log ${Paser_Body}
Close Mailbox
And the email body is-
Reset Your Password
To reset the password for the user account associated with your email, use the code below and follow the procedure on the application. If you don't want to reset your password, please disregard this email.
ASNjfO24j6RrwKg6PP3scO1EeivA88
Thanks,
Abc Support Team
I want to extract the token ASNjfO24j6RrwKg6PP3scO1EeivA88
from the email, but run the code, I get a null output.
Output-
Starting test: Test.Email Parsing
20210317 11:53:21.493 : INFO : ${LATEST} = 29
20210317 11:53:21.630 : INFO : ${HTML} =
<tbody>
<tr>
<td style="padding:40px 0 0 0;">
<p style="color:#000;font-size: 16px;line-height:24px;font-family:'HelveticaNeue','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:no...
20210317 11:53:21.630 : INFO : ${Paser_Body} = []
20210317 11:53:21.630 : INFO : []
Ending test: Test .Email Parsing
What am I doing wrong?
I was able to parse the required element by-
Step 1: Remove unnecessary string using Regular Expression
Step 2: Splitting the string
Step 3: Getting the required element from the list
Here is the sample code-
Open Mailbox host=imap.gmail.com user=testing.abc@gmail.com password=Secret
${LATEST} = Wait For Email sender=support@abc.net timeout=60
${HTML} = Get Email Body ${LATEST}
${Paser_Body}= Remove String Using Regexp ${HTML} (<.*?>) #remove tags
${Parsed_Token}= Split String ${Parser_Body_Text}
${Parsed_Token}= Get From List ${Parsed_Token} 20 #position in the list
Close Mailbox