コード例 #1
0
ファイル: sendMail.cs プロジェクト: GavL89/AWSAccountFactory
        public JObject FunctionHandler(JObject input)
        {
            LambdaLogger.Log(input.ToString());
            AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient();

            SendEmailRequest request = new SendEmailRequest()
            {
                Destination = new Destination {
                    ToAddresses = new List <string> {
                        input.SelectToken("EventData.emailAddress").ToString()
                    },
                    CcAddresses = new List <string> {
                        Environment.GetEnvironmentVariable("emailAdmin")
                    }
                },
                Message = new Message {
                    Body = new Body {
                        Html = new Content {
                            Charset = "UTF-8",
                            Data    = string.Format("Hi,<br /><br />Your new AWS Account is in the process of being provisioned and should be available in the next 30 minutes.<br /><br />You'll be able to authenticate to your account by browsing to {0} and selecting the account {1}.<br /><br />Remember, you have any questions about building on the cloud please reach out!<br /><br />Cheers,<br />Gavin<br />Lead Cloud Architect<br /><br />-------------------------------<br /><br />Account Details<br />Account ID: {2}<br />Account Name: {3}<br />Role Name: {1}", Environment.GetEnvironmentVariable("awsLogin"), input.SelectToken("EventData.roleName"), input.SelectToken("CreateAccountResponse.CreateAccountStatus.AccountId"), input.SelectToken("CreateAccountResponse.CreateAccountStatus.AccountName"))
                        }
                    },
                    Subject = new Content {
                        Charset = "UTF-8",
                        Data    = "Your Sandbox AWS Account is almost ready!"
                    }
                },
                Source = Environment.GetEnvironmentVariable("SESFrom")
            };

            SendEmailResponse response = client.SendEmailAsync(request).Result;

            LambdaLogger.Log(JObject.FromObject(response).ToString());

            return(input);
        }
コード例 #2
0
        public async Task <SendEmailResponse> SendEmailAsync(SendEmailDetails details)
        {
            ///<summary>
            ///Api generada en SendGrid
            /// </summary>
            var apiKey = _config["SendGrid:ApiKey"];
            ///<summary>
            ///Clase SendGridClient que requiere como parámetros apiKey
            ///Posee 4 sobrecargas para más información navegar dentro de la clase.
            /// </summary>
            var client = new SendGridClient(apiKey);
            //From
            var from = new EmailAddress(details.FromEmail, details.FromName);
            //Subject
            var subject = details.Subject;
            //To
            var to = new EmailAddress(details.ToEmail, details.ToName);
            //Content
            var plainTextContent = details.BodyContent;
            //Crea la clase email lista para enviar
            var msg = MailHelper.CreateSingleEmail(from,
                                                   to,
                                                   subject,
                                                   //Texto plano
                                                   details.IsHtml ? null : details.BodyContent,
                                                   //Html content
                                                   details.IsHtml ? details.BodyContent : null);


            var response = await client.SendEmailAsync(msg);

            ///<summary>
            ///Si el mail es aceptado exitosamente
            /// </summary>

            if (response.StatusCode == System.Net.HttpStatusCode.Accepted)
            {
                return(new SendEmailResponse());
            }

            ///<summary>
            ///De lo contrario se ejecutará la respuesta al error
            /// </summary>
            try
            {
                var bodyResult = await response.Body.ReadAsStringAsync();

                //Deserializar la respuesta

                var sendGridResponse = JsonConvert.DeserializeObject <SendGridResponse>(bodyResult);

                //Agregar errores a la lista
                var errorResponse = new SendEmailResponse
                {
                    Errors = sendGridResponse?.Errores.Select(x => x.Message).ToList()
                };

                //Asegurarnos de tener aunque sea un error

                if (errorResponse.Errors == null || errorResponse.Errors.Count == 0)
                {
                    //Agregar un error desconocido
                    errorResponse.Errors = new List <string>(new[] { "Ocurrió un error desconocido. Por favor contacte con soporte" });
                }
            }
            catch (Exception ex)
            {
                //


                //Rompe si estamos debuggeando

                if (Debugger.IsAttached)
                {
                    var error = ex;
                    Debugger.Break();
                }


                //Si ocurre algo inesperado devuelve el mensaje
                return(new SendEmailResponse
                {
                    Errors = new List <string>(new[] { "Ocurrió un error inesperado" })
                });
            }


            return(new SendEmailResponse());
        }