Exemple #1
0
        private async Task <EmailVerificationStatus> GetStatusAsync(string emailAddress, CancellationToken ct)
        {
            var request = new GetIdentityVerificationAttributesRequest
            {
                Identities = new List <string> {
                    emailAddress
                }
            };

            var response = await amazonSES.GetIdentityVerificationAttributesAsync(request, ct);

            var status = response.VerificationAttributes.FirstOrDefault(x => string.Equals(emailAddress, x.Key, StringComparison.OrdinalIgnoreCase));

            return(MapStatus(status.Value.VerificationStatus));
        }
        public static void VerifyEmails(params string[] emails)
        {
            // start verification process for all email addresses
            foreach (var email in emails)
            {
                _client.VerifyEmailIdentityAsync(new VerifyEmailIdentityRequest
                {
                    EmailAddress = email
                });
            }

            // wait until all are verified, maximum wait time of two minutes
            bool     allVerified = true;
            DateTime latest      = DateTime.Now + TimeSpan.FromMinutes(2);

            while (DateTime.Now < latest)
            {
                // get verification status for all emails
                var attr = _client.GetIdentityVerificationAttributesAsync(new GetIdentityVerificationAttributesRequest
                {
                    Identities = new List <string>(emails)
                });
                attr.Wait();
                var verificationAttributes = attr.Result.VerificationAttributes;

                // test verification status
                allVerified = true;
                foreach (var email in emails)
                {
                    var attribute = verificationAttributes[email];
                    if (attribute.VerificationStatus != VerificationStatus.Success)
                    {
                        allVerified = false;
                    }
                }

                if (allVerified)
                {
                    break;
                }

                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(15));
            }

            if (!allVerified)
            {
                throw new InvalidOperationException("Not all email addresses have been verified");
            }
        }
Exemple #3
0
        private async Task <IntegrationStatus> GetStatusAsync(List <string> fromEmails,
                                                              CancellationToken ct)
        {
            var request = new GetIdentityVerificationAttributesRequest
            {
                Identities = fromEmails.ToList()
            };

            var response = await amazonSES.GetIdentityVerificationAttributesAsync(request, ct);

            var statuses = new List <IntegrationStatus>();

            foreach (var emailAddress in fromEmails)
            {
                var status = IntegrationStatus.Pending;

                if (response.VerificationAttributes.TryGetValue(emailAddress, out var result))
                {
                    status = MapStatus(result.VerificationStatus);
                }

                if (status == IntegrationStatus.VerificationFailed)
                {
                    return(status);
                }

                statuses.Add(status);
            }

            if (statuses.All(x => x == IntegrationStatus.Verified))
            {
                return(IntegrationStatus.Verified);
            }

            return(IntegrationStatus.Pending);
        }