Changes
4 changed files (+20/-7)
-
-
@@ -1494,6 +1494,9 @@ PATH =;; ;; Timeout for Sendmail ;SENDMAIL_TIMEOUT = 5m ;; ;; convert \r\n to \n for Sendmail ;SENDMAIL_CONVERT_CRLF = true ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
@@ -667,6 +667,7 @@ Define allowed algorithms and their minimum key length (use -1 to disable a typecommand or full path). - `SENDMAIL_ARGS`: **_empty_**: Specify any extra sendmail arguments. - `SENDMAIL_TIMEOUT`: **5m**: default timeout for sending email through sendmail - `SENDMAIL_CONVERT_CRLF`: **true**: Most versions of sendmail prefer LF line endings rather than CRLF line endings. Set this to false if your version of sendmail requires CRLF line endings. - `SEND_BUFFER_LEN`: **100**: Buffer length of mailing queue. **DEPRECATED** use `LENGTH` in `[queue.mailer]` ## Cache (`cache`)
-
-
-
@@ -37,9 +37,10 @@ type Mailer struct {IsTLSEnabled bool // Sendmail sender SendmailPath string SendmailArgs []string SendmailTimeout time.Duration SendmailPath string SendmailArgs []string SendmailTimeout time.Duration SendmailConvertCRLF bool } var (
-
@@ -71,8 +72,9 @@ func newMailService() {IsTLSEnabled: sec.Key("IS_TLS_ENABLED").MustBool(), SubjectPrefix: sec.Key("SUBJECT_PREFIX").MustString(""), SendmailPath: sec.Key("SENDMAIL_PATH").MustString("sendmail"), SendmailTimeout: sec.Key("SENDMAIL_TIMEOUT").MustDuration(5 * time.Minute), SendmailPath: sec.Key("SENDMAIL_PATH").MustString("sendmail"), SendmailTimeout: sec.Key("SENDMAIL_TIMEOUT").MustDuration(5 * time.Minute), SendmailConvertCRLF: sec.Key("SENDMAIL_CONVERT_CRLF").MustBool(true), } MailService.From = sec.Key("FROM").MustString(MailService.User) MailService.EnvelopeFrom = sec.Key("ENVELOPE_FROM").MustString("")
-
-
-
@@ -290,13 +290,20 @@ func (s *sendmailSender) Send(from string, to []string, msg io.WriterTo) error {return err } _, err = msg.WriteTo(pipe) if setting.MailService.SendmailConvertCRLF { buf := &strings.Builder{} _, err = msg.WriteTo(buf) if err == nil { _, err = strings.NewReplacer("\r\n", "\n").WriteString(pipe, buf.String()) } } else { _, err = msg.WriteTo(pipe) } // we MUST close the pipe or sendmail will hang waiting for more of the message // Also we should wait on our sendmail command even if something fails closeError = pipe.Close() waitError = cmd.Wait() if err != nil { return err } else if closeError != nil {
-