none
Non ha effetto in Outllok aver aggiornarnato il TNEF da un file EML iniziale RRS feed

  • Domanda

  • Salve. Ho necessità di aggiornare il TNEF da un file EML da restituire poi (così aggiornato) ad Exchange. Uso le api Microsoft.Exchange.Data.* e nella fattispecie è questo lo stralcio di codice C# da me usato:

    ---------------------------------------------

    //accesso al file EML da aggiornare nel suo TNEF

    FileStream fsFileStreamToSpp = new FileStream(TEMPEMLMSG, FileMode.Open);

    EmailMessage emailItem = EmailMessage.Create(fsFileStreamToSpp);
    reader = new TnefReader(emailItem.TnefPart.GetContentReadStream(),
                                             0,
                                             TnefComplianceMode.Loose);

    tnefPart = emailItem.TnefPart;
    writer = new TnefWriter(tnefPart.GetContentWriteStream(tnefPart.ContentTransferEncoding),
                                           reader.AttachmentKey,
                                           0,
                                           TnefWriterFlags.NoStandardAttributes);

    //aggiornamento del TNEF
    while (reader.ReadNextAttribute())
    {

         if (reader.AttributeTag == TnefAttributeTag.MapiProperties)
         {

                    //aggiornamento del TNEF - le MAPI properties - è solo indicativo - molte più MAPI properties sono state aggiornate
                   writer.StartAttribute(TnefAttributeTag.MapiProperties, TnefAttributeLevel.Message);                                        
                   writer.WriteProperty(TnefPropertyTag.AlternateRecipientAllowed,true);

          }

    }

    //viene salvato il tnef nel messaggio
    if (null != writer)
    {
          writer.Flush();
          writer.Close();
          writer.Dispose();
          writer = null;
    }
    if (null != reader)
    {
          reader.Close();
          reader.Dispose();
          reader = null;
    }

    //trasferimento verso Exchange

    String sPath = "EXCHANGE_PICKUP_DIR" + Guid.NewGuid().ToString() + ".eml";                                   
    FileStream fsFileStream = new FileStream(sPath, FileMode.OpenOrCreate);
    //
    emailItem.MimeDocument.WriteTo(fsFileStream);
    fsFileStream.Flush();

    Dove TEMPEMLMSG è un file path dove risiede il file eml di partenza ed EXCHANGE_PICKUP_DIR è la pickup dir di Exchange. L'esempio è solo indicativo e serve per aggiornare solo una MAPI property (TnefPropertyTag.AlternateRecipientAllowed), anche se l'aggiornamento ha coinvolto quasi la totalità di MAPI properties presenti. Il fatto è che ho controllato che il TNEF risulti aggiornato prima di essere gestito da Exchange ed effettivamente lo è. Solo che quando ricevo la email in Outlook si perde traccia di tutti questi aggiornamenti. Dove è che sbaglio?

    Se potete aiutarmi mi fareste felice.

    Un Saluto ed un grazie in anticipo.

    giovedì 22 giugno 2017 17:46

Tutte le risposte

  • Ciao, intervengo solo per dirti che secondo me farai fatica a trovare una soluzione qui...qui risolviamo problemi sistemistici sui sistemi Exchange..se tu ti fai il tuo codicino e lo dai in pasto al server e non si comporta come dovrebbe ci va dietro un grosso BOH! Dubito che tu possa trovare un aiuto gratuito da qualcuno...già è difficile trovare sistemisti che mettono le mani sul C...poi tu lo vuoi applicato ad Exchange....magari puoi provare sui forum americani che hanno un parco utenti 100 volte il nostro..ma resto scettico anche li...

    ciao.

    A.

    venerdì 23 giugno 2017 14:18
    Moderatore