Ejemplo n.º 1
0
 /**
  * Custom de-serialization method
  * @param string $sSerializedMessage The serialized representation of the message
  */
 public static function UnSerializeV2($sSerializedMessage)
 {
     $aData = unserialize($sSerializedMessage);
     $oMessage = new Email();
     if (array_key_exists('body', $aData)) {
         $oMessage->SetBody($aData['body']['body'], $aData['body']['mimeType']);
     }
     if (array_key_exists('message_id', $aData)) {
         $oMessage->SetMessageId($aData['message_id']);
     }
     if (array_key_exists('bcc', $aData)) {
         $oMessage->SetRecipientBCC($aData['bcc']);
     }
     if (array_key_exists('cc', $aData)) {
         $oMessage->SetRecipientCC($aData['cc']);
     }
     if (array_key_exists('from', $aData)) {
         $oMessage->SetRecipientFrom($aData['from']['address'], $aData['from']['label']);
     }
     if (array_key_exists('reply_to', $aData)) {
         $oMessage->SetRecipientReplyTo($aData['reply_to']);
     }
     if (array_key_exists('to', $aData)) {
         $oMessage->SetRecipientTO($aData['to']);
     }
     if (array_key_exists('subject', $aData)) {
         $oMessage->SetSubject($aData['subject']);
     }
     if (array_key_exists('headers', $aData)) {
         foreach ($aData['headers'] as $sKey => $sValue) {
             $oMessage->AddToHeader($sKey, $sValue);
         }
     }
     if (array_key_exists('parts', $aData)) {
         foreach ($aData['parts'] as $aPart) {
             $oMessage->AddPart($aPart['text'], $aPart['mimeType']);
         }
     }
     if (array_key_exists('attachments', $aData)) {
         foreach ($aData['attachments'] as $aAttachment) {
             $oMessage->AddAttachment(base64_decode($aAttachment['data']), $aAttachment['filename'], $aAttachment['mimeType']);
         }
     }
     return $oMessage;
 }
 protected function ForgotPwdGo()
 {
     $sAuthUser = utils::ReadParam('auth_user', '', true, 'raw_data');
     try {
         UserRights::Login($sAuthUser);
         // Set the user's language (if possible!)
         $oUser = UserRights::GetUserObject();
         if ($oUser == null) {
             throw new Exception(Dict::Format('UI:ResetPwd-Error-WrongLogin', $sAuthUser));
         }
         if (!MetaModel::IsValidAttCode(get_class($oUser), 'reset_pwd_token')) {
             throw new Exception(Dict::S('UI:ResetPwd-Error-NotPossible'));
         }
         if (!$oUser->CanChangePassword()) {
             throw new Exception(Dict::S('UI:ResetPwd-Error-FixedPwd'));
         }
         $sTo = $oUser->GetResetPasswordEmail();
         // throws Exceptions if not allowed
         if ($sTo == '') {
             throw new Exception(Dict::S('UI:ResetPwd-Error-NoEmail'));
         }
         // This token allows the user to change the password without knowing the previous one
         $sToken = substr(md5(APPROOT . uniqid()), 0, 16);
         $oUser->Set('reset_pwd_token', $sToken);
         CMDBObject::SetTrackInfo('Reset password');
         $oUser->DBUpdate();
         $oEmail = new Email();
         $oEmail->SetRecipientTO($sTo);
         $sFrom = MetaModel::GetConfig()->Get('forgot_password_from');
         if ($sFrom == '') {
             $sFrom = $sTo;
         }
         $oEmail->SetRecipientFrom($sFrom);
         $oEmail->SetSubject(Dict::S('UI:ResetPwd-EmailSubject'));
         $sResetUrl = utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php?loginop=reset_pwd&auth_user='******'login')) . '&token=' . urlencode($sToken);
         $oEmail->SetBody(Dict::Format('UI:ResetPwd-EmailBody', $sResetUrl));
         $iRes = $oEmail->Send($aIssues, true);
         switch ($iRes) {
             //case EMAIL_SEND_PENDING:
             case EMAIL_SEND_OK:
                 break;
             case EMAIL_SEND_ERROR:
             default:
                 IssueLog::Error('Failed to send the email with the NEW password for ' . $oUser->Get('friendlyname') . ': ' . implode(', ', $aIssues));
                 throw new Exception(Dict::S('UI:ResetPwd-Error-Send'));
         }
         $this->DisplayLoginHeader();
         $this->add("<div id=\"login\">\n");
         $this->add("<h1>" . Dict::S('UI:Login:ForgotPwdForm') . "</h1>\n");
         $this->add("<p>" . Dict::S('UI:ResetPwd-EmailSent') . "</p>");
         $this->add("<form method=\"post\">\n");
         $this->add("<table>\n");
         $this->add("<tr><td colspan=\"2\" class=\"center v-spacer\"><input type=\"button\" onClick=\"window.close();\" value=\"" . Dict::S('UI:Button:Done') . "\" /></td></tr>\n");
         $this->add("</table>\n");
         $this->add("</form>\n");
         $this->add("</div\n");
     } catch (Exception $e) {
         $this->DisplayForgotPwdForm(true, $e->getMessage());
     }
 }
 public function SendNotification($sSubject, $sBody)
 {
     $iContact = $this->Get('notify_contact_id');
     if ($iContact == 0) {
         // Leave silently...
         return;
     }
     $oContact = MetaModel::GetObject('Contact', $iContact);
     // Determine the email attribute (the first one will be our choice)
     $sEmailAttCode = null;
     foreach (MetaModel::ListAttributeDefs(get_class($oContact)) as $sAttCode => $oAttDef) {
         if ($oAttDef instanceof AttributeEmailAddress) {
             $sEmailAttCode = $sAttCode;
             // we've got one, exit the loop
             break;
         }
     }
     if (is_null($sEmailAttCode)) {
         // Leave silently...
         return;
     }
     $sTo = $oContact->Get($sEmailAttCode);
     $sFrom = $sTo;
     $sBody = '<p>Data synchronization: ' . $this->GetHyperlink() . '</p>' . $sBody;
     $sSubject = 'iTop Data Sync - ' . $this->GetName() . ' - ' . $sSubject;
     $oEmail = new Email();
     $oEmail->SetRecipientTO($sTo);
     $oEmail->SetRecipientFrom($sFrom);
     $oEmail->SetSubject($sSubject);
     $oEmail->SetBody($sBody);
     if ($oEmail->Send($aIssues) == EMAIL_SEND_ERROR) {
         // mmmm, what can I do?
     }
 }
Ejemplo n.º 4
0
/**
 * Display the form for the second step of the configuration wizard
 * which consists in sending an email, which maybe a problem under Windows
 */
function DisplayStep2(SetupPage $oP, $sFrom, $sTo)
{
    //$sNextOperation = 'step3';
    $oP->add("<h1>iTop configuration wizard</h1>\n");
    $oP->add("<h2>Step 2: send an email</h2>\n");
    $oP->add("<p>Sending an email to '{$sTo}'... (From: '{$sFrom}')</p>\n");
    $oP->add("<form method=\"post\">\n");
    $oEmail = new Email();
    $oEmail->SetRecipientTO($sTo);
    $oEmail->SetRecipientFrom($sFrom);
    $oEmail->SetSubject("Test iTop");
    $oEmail->SetBody("<p>Hello,</p><p>The email function is now working fine.</p><p>You may now be able to use the notification function.</p><p>iTop</p>");
    $iRes = $oEmail->Send($aIssues, true);
    switch ($iRes) {
        case EMAIL_SEND_OK:
            $sTransport = MetaModel::GetConfig()->Get('email_transport');
            if ($sTransport == 'LogFile') {
                $oP->ok("The email has been logged into the file " . APPROOT . "/log/mail.log.");
            } else {
                $oP->ok("The email has been sent, check your inbox for the incoming mail...");
            }
            $oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
            break;
        case EMAIL_SEND_PENDING:
            $oP->ok("Email queued");
            $oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
            break;
        case EMAIL_SEND_ERROR:
            foreach ($aIssues as $sError) {
                $oP->error($sError);
            }
            $oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
            break;
    }
}
Ejemplo n.º 5
0
 protected function DoExecute()
 {
     for ($i = 0; $i < 2; $i++) {
         $oMail = new Email();
         $oMail->SetRecipientTO('*****@*****.**');
         $oMail->SetRecipientFrom('*****@*****.**');
         $oMail->SetRecipientCC('*****@*****.**');
         $oMail->SetSubject('automated test - ' . $i);
         $oMail->SetBody('this is one is entirely working fine ' . time());
         $iRes = $oMail->Send($aIssues, false);
         switch ($iRes) {
             case EMAIL_SEND_OK:
                 echo "EMAIL_SEND_OK<br/>\n";
                 break;
             case EMAIL_SEND_PENDING:
                 echo "EMAIL_SEND_PENDING<br/>\n";
                 break;
             case EMAIL_SEND_ERROR:
                 echo "EMAIL_SEND_ERROR: <br/>\n";
                 foreach ($aIssues as $sIssue) {
                     echo "Issue: {$sIssue}<br/>\n";
                 }
                 break;
         }
     }
 }
Ejemplo n.º 6
0
/**
 * Display the form for the second step of the configuration wizard
 * which consists in sending an email, which maybe a problem under Windows
 */
function DisplayStep2(SetupPage $oP, $sFrom, $sTo)
{
    //$sNextOperation = 'step3';
    $oP->add("<h1>iTop configuration wizard</h1>\n");
    $oP->add("<h2>Step 2: send an email</h2>\n");
    $oP->add("<p>Sending an email to '{$sTo}'... (From: '{$sFrom}')</p>\n");
    $oP->add("<form method=\"post\">\n");
    $oEmail = new Email();
    $oEmail->SetRecipientTO($sTo);
    $oEmail->SetRecipientFrom($sFrom);
    $oEmail->SetSubject("Test iTop");
    $oEmail->SetBody("<p>Hello,</p><p>The email function is now working fine.</p><p>You may now be able to use the notification function.</p><p>iTop</p>");
    $iRes = $oEmail->Send($aIssues, true);
    switch ($iRes) {
        case EMAIL_SEND_OK:
            $oP->ok("The email has been sent, you may now check that the email will arrive...");
            break;
        case EMAIL_SEND_PENDING:
            $oP->ok("Email queued");
            $oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
            break;
        case EMAIL_SEND_ERROR:
            foreach ($aIssues as $sError) {
                $oP->error($sError);
            }
            $oP->add("<button onClick=\"window.history.back();\"><< Back</button>\n");
            break;
    }
}