0

Ceci est probablement très simple mais je suis extrêmement nouveau à coder n'importe quoi, désolé à l'avance.Comment faire pour cliquer par programme sur un lien .zip dans un corps de message électronique

Actuellement, j'ai un bouton4 qui va lire dans ma boîte de réception pour les messages avec un certain sujet, si la condition est remplie, il affiche les propriétés de première classe dans une liste, mais je veux également télécharger le lien trouvé dans chaque email.

Il s'agit d'un lien .zip qui, lorsque le lien est cliqué à partir de l'intérieur de l'e-mail, il va télécharger le zip. Je veux qu'il télécharge automatiquement tous les liens trouvés quand on clique sur button4.

Je vais montrer mon code button4 et ensuite un exemple de ce que l'email est.

Code button4:

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!!"); 
     } 
    } 
} 

Exemple email:

NFIRS validation de fichier

Le service de validation de fichier NFIRS a terminé le traitement de vos fichiers. Veuillez suivre ce lien pour récupérer le fichier zip contenant vos résultats.

https://www.nfirs.fema.gov/biarchive/xxxxxxxxx_xxxxxxxxx.zip

Ce fichier sera supprimé au bout de 28 jours.

Si vous avez des questions, ne répondez pas à cet e-mail. Au lieu de cela, veuillez contacter le centre de support du NFIRS.

+0

Donc, ce "bouton4" vous donne une liste de messages qui répondent aux critères, non? Et vous aimeriez aussi télécharger le fichier ... ou quoi? Je ne suis pas tout à fait ce que vous voulez sortir de ce clic. – DonBoitnott

+0

@DonBoitnott oui il est mis dans la liste pour l'instant, mais la liste est hors de propos et peut être retiré plus tard, chaque message qui répond à ces critères aura 1 lien zip et je voudrais les télécharger tous automatiquement – RobertJRu

+0

Malheureusement, Ce ne sera pas trivial. Le lien semble être dans le corps, il faudra donc analyser le texte intégral du corps, identifier le lien et extraire l'adresse Web complète. Alimentez ces adresses dans [quelque chose comme ça] (https://stackoverflow.com/questions/525364/how-to-download-a-file-from-a-website-in-c-sharp#525372) pour obtenir le téléchargement et enregistrez-le. – DonBoitnott

Répondre

0

Ceci est essentiellement un double du @DonBoitnott lien a commenté les seules étapes supplémentaires que je prends est de mettre le corps de chaque e-mail dans une liste de propriétés de l'analyse et en vous assurant qu'il enregistre dans le même nom que l'URL a dans l'e-mail d'origine

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:\Users\Foo\Downloads\{0}.zip"), fileName); 
       prop.Name = fileName; 

       client.DownloadFile(link, saveTo); 
      } 
     } 
    } 

    private string searchForLink(string body) 
    { 
     return MyExtensions.Between(body, "results.\r\n\r\n", "\r\n\r\nThis file will"); 
    }