/** * 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}"); } }
/** * 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; }
/** * 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}"); }
/** * 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); }
/** * 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); }
/** * 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}"); }