@@ -179,34 +179,36 @@ func (c *Config) Validate() []error {
179179 c .Server .MessageSize = DefaultMessageSize
180180 }
181181
182- // validate mailer options
183- if c .Mailer .From == "" {
184- errorList = append (errorList , errors .New ("mailer from is required" ))
182+ // validate mailer options if configured or required
183+ if c .Mailer .DSN == "" && c . Webhook . Url == "" {
184+ errorList = append (errorList , errors .New ("either mailer dsn or webhook url is required" ))
185185 }
186186
187- if _ , err := mail .ParseAddress (c .Mailer .From ); err != nil {
188- errorList = append (errorList , errors .New ("invalid sender address" ))
189- }
187+ if c .Mailer .DSN != "" {
188+ if c .Mailer .From == "" {
189+ errorList = append (errorList , errors .New ("mailer from is required" ))
190+ }
190191
191- if c .Mailer .To == "" {
192- errorList = append (errorList , errors .New ("recipient email is required " ))
193- }
192+ if _ , err := mail . ParseAddress ( c .Mailer .From ); err != nil {
193+ errorList = append (errorList , errors .New ("invalid sender address " ))
194+ }
194195
195- if _ , err := mail . ParseAddress ( c .Mailer .To ); err != nil {
196- errorList = append (errorList , errors .New ("invalid recipient address " ))
197- }
196+ if c .Mailer .To == "" {
197+ errorList = append (errorList , errors .New ("recipient email is required " ))
198+ }
198199
199- if c .Mailer .DSN == "" {
200- errorList = append (errorList , errors .New ("mailer dsn is required " ))
201- }
200+ if _ , err := mail . ParseAddress ( c .Mailer .To ); err != nil {
201+ errorList = append (errorList , errors .New ("invalid recipient address " ))
202+ }
202203
203- parts , err := url .Parse (c .Mailer .DSN )
204- if err != nil {
205- errorList = append (errorList , errors .New ("invalid mailer dsn" ))
206- }
204+ parts , err := url .Parse (c .Mailer .DSN )
205+ if err != nil {
206+ errorList = append (errorList , errors .New ("invalid mailer dsn" ))
207+ }
207208
208- if parts .Scheme != "smtp" {
209- errorList = append (errorList , errors .New ("only smtp servers supported" ))
209+ if parts .Scheme != "smtp" {
210+ errorList = append (errorList , errors .New ("only smtp servers supported" ))
211+ }
210212 }
211213
212214 // validate webhook url
0 commit comments