diff --git a/lib/classes/api/commands/class.EmailAccounts.php b/lib/classes/api/commands/class.EmailAccounts.php index 72391e90..a850c65f 100644 --- a/lib/classes/api/commands/class.EmailAccounts.php +++ b/lib/classes/api/commands/class.EmailAccounts.php @@ -35,6 +35,8 @@ class EmailAccounts extends ApiCommand implements ResourceEntity * optional email address to send account information to, default is the account that is being created * @param int $email_quota * optional quota if enabled in MB, default 0 + * @param bool $sendinfomail + * optional, sends the welcome message to the new account (needed for creation, without the user won't be able to login before any mail is received), default 1 (true) * * @access admin, customer * @throws Exception @@ -55,6 +57,7 @@ class EmailAccounts extends ApiCommand implements ResourceEntity $email_password = $this->getParam('email_password'); $alternative_email = $this->getParam('alternative_email', true, ''); $quota = $this->getParam('email_quota', true, 0); + $sendinfomail = $this->getParam('sendinfomail', true, 1); // validation $quota = validate($quota, 'email_quota', '/^\d+$/', 'vmailquotawrong', array(), true); @@ -184,62 +187,33 @@ class EmailAccounts extends ApiCommand implements ResourceEntity Admins::increaseUsage($customer['adminid'], 'email_accounts_used'); Admins::increaseUsage($customer['adminid'], 'email_quota_used', '', $quota); - // replacer array for mail to create account on server - $replace_arr = array( - 'EMAIL' => $email_full, - 'USERNAME' => $username, - 'PASSWORD' => $password - ); + if ($sendinfomail) { + // replacer array for mail to create account on server + $replace_arr = array( + 'EMAIL' => $email_full, + 'USERNAME' => $username, + 'PASSWORD' => $password + ); - // get the customers admin - $stmt = Database::prepare("SELECT `name`, `email` FROM `" . TABLE_PANEL_ADMINS . "` WHERE `adminid`= :adminid"); - $admin = Database::pexecute_first($stmt, array( - "adminid" => $customer['adminid'] - )); + // get the customers admin + $stmt = Database::prepare("SELECT `name`, `email` FROM `" . TABLE_PANEL_ADMINS . "` WHERE `adminid`= :adminid"); + $admin = Database::pexecute_first($stmt, array( + "adminid" => $customer['adminid'] + )); - // get template for mail subject - $mail_subject = $this->getMailTemplate($customer, 'mails', 'pop_success_subject', $replace_arr, $this->lng['mails']['pop_success']['subject']); - // get template for mail body - $mail_body = $this->getMailTemplate($customer, 'mails', 'pop_success_mailbody', $replace_arr, $this->lng['mails']['pop_success']['mailbody']); - - $_mailerror = false; - $mailerr_msg = ""; - try { - $this->mailer()->SetFrom($admin['email'], getCorrectUserSalutation($admin)); - $this->mailer()->Subject = $mail_subject; - $this->mailer()->AltBody = $mail_body; - $this->mailer()->MsgHTML(str_replace("\n", "
", $mail_body)); - $this->mailer()->AddAddress($email_full); - $this->mailer()->Send(); - } catch (phpmailerException $e) { - $mailerr_msg = $e->errorMessage(); - $_mailerror = true; - } catch (Exception $e) { - $mailerr_msg = $e->getMessage(); - $_mailerror = true; - } - - if ($_mailerror) { - $this->logger()->logAction($this->isAdmin() ? ADM_ACTION : USR_ACTION, LOG_ERR, "[API] Error sending mail: " . $mailerr_msg); - standard_error('errorsendingmail', $email_full, true); - } - - $this->mailer()->ClearAddresses(); - - // customer wants to send the e-mail to an alternative email address too - if (Settings::Get('panel.sendalternativemail') == 1) { // get template for mail subject - $mail_subject = $this->getMailTemplate($customer, 'mails', 'pop_success_alternative_subject', $replace_arr, $this->lng['mails']['pop_success_alternative']['subject']); + $mail_subject = $this->getMailTemplate($customer, 'mails', 'pop_success_subject', $replace_arr, $this->lng['mails']['pop_success']['subject']); // get template for mail body - $mail_body = $this->getMailTemplate($customer, 'mails', 'pop_success_alternative_mailbody', $replace_arr, $this->lng['mails']['pop_success_alternative']['mailbody']); + $mail_body = $this->getMailTemplate($customer, 'mails', 'pop_success_mailbody', $replace_arr, $this->lng['mails']['pop_success']['mailbody']); $_mailerror = false; + $mailerr_msg = ""; try { $this->mailer()->SetFrom($admin['email'], getCorrectUserSalutation($admin)); $this->mailer()->Subject = $mail_subject; $this->mailer()->AltBody = $mail_body; $this->mailer()->MsgHTML(str_replace("\n", "
", $mail_body)); - $this->mailer()->AddAddress($idna_convert->encode($alternative_email), getCorrectUserSalutation($customer)); + $this->mailer()->AddAddress($email_full); $this->mailer()->Send(); } catch (phpmailerException $e) { $mailerr_msg = $e->errorMessage(); @@ -251,12 +225,43 @@ class EmailAccounts extends ApiCommand implements ResourceEntity if ($_mailerror) { $this->logger()->logAction($this->isAdmin() ? ADM_ACTION : USR_ACTION, LOG_ERR, "[API] Error sending mail: " . $mailerr_msg); - standard_error(array( - 'errorsendingmail' - ), $alternative_email, true); + standard_error('errorsendingmail', $email_full, true); } $this->mailer()->ClearAddresses(); + + // customer wants to send the e-mail to an alternative email address too + if (Settings::Get('panel.sendalternativemail') == 1) { + // get template for mail subject + $mail_subject = $this->getMailTemplate($customer, 'mails', 'pop_success_alternative_subject', $replace_arr, $this->lng['mails']['pop_success_alternative']['subject']); + // get template for mail body + $mail_body = $this->getMailTemplate($customer, 'mails', 'pop_success_alternative_mailbody', $replace_arr, $this->lng['mails']['pop_success_alternative']['mailbody']); + + $_mailerror = false; + try { + $this->mailer()->SetFrom($admin['email'], getCorrectUserSalutation($admin)); + $this->mailer()->Subject = $mail_subject; + $this->mailer()->AltBody = $mail_body; + $this->mailer()->MsgHTML(str_replace("\n", "
", $mail_body)); + $this->mailer()->AddAddress($idna_convert->encode($alternative_email), getCorrectUserSalutation($customer)); + $this->mailer()->Send(); + } catch (phpmailerException $e) { + $mailerr_msg = $e->errorMessage(); + $_mailerror = true; + } catch (Exception $e) { + $mailerr_msg = $e->getMessage(); + $_mailerror = true; + } + + if ($_mailerror) { + $this->logger()->logAction($this->isAdmin() ? ADM_ACTION : USR_ACTION, LOG_ERR, "[API] Error sending mail: " . $mailerr_msg); + standard_error(array( + 'errorsendingmail' + ), $alternative_email, true); + } + + $this->mailer()->ClearAddresses(); + } } $this->logger()->logAction($this->isAdmin() ? ADM_ACTION : USR_ACTION, LOG_INFO, "[API] added email account for '" . $result['email_full'] . "'"); diff --git a/tests/Customers/CustomersTest.php b/tests/Customers/CustomersTest.php index 1b99b6fc..9ed1f18c 100644 --- a/tests/Customers/CustomersTest.php +++ b/tests/Customers/CustomersTest.php @@ -35,7 +35,7 @@ class CustomersTest extends TestCase 'mysqls' => 15, 'createstdsubdomain' => 1, 'new_customer_password' => 'h0lYmo1y', - 'sendpassword' => 1, + 'sendpassword' => TRAVIS_CI == 1 ? 0 : 1, 'phpenabled' => 1, 'store_defaultindex' => 1, 'custom_notes' => 'secret', diff --git a/tests/Emails/EmailsTest.php b/tests/Emails/EmailsTest.php index 12836efb..f51cb8b1 100644 --- a/tests/Emails/EmailsTest.php +++ b/tests/Emails/EmailsTest.php @@ -372,7 +372,8 @@ class MailsTest extends TestCase 'emailaddr' => 'info@test2.local', 'email_password' => generatePassword(), 'alternative_email' => 'noone@example.com', - 'email_quota' => 1337 + 'email_quota' => 1337, + 'sendinfomail' => TRAVIS_CI == 1 ? 0 : 1 ]; $json_result = EmailAccounts::getLocal($customer_userdata, $data)->add(); $result = json_decode($json_result, true)['data']; @@ -452,7 +453,8 @@ class MailsTest extends TestCase $data = [ 'emailaddr' => 'info@test2.local', 'email_password' => generatePassword(), - 'alternative_email' => 'noone@example.com' + 'alternative_email' => 'noone@example.com', + 'sendinfomail' => TRAVIS_CI == 1 ? 0 : 1 ]; $json_result = EmailAccounts::getLocal($customer_userdata, $data)->add(); $result = json_decode($json_result, true)['data']; diff --git a/tests/Ftps/FtpsTest.php b/tests/Ftps/FtpsTest.php index 65939bd0..e857d8d7 100644 --- a/tests/Ftps/FtpsTest.php +++ b/tests/Ftps/FtpsTest.php @@ -138,7 +138,7 @@ class FtpsTest extends TestCase 'ftp_password' => 'h4xXx0r', 'path' => '/', 'ftp_description' => 'testing', - 'sendinfomail' => 1 + 'sendinfomail' => TRAVIS_CI == 1 ? 0 : 1 ]; $json_result = Ftps::getLocal($customer_userdata, $data)->add(); $result = json_decode($json_result, true)['data']; @@ -236,7 +236,7 @@ class FtpsTest extends TestCase 'ftp_password' => 'h4xXx0r', 'path' => '/', 'ftp_description' => 'testing', - 'sendinfomail' => 1 + 'sendinfomail' => TRAVIS_CI == 1 ? 0 : 1 ]; $json_result = Ftps::getLocal($admin_userdata, $data)->add(); $result = json_decode($json_result, true)['data']; diff --git a/tests/Mysqls/MysqlsTest.php b/tests/Mysqls/MysqlsTest.php index fda7b559..f08ce23e 100644 --- a/tests/Mysqls/MysqlsTest.php +++ b/tests/Mysqls/MysqlsTest.php @@ -25,7 +25,7 @@ class MysqlsTest extends TestCase $data = [ 'mysql_password' => generatePassword(), 'description' => 'testdb', - 'sendinfomail' => true + 'sendinfomail' => TRAVIS_CI == 1 ? 0 : 1 ]; $json_result = Mysqls::getLocal($customer_userdata, $data)->add(); $result = json_decode($json_result, true)['data']; diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 045b2cc3..5c061278 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -4,10 +4,12 @@ if (file_exists('/etc/froxlor-test.pwd') && file_exists('/etc/froxlor-test.rpwd' // froxlor jenkins test-system $pwd = trim(file_get_contents('/etc/froxlor-test.pwd')); $rpwd = trim(file_get_contents('/etc/froxlor-test.rpwd')); + define('TRAVIS_CI', 0); } else { // travis-ci.org $pwd = 'fr0xl0r.TravisCI'; $rpwd = 'fr0xl0r.TravisCI'; + define('TRAVIS_CI', 1); } $userdata_content = "