Bagaimana saya bisa mengetahui bahwa dua email itu sama dari dua kotak surat yang berbeda?

Jika saya mengirim email yang sama ke dua kotak surat yang berbeda, saya ingin mengetahui apakah ini email yang sama.

Masalahnya adalah itemId untuk kedua email tersebut berbeda. Dan saya tidak dapat menemukan cara untuk mendapatkan pengenal unik dari dua email yang identik.

Dari objek Office di JS, saya hanya mendapatkan itemId (bervariasi) melalui : Office.context.mailbox.item.itemId : Dokumentasi

Jadi saya mencoba mencari sesuatu yang lain dari EWS Managed API melalui:

EmailMessage.Bind(service, mail.ItemId, new PropertySet(ItemSchema.Id));

Namun saya tidak dapat menemukan properti yang berguna dari ItemSchema. (Dokumentasi ItemSchema)

Bagaimana saya bisa mengetahui bahwa dua email itu sama padahal keduanya berada di dua kotak surat yang berbeda?

Apakah ada cara untuk membandingkan dua id?


person Elfayer    schedule 08.02.2016    source sumber
comment
@MrPiao Jika Anda membaca kode yang saya berikan, saya menggunakan objek Office yang berasal dari konteks aplikasi office365.   -  person Elfayer    schedule 14.02.2016
comment
Kamu benar, kesalahanku.   -  person MrPiao    schedule 18.02.2016


Jawaban (2)


Tidak ada jawaban 100% untuk ini. Mereka sebenarnya adalah dua salinan terpisah, jadi sebenarnya tidak ada hubungan di antara keduanya. Anda mungkin dapat mengambil ID pesan RFC 822 (coba properti InternetMessageHeaders) dan membandingkannya, namun Anda berasumsi bahwa tidak ada yang mengubah nilai tersebut sebelum Anda mengambilnya.

person Jason Johnston    schedule 08.02.2016
comment
Apa yang bisa mengubah Message-ID ? - person Elfayer; 08.02.2016
comment
Agen transportasi, salah satu server dalam rantai pengiriman (meskipun mungkin tidak seharusnya demikian), aplikasi lain yang mengakses pesan, dll. - person Jason Johnston; 08.02.2016

Saya ingin menambahkan beberapa kode ke jawaban @JasonJohnston.

C#

[HttpPost]
public List<InternetMessageHeader> GetMailHeader(MailRequest request) {
    ExchangeService service = new ExchangeService();
    service.Credentials = new OAuthCredentials(request.AuthenticationToken);
    service.Url = new Uri(request.EwsUrl);

    ItemId id = new ItemId(request.ItemId);
    EmailMessage email = EmailMessage.Bind(service, id, new PropertySet(ItemSchema.InternetMessageHeaders));

    if (email.InternetMessageHeaders == null)
        return null;

    return email.InternetMessageHeaders.ToList();
}

JS (menggunakan AngularJS di sini, tetapi Anda mengerti maksudnya)

// Request headers from server
getMailHeader()
  .then(function(response) {
    var headers = response.data;
    var messageId = findHeader("Message-ID"); // Here you get the Message-ID

    function findHeader(name) {
      for (var i in headers) {
        if (name == headers[i].Name) {
          return headers[i].Value;
        }
      }
      return null;
    }
  }, function(reason) {
    console.log(reason);
  });

function getMailHeader() {
  var promise = $q(function(resolve, reject) {
    // Office.context.mailbox.getCallbackTokenAsync(callback);
    outlookService.getCallbackTokenAsync(function(asyncResult, userContext) {
      if (asyncResult.status == "succeeded") {
        $http({
          method: "POST",
          url: serverUrl + "/api/exchange/getMailHeader",
          data: JSON.stringify({
            authenticationToken: asyncResult.value,
            ewsUrl: outlookService.ewsUrl, // Office.context.mailbox.ewsUrl
            itemId: outlookService.itemId // Office.context.mailbox.item.itemId
          })
        }).then(resolve, reject);
      } else {
        reject("ERROR");
      }
    });
  });
  return promise;
}
person Elfayer    schedule 09.02.2016