Example #1
0
/**
 * Send email
 *
 * @param string $senderName Sender name
 * @param string $senderEmail Sender email
 * @param string $subject Subject
 * @param string $body Body
 * @param array $rcptToData Recipient data
 */
function reseller_sendEmail($senderName, $senderEmail, $subject, $body, $rcptToData)
{
    if ($rcptToData['email'] != '') {
        $senderEmail = encode_idna($senderEmail);
        if (!empty($rcptToData['fname']) && !empty($rcptToData['lname'])) {
            $to = $rcptToData['fname'] . ' ' . $rcptToData['lname'];
        } elseif (!empty($rcptToData['fname'])) {
            $to = $rcptToData['fname'];
        } elseif (!empty($rcptToData['lname'])) {
            $to = $rcptToData['lname'];
        } else {
            $to = $rcptToData['admin_name'];
        }
        $from = encode_mime_header($senderName) . " <{$senderEmail}>";
        $to = encode_mime_header($to) . " <{$rcptToData['email']}>";
        $headers = "From: {$from}\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
        $headers .= "Content-Transfer-Encoding: 8bit\r\n";
        $headers .= "X-Mailer: i-MSCP mailer";
        mail($to, encode_mime_header($subject), $body, $headers, "-f {$senderEmail}");
    }
}
Example #2
0
/**
 * Request password
 *
 * @param string $adminName
 * @return bool TRUE on success, FALSE otherwise
 */
function requestPassword($adminName)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    $stmt = exec_query('SELECT `created_by`, `fname`, `lname`, `email` FROM `admin` WHERE `admin_name` = ?', $adminName);
    if (!$stmt->rowCount()) {
        return false;
    }
    $createdBy = $stmt->fields['created_by'];
    $adminFirstName = $stmt->fields['fname'];
    $adminLastName = $stmt->fields['lname'];
    $to = $stmt->fields['email'];
    $uniqueKey = uniqkeygen();
    setUniqKey($adminName, $uniqueKey);
    write_log('Lostpassword: '******': uniqkey created', E_USER_NOTICE);
    if ($createdBy == 0) {
        $createdBy = 1;
    }
    $data = get_lostpassword_activation_email($createdBy);
    $fromName = $data['sender_name'];
    $fromEmail = $data['sender_email'];
    $subject = $data['subject'];
    $message = $data['message'];
    $baseServerVhostPrefix = $cfg['BASE_SERVER_VHOST_PREFIX'];
    $baseServerVhost = $cfg['BASE_SERVER_VHOST'];
    $baseServerVhostPort = $baseServerVhostPrefix == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : $cfg['BASE_SERVER_VHOST_HTTPS_PORT'];
    if ($fromName) {
        $from = encode_mime_header($fromName) . " <{$fromEmail}>";
    } else {
        $from = $fromEmail;
    }
    $link = $baseServerVhostPrefix . $baseServerVhost . ':' . $baseServerVhostPort . $_SERVER["PHP_SELF"] . '?key=' . $uniqueKey;
    $search = array();
    $replace = array();
    $search[] = '{USERNAME}';
    $replace[] = $adminName;
    $search[] = '{NAME}';
    $replace[] = "{$adminFirstName} {$adminLastName}";
    $search[] = '{LINK}';
    $replace[] = $link;
    $search[] = '{BASE_SERVER_VHOST_PREFIX}';
    $replace[] = $baseServerVhostPrefix;
    $search[] = '{BASE_SERVER_VHOST}';
    $replace[] = $baseServerVhost;
    $search[] = '{BASE_SERVER_VHOST_PORT}';
    $replace[] = $baseServerVhostPort;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= 'X-Mailer: i-MSCP Mailer';
    $mailResult = mail($to, encode_mime_header($subject), $message, $headers, "-f {$fromEmail}");
    $mailStatus = $mailResult ? 'OK' : 'NOT OK';
    $from = tohtml($from);
    write_log("Lostpassword send: To: |{$to}|, From: |{$from}|, Status: |{$mailStatus}| !", E_USER_NOTICE);
    return true;
}
Example #3
0
/**
 * Send alias order email
 *
 * @param  string $aliasName
 * @return void
 */
function send_alias_order_email($aliasName)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    $userId = $_SESSION['user_id'];
    $resellerId = who_owns_this($userId, 'user');
    $stmt = exec_query('SELECT fname, lname FROM admin WHERE admin_id = ?', $userId);
    $userFirstname = $stmt->fields['fname'];
    $userLastname = $stmt->fields['lname'];
    $userEmail = $_SESSION['user_email'];
    $data = get_alias_order_email($resellerId);
    $toName = $data['sender_name'];
    $toEmail = $data['sender_email'];
    $subject = $data['subject'];
    $message = $data['message'];
    $to = $toName ? encode_mime_header($toName) . " <{$toEmail}>" : $toEmail;
    if ($userFirstname && $userLastname) {
        $fromName = "{$userFirstname} {$userLastname}";
        $from = encode_mime_header($fromName) . " <{$userEmail}>";
    } else {
        if ($userFirstname) {
            $fromName = $userFirstname;
        } else {
            if ($userLastname) {
                $fromName = $userLastname;
            } else {
                $fromName = $userEmail;
            }
        }
        $from = $userEmail;
    }
    $baseServerVhostPrefix = $cfg['BASE_SERVER_VHOST_PREFIX'];
    $port = $baseServerVhostPrefix == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] == '80' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : ($cfg['BASE_SERVER_VHOST_HTTPS_PORT'] == '443' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTPS_PORT']);
    $search = array();
    $replace = array();
    $search[] = '{RESELLER}';
    $replace[] = $toName;
    $search[] = '{CUSTOMER}';
    $replace[] = $fromName;
    $search[] = '{ALIAS}';
    $replace[] = $aliasName;
    $search[] = '{BASE_SERVER_VHOST_PREFIX}';
    $replace[] = $baseServerVhostPrefix;
    $search[] = '{BASE_SERVER_VHOST}';
    $replace[] = $cfg->BASE_SERVER_VHOST;
    $search[] = '{BASE_SERVER_VHOST_PORT}';
    $replace[] = $port;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $subject = encode_mime_header($subject);
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "X-Mailer: i-MSCP Mailer";
    mail($to, $subject, $message, $headers, "-f {$userEmail}");
}
Example #4
0
/**
 * Informs a user about a ticket creation/update and writes a line to the log
 *
 * @access private
 * @usedby updateTicket()
 * @usedby createTicket()
 * @param int $toId ticket recipient
 * @param int $fromId ticket sender
 * @param string $ticketSubject ticket subject
 * @param string $ticketMessage ticket content / message
 * @param int $ticketStatus ticket status
 * @param int $urgency ticket urgency
 */
function _sendTicketNotification($toId, $fromId, $ticketSubject, $ticketMessage, $ticketStatus, $urgency)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    // To information
    $stmt = exec_query('SELECT fname, lname, email, admin_name FROM admin WHERE admin_id = ?', $toId);
    $row = $stmt->fetchRow(PDO::FETCH_ASSOC);
    $toFname = $row['fname'];
    $toLname = $row['lname'];
    $toEmail = $row['email'];
    $toUname = $row['admin_name'];
    // From information
    $stmt = exec_query('SELECT fname, lname, email, admin_name FROM admin WHERE admin_id = ?', $fromId);
    $row = $stmt->fetchRow(PDO::FETCH_ASSOC);
    $fromFname = $row['fname'];
    $fromLname = $row['lname'];
    $fromEmail = $row['email'];
    $fromUname = $row['admin_name'];
    // Prepare message
    $subject = tr('[Ticket]') . ' {SUBJ}';
    if ($ticketStatus == 0) {
        $message = tr("Dear %s,\n\nYou have a new ticket:\n", '{TO_NAME}');
    } else {
        $message = tr("Dear %s,\n\nYou have an answer for this ticket:\n", '{TO_NAME}');
    }
    $port = $cfg['BASE_SERVER_VHOST_PREFIX'] == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] == '80' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : ($cfg['BASE_SERVER_VHOST_HTTPS_PORT'] == '443' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTPS_PORT']);
    $message .= "\n" . tr("Priority: %s\n", '{PRIORITY}');
    $message .= "\n" . $ticketMessage;
    $message .= "\n\n" . tr('Log in to answer') . ' ' . $cfg['BASE_SERVER_VHOST_PREFIX'] . $cfg['BASE_SERVER_VHOST'] . $port;
    // Format addresses
    if ($fromFname && $fromLname) {
        $from = encode_mime_header($fromFname . ' ' . $fromLname) . " <{$fromEmail}>";
        $fromname = "{$fromFname} {$fromLname}";
    } else {
        $from = $fromEmail;
        $fromname = $fromUname;
    }
    if ($toFname && $toLname) {
        $to = encode_mime_header($toFname . ' ' . $toLname) . " <{$toEmail}>";
        $toname = "{$toFname} {$toLname}";
    } else {
        $toname = $toUname;
        $to = $toEmail;
    }
    $priority = getTicketUrgency($urgency);
    // Prepare and send mail
    $search = array();
    $replace = array();
    $search[] = '{SUBJ}';
    $replace[] = $ticketSubject;
    $search[] = '{TO_NAME}';
    $replace[] = $toname;
    $search[] = '{FROM_NAME}';
    $replace[] = $fromname;
    $search[] = '{PRIORITY}';
    $replace[] = $priority;
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= 'X-Mailer: i-MSCP Mailer';
    $mail_result = mail($to, encode_mime_header($subject), $message, $headers);
    $mail_status = $mail_result ? 'OK' : 'NOT OK';
    $toname = tohtml($toname);
    $fromname = tohtml($fromname);
    write_log(sprintf('%s send ticket To: %s, From: %s, Status: %s.', $_SESSION['user_logged'], $toname . ': ' . $toEmail, $fromname . ': ' . $fromEmail, $mail_status), E_USER_NOTICE);
}
Example #5
0
/**
 * Send add user email
 *
 * @param int $adminId Admin unique identifier
 * @param string $uname Username
 * @param string $upass User password
 * @param string $uemail User email
 * @param string $ufname User firstname
 * @param string $ulname User lastname
 * @param string $utype User type
 * @return void
 */
function send_add_user_auto_msg($adminId, $uname, $upass, $uemail, $ufname, $ulname, $utype)
{
    /** @var $cfg iMSCP_Config_Handler_File */
    $cfg = iMSCP_Registry::get('config');
    $data = get_welcome_email($adminId, $_SESSION['user_type']);
    if ($data['sender_name']) {
        $from = encode_mime_header($data['sender_name']) . " <{$data['sender_email']}>";
    } else {
        $from = $data['sender_email'];
    }
    if ($ufname && $ulname) {
        $to = encode_mime_header($ufname . ' ' . $ulname) . " <{$uemail}>";
        $name = "{$ufname} {$ulname}";
    } else {
        $name = $uname;
        $to = $uemail;
    }
    $baseServerVhostPrefix = $cfg['BASE_SERVER_VHOST_PREFIX'];
    $port = $baseServerVhostPrefix == 'http://' ? $cfg['BASE_SERVER_VHOST_HTTP_PORT'] == '80' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTP_PORT'] : ($cfg['BASE_SERVER_VHOST_HTTPS_PORT'] == '443' ? '' : ':' . $cfg['BASE_SERVER_VHOST_HTTPS_PORT']);
    $search = array();
    $replace = array();
    $search[] = '{USERNAME}';
    $replace[] = decode_idna($uname);
    $search[] = '{USERTYPE}';
    $replace[] = $utype;
    $search[] = '{NAME}';
    $replace[] = decode_idna($name);
    $search[] = '{PASSWORD}';
    $replace[] = $upass;
    $search[] = '{BASE_SERVER_VHOST}';
    $replace[] = $cfg['BASE_SERVER_VHOST'];
    $search[] = '{BASE_SERVER_VHOST_PREFIX}';
    $replace[] = $baseServerVhostPrefix;
    $search[] = '{BASE_SERVER_VHOST_PORT}';
    $replace[] = $port;
    $data['subject'] = str_replace($search, $replace, $data['subject']);
    $message = str_replace($search, $replace, $data['message']);
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "X-Mailer: i-MSCP Mailer";
    $mailStatus = mail($to, encode_mime_header($data['subject']), $message, $headers, "-f {$data['sender_email']}") ? 'OK' : 'NOT OK';
    $name = tohtml($name);
    $fromName = tohtml($data['sender_name']);
    $logEntry = !$fromName ? $data['sender_email'] : "{$fromName} - {$data['sender_email']}";
    write_log("{$_SESSION['user_logged']}: Auto Add User To: |{$name} - {$uemail} |, From: |{$logEntry}|, Status: |{$mailStatus}|!", E_USER_NOTICE);
}
Example #6
0
/**
 * Must be documented.
 *
 * @param int $reseller_id Reseller unique identifier
 * @param string $file_name
 * @param int $sw_id
 * @return void
 */
function send_new_sw_upload($reseller_id, $file_name, $sw_id)
{
    $query = 'SELECT `admin_name` as reseller, `created_by`, `email` as res_email FROM `admin` WHERE `admin_id` = ?';
    $stmt = exec_query($query, $reseller_id);
    $from_name = $stmt->fields['reseller'];
    $from_email = $stmt->fields['res_email'];
    $admin_id = $stmt->fields['created_by'];
    $query = 'SELECT `email` as adm_email, `admin_name` as admin FROM `admin` WHERE `admin_id` = ?';
    $stmt = exec_query($query, $admin_id);
    $to_name = $stmt->fields['admin'];
    $to_email = $stmt->fields['adm_email'];
    if ($from_name) {
        $from = encode_mime_header($from_name) . " <{$from_email}>";
    } else {
        $from = $from_email;
    }
    $search = array();
    $replace = array();
    $search[] = '{ADMIN}';
    $replace[] = $to_name;
    $search[] = '{SOFTWARE}';
    $replace[] = $file_name;
    $search[] = '{SOFTWARE_ID}';
    $replace[] = $sw_id;
    $search[] = '{RESELLER}';
    $replace[] = $from_name;
    $search[] = '{RESELLER_ID}';
    $replace[] = $reseller_id;
    $headers = "From: {$from}\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "X-Mailer: i-MSCP Mailer";
    $subject = tr('{RESELLER} uploaded a new software package');
    $message = tr('Dear {ADMIN},
	{RESELLER} has uploaded a new software package.

	Details:
	Reseller ID: {RESELLER_ID}
	Package Name: {SOFTWARE}
	Package ID: {SOFTWARE_ID}

	Please login into your i-MSCP control panel for more details.', true);
    $subject = str_replace($search, $replace, $subject);
    $message = str_replace($search, $replace, $message);
    $subject = encode_mime_header($subject);
    mail($to_email, $subject, $message, $headers, "-f {$from_email}");
}