public static int GetMimeDsnRecipientStatusCode(MapiDiagnosticCode diagCode, NdrReasonCode reasonCode) { switch (diagCode) { case MapiDiagnosticCode.NoDiagnostic: switch (reasonCode) { case NdrReasonCode.TransferImpossible: return(510); case NdrReasonCode.ConversionNotPerformed: case NdrReasonCode.PhysicalRenditnNotDone: return(565); case NdrReasonCode.PhysicalDelivNotDone: return(520); case NdrReasonCode.RestrictedDelivery: return(530); case NdrReasonCode.DirectoryOperatnFailed: return(443); } return(540); case MapiDiagnosticCode.OrNameUnrecognized: case MapiDiagnosticCode.RecipientUnavailable: case MapiDiagnosticCode.MailOfficeIncorOrInvd: case MapiDiagnosticCode.MailRecipientDeceased: case MapiDiagnosticCode.MailUnclaimed: case MapiDiagnosticCode.MailRecipientTravelling: case MapiDiagnosticCode.MailRecipientDeparted: return(510); case MapiDiagnosticCode.OrNameAmbiguous: return(514); case MapiDiagnosticCode.MtsCongested: return(445); case MapiDiagnosticCode.LoopDetected: case MapiDiagnosticCode.RedirectionLoopDetected: return(446); case MapiDiagnosticCode.MaximumTimeExpired: return(447); case MapiDiagnosticCode.EitsUnsupported: case MapiDiagnosticCode.MailOrganizationExpired: case MapiDiagnosticCode.MailRefused: return(530); case MapiDiagnosticCode.ContentTooLong: case MapiDiagnosticCode.ConversionUnsubscribed: case MapiDiagnosticCode.ContentSyntaxInError: case MapiDiagnosticCode.NumberConstraintViolatd: case MapiDiagnosticCode.LineTooLong: case MapiDiagnosticCode.PageTooLong: return(560); case MapiDiagnosticCode.ImpracticalToConvert: return(563); case MapiDiagnosticCode.ProhibitedToConvert: case MapiDiagnosticCode.ConversionLossProhib: return(562); case MapiDiagnosticCode.ParametersInvalid: return(554); case MapiDiagnosticCode.LengthConstraintViolatd: return(534); case MapiDiagnosticCode.ContentTypeUnsupported: case MapiDiagnosticCode.RenditionUnsupported: return(561); case MapiDiagnosticCode.TooManyRecipients: return(553); case MapiDiagnosticCode.NoBilateralAgreement: return(555); case MapiDiagnosticCode.CriticalFuncUnsupported: return(533); case MapiDiagnosticCode.PictorialSymbolLost: case MapiDiagnosticCode.PunctuationSymbolLost: case MapiDiagnosticCode.AlphabeticCharacterLost: case MapiDiagnosticCode.MultipleInfoLosses: return(464); case MapiDiagnosticCode.ReassignmentProhibited: return(573); case MapiDiagnosticCode.ExpansionProhibited: return(572); case MapiDiagnosticCode.SubmissionProhibited: return(571); case MapiDiagnosticCode.ExpansionFailed: return(524); case MapiDiagnosticCode.MailAddressIncorrect: case MapiDiagnosticCode.MailAddressIncomplete: return(513); case MapiDiagnosticCode.MailRecipientUnknown: return(511); case MapiDiagnosticCode.MailRecipientMoved: case MapiDiagnosticCode.MailNewAddressUnknown: return(516); case MapiDiagnosticCode.SecureMessagingError: return(570); case MapiDiagnosticCode.BadDestinationSystemAddress: return(512); } return(500); }
public static void GetMapiDsnRecipientStatusCode(string statusString, out MapiDiagnosticCode diagCode, out NdrReasonCode reasonCode, out int statusCode) { diagCode = MapiDiagnosticCode.NoDiagnostic; reasonCode = NdrReasonCode.TransferFailed; EnhancedStatusCode enhancedStatusCode; string[] array; int num; int num2; int num3; if (!EnhancedStatusCode.TryParse(statusString, out enhancedStatusCode) || (array = statusString.Split(new char[] { '.' })).Length != 3 || !int.TryParse(array[0], out num) || !int.TryParse(array[1], out num2) || !int.TryParse(array[2], out num3)) { StorageGlobals.ContextTraceError <string>(ExTraceGlobals.CcInboundMimeTracer, "DsnMdnUtil::GetMapiDsnRecipientStatusCode: incorrect status string, {0}", statusString); throw new ConversionFailedException(ConversionFailureReason.CorruptContent, null); } switch (num2) { case 1: switch (num3) { case 1: diagCode = MapiDiagnosticCode.MailRecipientUnknown; reasonCode = NdrReasonCode.TransferImpossible; goto IL_288; case 2: diagCode = MapiDiagnosticCode.BadDestinationSystemAddress; goto IL_288; case 3: diagCode = MapiDiagnosticCode.MailAddressIncorrect; goto IL_288; case 4: diagCode = MapiDiagnosticCode.OrNameAmbiguous; goto IL_288; case 6: diagCode = MapiDiagnosticCode.MailRecipientMoved; goto IL_288; } diagCode = MapiDiagnosticCode.OrNameUnrecognized; break; case 2: switch (num3) { case 1: diagCode = MapiDiagnosticCode.MailRefused; break; case 2: diagCode = MapiDiagnosticCode.LengthConstraintViolatd; break; case 3: diagCode = MapiDiagnosticCode.LengthConstraintViolatd; break; case 4: diagCode = MapiDiagnosticCode.ExpansionFailed; break; default: diagCode = MapiDiagnosticCode.MailRefused; break; } break; case 3: switch (num3) { case 1: diagCode = MapiDiagnosticCode.MailRefused; break; case 2: break; case 3: diagCode = MapiDiagnosticCode.CriticalFuncUnsupported; break; case 4: diagCode = MapiDiagnosticCode.LengthConstraintViolatd; break; case 5: diagCode = MapiDiagnosticCode.LoopDetected; break; default: diagCode = MapiDiagnosticCode.MailRefused; break; } break; case 4: switch (num3) { case 0: case 4: goto IL_288; case 3: reasonCode = NdrReasonCode.DirectoryOperatnFailed; goto IL_288; case 6: case 8: diagCode = MapiDiagnosticCode.LoopDetected; goto IL_288; case 7: diagCode = MapiDiagnosticCode.MaximumTimeExpired; goto IL_288; } diagCode = MapiDiagnosticCode.MtsCongested; break; case 5: switch (num3) { case 3: diagCode = MapiDiagnosticCode.TooManyRecipients; goto IL_288; case 4: diagCode = MapiDiagnosticCode.ParametersInvalid; goto IL_288; } diagCode = MapiDiagnosticCode.NoBilateralAgreement; break; case 6: switch (num3) { case 1: diagCode = MapiDiagnosticCode.ContentTypeUnsupported; break; case 2: diagCode = MapiDiagnosticCode.ProhibitedToConvert; break; case 3: diagCode = MapiDiagnosticCode.ImpracticalToConvert; break; case 4: diagCode = MapiDiagnosticCode.MultipleInfoLosses; break; case 5: reasonCode = NdrReasonCode.ConversionNotPerformed; break; default: diagCode = MapiDiagnosticCode.ContentTypeUnsupported; break; } break; case 7: switch (num3) { case 1: diagCode = MapiDiagnosticCode.SubmissionProhibited; break; case 2: diagCode = MapiDiagnosticCode.ExpansionProhibited; break; case 3: diagCode = MapiDiagnosticCode.ReassignmentProhibited; break; default: diagCode = MapiDiagnosticCode.SecureMessagingError; break; } break; } IL_288: if (num2 < 0 || num2 > 9) { num2 = 0; } if (num3 < 0 || num3 > 9) { num3 = 0; } statusCode = num * 100 + num2 * 10 + num3; }