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 = "