C# 单击临时电子邮件网站中的验证链接



我正在编写一个小应用程序,可以自动创建帐户。我使用网站 http://temp-mail.org 用于电子邮件地址生成。

目前在我的代码中,日志表明链接已被单击,但事实并非如此。我遇到的第一个问题是在注册时有 3 封电子邮件发送,并导致以下 HTML 代码。问题两者都没有id,唯一的区别是"标题主题"。

<tbody>
    <tr>
        <td>"PlayStation Network" &lt;sony@email.sonyentertainmentnetwork.com&gt;</td>
        <td>
            <a href="http://temp-mail.org/en/view/e9527b19d5db504182428bac583977fe"
               class="title-subject">Controleer je account.</a>
        </td>
        <td>...</td>
        <td class="text-center">
            <a href="http://temp-mail.org/en/view/e9527b19d5db504182428bac583977fe"
               class="link">
                <span class="glyphicon glyphicon-chevron-right"></span>
            </a>
        </td>
    </tr>
    <tr>
        <td>"PlayStation Network" &lt;Sony@email.sonyentertainmentnetwork.com&gt;</td>
        <td>
            <a href="http://temp-mail.org/en/view/d3b3a892daeb5c99d85f4c5999242664"
               class="title-subject">Je gebruikersnaam is bijg</a>
        </td>
        <td>...</td>
        <td class="text-center">
            <a href="http://temp-mail.org/en/view/d3b3a892daeb5c99d85f4c5999242664"
               class="link">
                <span class="glyphicon glyphicon-chevron-right"></span>
            </a>
        </td>
    </tr>
</tbody>

在电子邮件中有一个必须单击的链接,该链接具有以下HTML

<td align="center"
    width="150"
    height="40"
    bgcolor="#3071a3"
    style="-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; color: #ffffff; display: block;">
    <a href="https://account.sonyentertainmentnetwork.com/liquid/cam/account/email/validate-email.action?service-entity=np&amp;token=YTVhOTc4ZjItMDI230F3cH9ehcugYxy%2BC9YWHgnQ8l8lh2v%2F943yVVYQWQS4XUlJNMHt0cUlVMpBGAdc7TcwraMoF8K6CQr5QsfaDknPNIgmmWUGyM%2FcEF67%2BHk%3D&amp;request_locale=nl_NL"
       style="color: #ffffff; font-size:16px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; font-size:18px; text-decoration: none; line-height:40px; width:100%; display:inline-block">Nu bevestigen</a>
</td>

现在我尝试使用以下代码:

void DoConfirmation()
        {
            Log("Verifying Email...");
            NavigateAndWait("http://temp-mail.org");
            bool RecievedConfEmail = false;
            for (;;)
            {
                if (!RecievedConfEmail)
                {
                    HtmlElementCollection links = _WebDocument.GetElementsByTagName("A");
                    foreach (HtmlElement link in links)
                    {
                        if (link.InnerText.Equals("account"))
                            link.InvokeMember("Click");
                        Log("I clicked that email you asked");
                        RecievedConfEmail = true;
                        break;
                    }
                }
                else
                {
                    HtmlElementCollection links = _WebDocument.GetElementsByTagName("A");
                    foreach (HtmlElement link in links)
                    {
                        if (link.InnerText.Equals("Bevestigen"))
                            link.InvokeMember("Click");
                        Log("I clicked IN the Email #2");
                        return;
                    }
                }
                Wait(25);
            }
        }
因此,我尝试通过搜索"

帐户"一词来捕获第一封正确的电子邮件,并在第二封电子邮件中搜索"bevestigen"一词。即使日志显示链接已被单击,情况并非如此。

有人可以帮助我以更聪明和更强大的方式捕获正确的电子邮件并单击链接吗?

那是因为即使InnerText不等于(accountBevstigen),您仍在记录。查看您的 if 块。您还会退出foreach,因此只查看单个链接。在两个if语句后使用 {}。例如:

foreach (HtmlElement link in links)
{
    if (link.InnerText.Equals("account"))
    {
        link.InvokeMember("Click");
        Log("I clicked that email you asked");
        RecievedConfEmail = true;
        break;
    }
}

foreach (HtmlElement link in links)
{
    if (link.InnerText.Equals("Bevestigen"))
    {
        link.InvokeMember("Click");
        Log("I clicked IN the Email #2");
        return;
    }
}

最新更新