24. April 2014 18:50
Hallo,
hast du Exchange 2013 im Einsatz? Wenn ja, ist das so eine Sache.
Hintergrund ist wohl, das Exchange 2013 ja keine herkömmlichen "Public Folder" verwendet. Das die E-Mail nicht angezeigt werden kann liegt vermutlich daran, dass das System mit der gespeicherten Entry-ID der E-Mail nicht umgehen kann. Ist das nämlich Ex2013 wird die ID der EMAIL an den ersten 22 Bytes mit einer feststehenden Ziffernfolge ersetzt. Diese Ziffernfolge stellt eigentlich die ID der Public Folder-Verzeichnisses in Exchange 2013 dar (letzte Stelle eine 3). Das ist für die Findung des Orders, unter dessen Struktur dein Storage usw. wohnen auch in Orndung.
Allerdings:
Die Entry-Id der E-Mail in dieser Struktur stimmt nur ans den ersten 21 Bytes überein, dessen 22 Stelle ist eine 9 und keine 3. Danach folgt die eigentliche ID der E-Mail.
Die entstprechenden "Dll"-Datei im AddIn-Verzeichnis "C:\Program Files (x86)\Microsoft Dynamics NAV\71\RoleTailored Client\Add-ins\Office\Microsoft.Dynamics.NAV.Integration.Office.dll" hat aber diese "3" fest verdrahtet.
Auszug aus der DLL:public static class OutlookHelper
{
private const string OutlookApplicationProgId = "Outlook.Application";
private const string OutlookProcessName = "OUTLOOK";
private const string ExchangePublicFolderGuid = "1A447390AA6611CD9BC800AA002FC45A";
private const byte ExchangeFolderTypePublic = (byte) 3;
public static string PatchExchange2013WebServicesPublicFolderItemEntryId(string itemEntryId)
{
byte[] numArray = Enumerable.ToArray<byte>(Enumerable.Concat<byte>(Enumerable.Concat<byte>((IEnumerable<byte>) new byte[4], OutlookHelper.ConvertFromHexStringToByteArray("1A447390AA6611CD9BC800AA002FC45A")), (IEnumerable<byte>) new byte[1]
{
(byte)
3 }));
byte[] inArray = Convert.FromBase64String(itemEntryId);
for (int index = 0; index < numArray.Length && index < inArray.Length; ++index)
inArray[index] = numArray[index];
return Convert.ToBase64String(inArray);
}
.. Fett,kursiv,unterstrichen und hervorgehoben: Des is der Lump
Die Funktion dieser DLL " PatchExchange2013WebServicesPublicFolderItemEntryId" wird bei 2013 R2 erst ab RU 5 einesetzt.
Ich hab mir da eing eigenen DLL geschrieben und die 3 mit 9 ersetzt. Schon klappt es mit dem Nachbarn.
Wie gesagt. Das betrifft Exchange 2013 und NAV 2013 R2. Ich vermute aber, das in NAV 2013 genauso ist.
Ich werde das im Laufe des morgigen Tages mal an MS melden.
Wobei ich mich schon wunderte, ob ich der einzige bin, der Exchange 2013 mit E-Protokollierung und NAV 2013 einsetzt.
LG Micha