SendEmail sends an email.
(ctx context.Context, message *email.Message)
| 30 | |
| 31 | // SendEmail sends an email. |
| 32 | func (is *IdentityServer) SendEmail(ctx context.Context, message *email.Message) (err error) { |
| 33 | logger := log.FromContext(ctx).WithFields(log.Fields( |
| 34 | "to", message.RecipientAddress, |
| 35 | "subject", message.Subject, |
| 36 | "template_name", message.TemplateName, |
| 37 | "body", message.TextBody, |
| 38 | )) |
| 39 | isConfig := is.configFromContext(ctx) |
| 40 | var sender email.Sender |
| 41 | switch isConfig.Email.Provider { |
| 42 | case "sendgrid": |
| 43 | sender, err = sendgrid.New(ctx, isConfig.Email.Config, isConfig.Email.SendGrid) |
| 44 | case "smtp": |
| 45 | sender, err = smtp.New(ctx, isConfig.Email.Config, isConfig.Email.SMTP) |
| 46 | case "dir": |
| 47 | sender, err = dir.New(ctx, isConfig.Email.Config, isConfig.Email.Dir) |
| 48 | } |
| 49 | if err != nil { |
| 50 | logger.WithError(err).Warn("Could not send email without email provider") |
| 51 | return err |
| 52 | } |
| 53 | if sender == nil { |
| 54 | logger.Warn("Could not send email without email provider") |
| 55 | return nil |
| 56 | } |
| 57 | err = sender.Send(message) |
| 58 | if err != nil { |
| 59 | logger.WithError(err).Warn("Failed to send email") |
| 60 | return err |
| 61 | } |
| 62 | return nil |
| 63 | } |
| 64 | |
| 65 | // SendTemplateEmailToUsers sends an email to users. |
| 66 | func (is *IdentityServer) SendTemplateEmailToUsers( |
no test coverage detected