[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]
[%
   title = "Email"
   desc = "How will outgoing mail be delivered?"
%]

[% param_descs = {
  mail_delivery_method => "Defines how email is sent, or if it is sent at all.<br>
                           <ul>
                             <li>
                               'SMTP' means use the SMTP protocol to talk to a remote
                               mail server.
                             </li>
                             <li>
                               'Sendmail' means use the sendmail-compatible MTA
                               installed on the Bugzilla machine.
                               You need to install a third-party sendmail replacement if
                               you want to use sendmail on Windows.
                             </li>
                             <li>
                               'Test' is useful for debugging: all email is stored
                               in 'data/mailer.testfile' instead of being sent.
                             </li>
                             <li>
                               'None' will completely disable email. Bugzilla continues
                               to act as though it is sending mail, but nothing is sent or
                               stored.
                             </li>
                           </ul>",

  mailfrom => "The email address of the $terms.Bugzilla mail daemon.  Some email systems " _
              "require this to be a valid email address.",

  use_mailer_queue => "In a large Bugzilla installation, updating"
    _ " $terms.bugs can be very slow, because Bugzilla sends all"
    _ " email at once. If you enable this parameter, Bugzilla will"
    _ " queue all mail and then send it in the background. This requires"
    _ " that you have installed certain Perl modules (as listed by"
    _ " <kbd>checksetup.pl</kbd> for this feature), and that you are"
    _ " running the <code>jobqueue.pl</code> daemon (otherwise your mail"
    _ " won't get sent). This affects all mail sent by Bugzilla,"
    _ " not just $terms.bug updates.",

  smtpserver => "The SMTP server address with optional port number (if using SMTP" _
                " for mail delivery). eg: example.com or example.com:1234",

  smtp_username => "The username to pass to the SMTP server for SMTP authentication. " _
                   "Leave this field empty if your SMTP server doesn't require authentication.",

  smtp_password => "The password to pass to the SMTP server for SMTP authentication. " _
                   "This field has no effect if the smtp_username parameter is left empty.",

  smtp_ssl => "Enable SSL support for SMTP.",

  smtp_debug => "If enabled, this will print detailed information to your" _
                " web server's error log about the communication between" _
                " Bugzilla and your SMTP server. You can use this to" _
                " troubleshoot email problems.",

  whinedays => "The number of days that we'll let a $terms.bug sit untouched in a CONFIRMED " _
               "state before our cronjob will whine at the owner.<br> " _
               "Set to 0 to disable whining.",

  globalwatchers => "A comma-separated list of users who should receive a " _
                    "copy of every notification mail the system sends." }

%]
