new mail server options
This commit is contained in:
parent
0f40ba18c0
commit
50596a358e
|
@ -161,8 +161,6 @@ $helpArray = array (
|
|||
"Text" => _("This is a list of IP addresses from hosts who may access LAM. You can use \"*\" as wildcard (e.g. 192.168.0.*).")),
|
||||
"242" => array ("Headline" => _("Password policy"),
|
||||
"Text" => _("Here you can specify minimum requirements for passwords. The character classes are: lowercase, uppercase, numeric and symbols.")),
|
||||
"243" => array ("Headline" => _('Email format'),
|
||||
"Text" => _('Please change this setting only if you experience problems in receiving emails from LAM. This defines the line ending of emails.')),
|
||||
"244" => array ("Headline" => _('PHP error reporting'),
|
||||
"Text" => _('Defines if the PHP error reporting setting from php.ini is used or the setting preferred by LAM ("E_ALL & ~E_NOTICE"). If you do not develop LAM modules please use the default. This will prevent displaying messages that are useful only for developers.')),
|
||||
"245" => array ("Headline" => _('Encrypt session'),
|
||||
|
|
|
@ -1282,9 +1282,7 @@ function sendPasswordMail($pwd, $user, $recipient = null) {
|
|||
$body = str_replace('@@' . $attr . '@@', $value, $body);
|
||||
$found = preg_match('/\@\@[^\@]+\@\@/', $body, $results);
|
||||
}
|
||||
$headerLines = createEMailHeaders($mailFrom, ($mailIsHTML == 'true'), $mailReplyTo);
|
||||
$returnPath = empty($mailReplyTo) ? $mailFrom : $mailReplyTo;
|
||||
$success = sendEMail($mailTo, $subject, $body, $headerLines, $returnPath);
|
||||
$success = sendEMail($mailTo, $subject, $body, $mailFrom, ($mailIsHTML == 'true'), $mailReplyTo);
|
||||
if ($success) {
|
||||
logNewMessage(LOG_DEBUG, 'Sent password mail to ' . $mailTo);
|
||||
return array(
|
||||
|
@ -1310,7 +1308,7 @@ function sendPasswordMail($pwd, $user, $recipient = null) {
|
|||
* @return String header lines
|
||||
*/
|
||||
function createEMailHeaders($from, $isHTML, $replyTo = null, $cc = null, $bcc = null) {
|
||||
$headerLines = "X-Mailer: LDAP Account Manager\r\n";
|
||||
$headerLines = "";
|
||||
if (!empty($from)) {
|
||||
$headerLines .= 'From: ' . encodeMailAddress($from) . "\r\n";
|
||||
}
|
||||
|
@ -1333,51 +1331,66 @@ function createEMailHeaders($from, $isHTML, $replyTo = null, $cc = null, $bcc =
|
|||
return $headerLines;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes the email address for the header part of an email.
|
||||
*
|
||||
* @param String $address email address
|
||||
* @return String encoded mail address
|
||||
*/
|
||||
function encodeMailAddress($address) {
|
||||
$matches = array();
|
||||
// if the email contains a name part then base64 encode it
|
||||
if (preg_match('/^(.*)<(.*)>$/', $address, $matches)) {
|
||||
return base64EncodeForEMail($matches[1]) . ' <' . $matches[2] . '>';
|
||||
}
|
||||
return $address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a base64 encoded string of the given values in a format that is used in emails.
|
||||
*
|
||||
* @param String $value value to encode
|
||||
* @return String base64 encoded value
|
||||
*/
|
||||
function base64EncodeForEMail($value) {
|
||||
return '=?UTF-8?B?' . base64_encode($value) . '?=';
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends out an email.
|
||||
*
|
||||
* @param String $to TO address
|
||||
* @param String $subject email subject
|
||||
* @param String $text mail body (with \r\n EOL)
|
||||
* @param String $headers header lines (with \r\n EOL)
|
||||
* @param string $returnPath email to be used for return path
|
||||
* @param String $from FROM address
|
||||
* @param bool $isHTML HTML format
|
||||
* @param String $replyTo REPLY-TO address (optional)
|
||||
* @param String $cc CC address (optional)
|
||||
* @param String $bcc BCC address (optional)
|
||||
*/
|
||||
function sendEMail($to, $subject, $text, $headers, $returnPath) {
|
||||
if (!empty($_SESSION['cfgMain']->mailEOL) && ($_SESSION['cfgMain']->mailEOL === 'unix')) {
|
||||
$text = str_replace("\r\n", "\n", $text);
|
||||
$headers = str_replace("\r\n", "\n", $headers);
|
||||
}
|
||||
function sendEMail($to, $subject, $text, $from, $isHTML, $replyTo = null, $cc = null, $bcc = null) {
|
||||
include_once __DIR__ . '/3rdParty/composer/autoload.php';
|
||||
$returnPath = ($replyTo === null) ? $from : $replyTo;
|
||||
$returnPathParsed = PHPMailer\PHPMailer\PHPMailer::parseAddresses($returnPath);
|
||||
logNewMessage(LOG_DEBUG, "Send mail to $to\n" . $text);
|
||||
$additionalParams = null;
|
||||
if (!empty($returnPath) && isCommandlineSafeEmailAddress($returnPath)) {
|
||||
$additionalParams = '-f' . $returnPath;
|
||||
$mailer = new PHPMailer\PHPMailer\PHPMailer(true);
|
||||
try {
|
||||
$cfgMain = $_SESSION['cfgMain'];
|
||||
if (!empty($cfgMain->mailServer)) {
|
||||
$mailer->isSMTP();
|
||||
$serverParts = explode(':', $cfgMain->mailServer);
|
||||
$mailer->Host = $serverParts[0];
|
||||
$mailer->Port = $serverParts[1];
|
||||
if (!empty($cfgMain->mailUser)) {
|
||||
$mailer->SMTPAuth = true;
|
||||
$mailer->Username = $cfgMain->mailUser;
|
||||
$mailer->Password = $cfgMain->mailPassword;
|
||||
$mailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
|
||||
}
|
||||
}
|
||||
$mailer->CharSet = PHPMailer\PHPMailer\PHPMailer::CHARSET_UTF8;
|
||||
$mailer->addAddress($to);
|
||||
$mailer->Subject = $subject;
|
||||
$mailer->Body = $text;
|
||||
$mailer->Sender = $returnPathParsed[0]['address'];
|
||||
$fromParsed = PHPMailer\PHPMailer\PHPMailer::parseAddresses($from);
|
||||
$mailer->setFrom($fromParsed[0]['address'], $fromParsed[0]['name']);
|
||||
$mailer->isHTML($isHTML);
|
||||
if (!empty($replyTo)) {
|
||||
$replyToParsed = PHPMailer\PHPMailer\PHPMailer::parseAddresses($replyTo);
|
||||
$mailer->addReplyTo($replyToParsed[0]['address'], $replyToParsed[0]['name']);
|
||||
}
|
||||
if (!empty($cc)) {
|
||||
$ccParsed = PHPMailer\PHPMailer\PHPMailer::parseAddresses($cc);
|
||||
$mailer->addCC($ccParsed[0]['address'], $ccParsed[0]['name']);
|
||||
}
|
||||
if (!empty($bcc)) {
|
||||
$bccParsed = PHPMailer\PHPMailer\PHPMailer::parseAddresses($bcc);
|
||||
$mailer->addBCC($bccParsed[0]['address'], $bccParsed[0]['name']);
|
||||
}
|
||||
$mailer->XMailer = 'LDAP Account Manager';
|
||||
$mailer->send();
|
||||
return true;
|
||||
}
|
||||
catch (Exception $e) {
|
||||
logNewMessage(LOG_ERR, 'Mail sending failed: ' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
return mail($to, base64EncodeForEMail($subject), $text, $headers, $additionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2611,9 +2611,6 @@ class LAMCfgMain {
|
|||
/** SSL certificate should be deleted on save() */
|
||||
private $delSSLCaCert = false;
|
||||
|
||||
/** EOL for emails (default/unix) */
|
||||
public $mailEOL = 'default';
|
||||
|
||||
/** error reporting */
|
||||
public $errorReporting = self::ERROR_REPORTING_DEFAULT;
|
||||
|
||||
|
@ -2636,7 +2633,7 @@ class LAMCfgMain {
|
|||
"passwordMinClasses", "passwordMinSymbol", 'checkedRulesCount',
|
||||
'passwordMustNotContainUser', 'passwordMustNotContain3Chars',
|
||||
'externalPwdCheckUrl',
|
||||
"mailEOL", 'errorReporting', 'encryptSession', 'allowedHostsSelfService',
|
||||
'errorReporting', 'encryptSession', 'allowedHostsSelfService',
|
||||
'license', 'mailServer', 'mailUser', 'mailPassword'
|
||||
);
|
||||
|
||||
|
@ -2780,9 +2777,6 @@ class LAMCfgMain {
|
|||
if (!in_array("externalPwdCheckUrl", $saved)) {
|
||||
array_push($file_array, "\n\n" . "externalPwdCheckUrl: " . $this->externalPwdCheckUrl);
|
||||
}
|
||||
if (!in_array("mailEOL", $saved)) {
|
||||
array_push($file_array, "\n\n# Email format (default/unix)\n" . "mailEOL: " . $this->mailEOL);
|
||||
}
|
||||
if (!in_array("errorReporting", $saved)) {
|
||||
array_push($file_array, "\n\n# PHP error reporting (default/system)\n" . "errorReporting: " . $this->errorReporting);
|
||||
}
|
||||
|
|
|
@ -245,7 +245,6 @@ if (isset($_POST['submitFormData'])) {
|
|||
}
|
||||
// mail EOL
|
||||
if (isLAMProVersion()) {
|
||||
$cfg->mailEOL = $_POST['mailEOL'];
|
||||
$cfg->mailUser = $_POST['mailUser'];
|
||||
$cfg->mailPassword = $_POST['mailPassword'];
|
||||
$cfg->mailServer = $_POST['mailServer'];
|
||||
|
@ -468,13 +467,6 @@ printHeaderContents(_("Edit general settings"), '../..');
|
|||
$mailPassword = new htmlResponsiveInputField(_("Password"), 'mailPassword', $cfg->mailPassword, '255');
|
||||
$mailPassword->setIsPassword(true);
|
||||
$row->add($mailPassword, 12);
|
||||
$mailEOLOptions = array(
|
||||
_('Default (\r\n)') => 'default',
|
||||
_('Non-standard (\n)') => 'unix'
|
||||
);
|
||||
$mailEOLSelect = new htmlResponsiveSelect('mailEOL', $mailEOLOptions, array($cfg->mailEOL), _('Email format'), '243');
|
||||
$mailEOLSelect->setHasDescriptiveElements(true);
|
||||
$row->add($mailEOLSelect, 12);
|
||||
}
|
||||
$row->addVerticalSpacer('3rem');
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ include_once __DIR__ . '/../../lib/config.inc';
|
|||
*
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
class LAMConfigTest extends TestCase {
|
||||
class LAMCfgMainTest extends TestCase {
|
||||
|
||||
private $conf;
|
||||
private $file;
|
||||
|
@ -59,7 +59,6 @@ class LAMConfigTest extends TestCase {
|
|||
* Mail related settings
|
||||
*/
|
||||
public function testMail() {
|
||||
$this->conf->mailEOL = 'unix123';
|
||||
$this->conf->mailServer = 'server:123';
|
||||
$this->conf->mailPassword = 'pwd123';
|
||||
$this->conf->mailUser = 'user123';
|
||||
|
@ -67,7 +66,6 @@ class LAMConfigTest extends TestCase {
|
|||
$this->conf->save();
|
||||
$this->conf = new LAMCfgMain($this->file);
|
||||
|
||||
$this->assertEquals('unix123', $this->conf->mailEOL);
|
||||
$this->assertEquals('server:123', $this->conf->mailServer);
|
||||
$this->assertEquals('pwd123', $this->conf->mailPassword);
|
||||
$this->assertEquals('user123', $this->conf->mailUser);
|
||||
|
|
Loading…
Reference in New Issue