如何通过编程单击电子邮件主体中的.zip链接



这可能很简单,但是我对任何编码都非常新,对不起。

目前,我有一个按钮4,该按钮将通过我的收件箱读取具有特定主题的消息,如果满足条件,它将在listView中显示消息第一类属性,但我希望它也下载每个电子邮件中的链接。/p>

这是一个.zip链接,当从电子邮件中单击链接时,它将下载zip。我希望它自动下载单击按钮4时找到的所有链接。

我将显示我的按钮4代码,然后显示电子邮件是什么。

按钮4代码:

private void button4_Click(object sender, EventArgs e)
{
    EmailConnect();
    TimeSpan ts = new TimeSpan(0, -2, 0, 0);
    DateTime date = DateTime.Now.Add(ts);
    SearchFilter.IsGreaterThanOrEqualTo filter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, date);
    if (service != null)
    {
        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, filter, new ItemView(50));
        foreach (Item item in findResults)
        {
            EmailMessage message = EmailMessage.Bind(service, item.Id);
            string subject = message.Subject.ToString();
            if (subject.Contains("NFIRS File Validation"))
            {
                ListViewItem listitem = new ListViewItem(new[]
                {message.DateTimeReceived.ToString(), message.From.Name.ToString() + "(" + message.From.Address.ToString() + ")", message.Subject, ((message.HasAttachments) ? "Yes" : "No")});
                lstMsg.Items.Add(listitem);
            }
        }
        
        if (findResults.Items.Count <= 0)
        {
            lstMsg.Items.Add("No Messages found!!");
        }
    }
}

示例电子邮件:

nfirs文件验证

NFIRS文件验证服务已完成处理您的文件。请按照此链接检索包含您结果的zip文件。

https://www.nfirs.fema.gov/biarchive/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

此文件将在28天后删除。

如果您有任何疑问,请不要回复此电子邮件。相反,请联系NFIRS支持中心。

这基本上是链接的重复@donboitnott评论我要采取的唯一额外步骤就是将每个电子邮件的主体放入属性列表中,以解析它并确保其保存为相同FILENAME与原始电子邮件中的FileName一样

    private void handleLinks(List<EmailProperties> properties)
    {
        using (WebClient client = new WebClient())
        {
            foreach (var prop in properties)
            {
                string link = searchForLink(prop.Body);
                string fileName = MyExtensions.Between(link, "https://www.nfirs.fema.gov/biarchive/", ".zip");
                string saveTo = string.Format((@"C:UsersFooDownloads{0}.zip"), fileName);
                prop.Name = fileName;
                client.DownloadFile(link, saveTo);
            }
        }
    }
    private string searchForLink(string body)
    {
        return MyExtensions.Between(body, "results.rnrn", "rnrnThis file will");
    }

最新更新