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); }
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()); }