public string GetCurrentUserEmailAddressOrNull()
        {
            try
            {
                using (var currentUser = GenericComObjectWrapper.Create(_nameSpace.CurrentUser))
                {
                    if (currentUser.Inner != null)
                    {
                        using (var addressEntry = GenericComObjectWrapper.Create(currentUser.Inner.AddressEntry))
                        {
                            if (addressEntry.Inner != null)
                            {
                                return(OutlookUtility.GetEmailAdressOrNull(addressEntry.Inner, NullEntitySynchronizationLogger.Instance, s_logger) ?? string.Empty);
                            }
                        }
                    }
                }
            }
            catch (COMException ex)
            {
                s_logger.Error("Can't access currentuser email adress.", ex);
            }

            return(null);
        }
Exemple #2
0
        public Task <DistributionList> Map1To2(IDistListItemWrapper source, DistributionList target, IEntityMappingLogger logger, DistributionListSychronizationContext context)
        {
            target.Members.Clear();
            target.NonAddressBookMembers.Clear();
            target.Name        = source.Inner.DLName;
            target.Description = source.Inner.Body;

            try
            {
                using (var userPropertiesWrapper = GenericComObjectWrapper.Create(source.Inner.UserProperties))
                {
                    using (var userProperty = GenericComObjectWrapper.Create(userPropertiesWrapper.Inner.Find("NICKNAME")))
                    {
                        target.Nickname = userProperty.Inner?.Value.ToString();
                    }
                }
            }
            catch (COMException ex)
            {
                s_logger.Warn("Can't access UserProperty of Distribution List!", ex);
                logger.LogMappingWarning("Can't access UserProperty of Distribution List!", ex);
            }

            for (int i = 1; i <= source.Inner.MemberCount; i++)
            {
                try
                {
                    using (var recipientWrapper = GenericComObjectWrapper.Create(source.Inner.GetMember(i)))
                    {
                        var serverFileName = context.GetServerFileNameByEmailAddress(recipientWrapper.Inner.Address);
                        if (serverFileName != null)
                        {
                            var nameWithoutEmail       = OutlookUtility.RemoveEmailFromName(recipientWrapper.Inner);
                            var distributionListMember = new KnownDistributionListMember(recipientWrapper.Inner.Address, nameWithoutEmail, serverFileName);
                            target.Members.Add(distributionListMember);
                        }
                        else
                        {
                            var distributionListMember = new DistributionListMember(recipientWrapper.Inner.Address, recipientWrapper.Inner.Name);
                            target.NonAddressBookMembers.Add(distributionListMember);
                        }
                    }
                }
                catch (COMException ex)
                {
                    s_logger.Warn("Can't access member of Distribution List!", ex);
                    logger.LogMappingWarning("Can't access member of Distribution List!", ex);
                }
            }

            return(Task.FromResult(target));
        }
        private bool IsServerIdentityOrganizer(AppointmentItem appointment)
        {
            using (var organizerWrapper = GenericComObjectWrapper.Create(
                       OutlookUtility.GetEventOrganizerOrNull(appointment, NullEntitySynchronizationLogger.Instance, s_logger, _outlookMajorVersion)
                       ))
            {
                var organizerEmail =
                    OutlookUtility.GetEmailAdressOrNull(organizerWrapper.Inner, NullEntitySynchronizationLogger.Instance, s_logger) ??
                    OutlookUtility.GetSenderEmailAddressOrNull(appointment, NullEntitySynchronizationLogger.Instance, s_logger);

                return(string.Compare(organizerEmail, _serverEmailAddress, StringComparison.OrdinalIgnoreCase) == 0);
            }
        }
Exemple #4
0
        public Task <vCard> Map1To2(IDistListItemWrapper source, vCard target, IEntityMappingLogger logger, DistributionListSychronizationContext context)
        {
            target.Members.Clear();
            target.FormattedName = source.Inner.DLName;
            target.FamilyName    = source.Inner.DLName;

            target.AccessClassification = CommonEntityMapper.MapPrivacy1To2(source.Inner.Sensitivity);

            target.Categories.Clear();
            if (!string.IsNullOrEmpty(source.Inner.Categories))
            {
                Array.ForEach(
                    source.Inner.Categories.Split(new[] { CultureInfo.CurrentCulture.TextInfo.ListSeparator }, StringSplitOptions.RemoveEmptyEntries),
                    c => target.Categories.Add(c.Trim())
                    );
            }

            target.Notes.Clear();
            if (!string.IsNullOrEmpty(source.Inner.Body))
            {
                target.Notes.Add(new vCardNote(source.Inner.Body));
            }

            for (int i = 1; i <= source.Inner.MemberCount; i++)
            {
                try
                {
                    using (var recipientWrapper = GenericComObjectWrapper.Create(source.Inner.GetMember(i)))
                    {
                        var nameWithoutEmail = OutlookUtility.RemoveEmailFromName(recipientWrapper.Inner);
                        var targetMember     = CreateVCardMemberOrNull(recipientWrapper, nameWithoutEmail, context, logger, s_logger);
                        if (targetMember != null)
                        {
                            target.Members.Add(targetMember);
                        }
                    }
                }
                catch (COMException ex)
                {
                    s_logger.Warn("Can't access member of Distribution List!", ex);
                    logger.LogMappingWarning("Can't access member of Distribution List!", ex);
                }
            }

            return(Task.FromResult(target));
        }
        public SynchronizerFactory(
            Func <Guid, string> profileDataDirectoryFactory,
            ITotalProgressFactory totalProgressFactory,
            NameSpace outlookSession,
            TimeSpan calDavConnectTimeout,
            IDaslFilterProvider daslFilterProvider,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider)
        {
            if (outlookAccountPasswordProvider == null)
            {
                throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            }

            _outlookEmailAddress = string.Empty;
            try
            {
                using (var currentUser = GenericComObjectWrapper.Create(outlookSession.CurrentUser))
                {
                    if (currentUser.Inner != null)
                    {
                        using (var addressEntry = GenericComObjectWrapper.Create(currentUser.Inner.AddressEntry))
                        {
                            if (addressEntry.Inner != null)
                            {
                                _outlookEmailAddress = OutlookUtility.GetEmailAdressOrNull(addressEntry.Inner, NullEntitySynchronizationLogger.Instance, s_logger) ?? string.Empty;
                            }
                        }
                    }
                }
            }
            catch (COMException ex)
            {
                s_logger.Error("Can't access currentuser email adress.", ex);
            }

            _totalProgressFactory           = totalProgressFactory;
            _outlookSession                 = outlookSession;
            _calDavConnectTimeout           = calDavConnectTimeout;
            _daslFilterProvider             = daslFilterProvider;
            _outlookAccountPasswordProvider = outlookAccountPasswordProvider;
            _profileDataDirectoryFactory    = profileDataDirectoryFactory;
        }
Exemple #6
0
        private static void GetValidContactsFromXdb(XConnectClient client)
        {
            HttpServiceHelper obj = new HttpServiceHelper();
            var listOfEmails      = OutlookUtility.ReadEmailsFromInbox();
            var emailList         = JsonConvert.DeserializeObject <List <OutlookEmailModel> >(listOfEmails);

            if (emailList == null)
            {
                return;
            }

            bool isvalidUser = false;

            foreach (var outlookEmailModel in emailList)
            {
                isvalidUser = SearchContacts(client, outlookEmailModel.EmailFrom);
                if (isvalidUser)
                {
                    string LUISAppUrl = ConfigurationManager.AppSettings[Constants.CognitiveServiceOleChatLUISAppUrl];
                    string oleAppId   = ConfigurationManager.AppSettings[Constants.CognitiveServiceOleChatOleAppId];
                    string oleAppkey  = ConfigurationManager.AppSettings[Constants.CognitiveServiceOleChatOleAppkey];

                    string apiToTrigger = ConfigurationManager.AppSettings[Constants.APIToTriggerGoals];

                    var query = String.Concat(LUISAppUrl, oleAppId, "", oleAppkey,
                                              "" + outlookEmailModel.EmailBody);
                    var data = obj.GetServiceResponse <LuisResult>(query, false);
                    if (data != null)
                    {
                        outlookEmailModel.Intent = data.TopScoringIntent.Intent.ToLower();
                        // Call  sitecore api controller to trigger call;
                        obj.HttpGet(apiToTrigger);
                    }
                }
            }
        }