email: allow sending emails from EU Mailgun domains

The Mailgun API requires being told when a EU email domain is used[1]
so introduce a new `mailgun_europe` config parameter to indicate that.

[1]: https://github.com/mailgun/mailgun-go?tab=readme-ov-file#usage
pull/1155/head
Stéphane Maniaci 2 months ago
parent f49c0b1c4c
commit 83e0a57338
No known key found for this signature in database
GPG Key ID: 4B399DE2A2F0E926
  1. 1
      config/config.go
  2. 6
      email.go
  3. 3
      mailer/mailer.go

@ -181,6 +181,7 @@ type (
// Mailgun configuration values
Domain string `ini:"domain"`
MailgunPrivate string `ini:"mailgun_private"`
MailgunEurope bool `ini:"mailgun_europe"`
}
// Config holds the complete configuration for running a writefreely instance

@ -309,6 +309,12 @@ Originally published on ` + p.Collection.DisplayTitle() + ` (` + p.Collection.Ca
Sent to %recipient.to%. Unsubscribe: ` + p.Collection.CanonicalURL() + `email/unsubscribe/%recipient.id%?t=%recipient.token%`
gun := mailgun.NewMailgun(app.cfg.Email.Domain, app.cfg.Email.MailgunPrivate)
if app.cfg.Email.MailgunEurope {
gun.SetAPIBase("https://api.eu.mailgun.net/v3")
}
m := mailgun.NewMessage(p.Collection.DisplayTitle()+" <"+p.Collection.Alias+"@"+app.cfg.Email.Domain+">", stripmd.Strip(p.DisplayTitle()), plainMsg)
replyTo := app.db.GetCollectionAttribute(collID, collAttrLetterReplyTo)
if replyTo != "" {

@ -36,6 +36,9 @@ func New(eCfg config.EmailCfg) (*Mailer, error) {
m := &Mailer{}
if eCfg.Domain != "" && eCfg.MailgunPrivate != "" {
m.mailGun = mailgun.NewMailgun(eCfg.Domain, eCfg.MailgunPrivate)
if eCfg.MailgunEurope {
m.mailGun.SetAPIBase("https://api.eu.mailgun.net/v3")
}
} else if eCfg.Username != "" && eCfg.Password != "" && eCfg.Host != "" && eCfg.Port > 0 {
m.smtp = mail.NewSMTPClient()
m.smtp.Host = eCfg.Host

Loading…
Cancel
Save