Example #1
0
	function AddMessage($mailbox_id, $message, $charset)
	{
		global $DB;

		list($obHeader, $message_body_html, $message_body, $arMessageParts) = CMailMessage::parseMessage($message, $charset);

		$arFields = array(
			"MAILBOX_ID" => $mailbox_id,
			"HEADER" => $obHeader->strHeader,
			"FIELD_DATE_ORIGINAL" => $obHeader->GetHeader("DATE"),
			"NEW_MESSAGE"	=> "Y",
			"FIELD_FROM" => $obHeader->GetHeader("FROM"),
			"FIELD_REPLY_TO" => $obHeader->GetHeader("REPLY-TO"),
			"FIELD_TO" => $obHeader->GetHeader("TO"),
			"FIELD_CC" => $obHeader->GetHeader("CC"),
			"FIELD_BCC" => ($obHeader->GetHeader('X-Original-Rcpt-to')!=''?$obHeader->GetHeader('X-Original-Rcpt-to').($obHeader->GetHeader("BCC")!=''?', ':''):'').$obHeader->GetHeader("BCC"),
			"MSG_ID" => trim($obHeader->GetHeader("MESSAGE-ID"), " <>"),
			"IN_REPLY_TO" => trim($obHeader->GetHeader("IN-REPLY-TO"), " <>"),
			"FIELD_PRIORITY" => IntVal($obHeader->GetHeader("X-PRIORITY")),
			"MESSAGE_SIZE" => strlen($message),
			"SUBJECT" => $obHeader->GetHeader("SUBJECT"),
			"BODY" => rtrim($message_body)
		);

		if(COption::GetOptionString("mail", "save_src", B_MAIL_SAVE_SRC)=="Y")
			$arFields["FULL_TEXT"] = $message;

		if($message_body_html!==false)
			$arFields["FOR_SPAM_TEST"] = $obHeader->strHeader." ".$message_body_html;
		else
			$arFields["FOR_SPAM_TEST"] = $obHeader->strHeader." ".$message_body;

		$arFields["SPAM"] = "?";
		if(COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM)=="Y")
		{
			$arSpam = CMailFilter::GetSpamRating($arFields["FOR_SPAM_TEST"]);
			$arFields["SPAM_RATING"] = $arSpam["RATING"];
			$arFields["SPAM_WORDS"] = $arSpam["WORDS"];
			$arFields["SPAM_LAST_RESULT"] = "Y";
		}

		if(CMailUtil::IsSizeAllowed(strlen(implode(",", $arFields))))
		{
			$MESSAGE_ID = CMailMessage::Add($arFields);
			CMailLog::AddMessage(
				Array(
					"MAILBOX_ID"=>$mailbox_id,
					"MESSAGE_ID"=>$MESSAGE_ID,
					"STATUS_GOOD"=>"Y",
					"LOG_TYPE"=>"NEW_MESSAGE",
					"MESSAGE"=>$arFields["SUBJECT"]." (".$arFields["MESSAGE_SIZE"].") ".
						(COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM)=="Y"?
							"[".Round($arFields["SPAM_RATING"], 3)."]"
						:
							""
						)
					)
				);

			if(COption::GetOptionString("mail", "save_attachments", B_MAIL_SAVE_ATTACHMENTS)=="Y")
			{
				$n=0;
				foreach($arMessageParts as $part)
				{
					$arField = Array(
							"MESSAGE_ID" => $MESSAGE_ID,
							"FILE_NAME" => $part["FILENAME"],
							"CONTENT_TYPE" => $part["CONTENT-TYPE"],
							"FILE_DATA" => $part["BODY"],
							"CONTENT_ID" => $part["CONTENT-ID"]
						);
					CMailMessage::AddAttachment($arField);
				} // foreach($arMessageParts as $part)
			}

			$arFields['ID'] = $MESSAGE_ID;
			CMailFilter::Filter($arFields, "R");

			return $MESSAGE_ID;
		}
		else
		{
			CMailLog::AddMessage(array(
				"MAILBOX_ID"=>$mailbox_id,
				"STATUS_GOOD"=>"N",
				"LOG_TYPE"=>"NEW_MESSAGE",
				"MESSAGE"=>"Big message size, check mysql max_allow_packet."
			));
		}
	}
Example #2
0
 function AddMessage($mailbox_id, $message, $charset)
 {
     global $DB;
     list($obHeader, $message_body_html, $message_body, $arMessageParts) = CMailMessage::parseMessage($message, $charset);
     $arFields = array("MAILBOX_ID" => $mailbox_id, "HEADER" => $obHeader->strHeader, "FIELD_DATE_ORIGINAL" => $obHeader->GetHeader("DATE"), "NEW_MESSAGE" => "Y", "FIELD_FROM" => $obHeader->GetHeader("FROM"), "FIELD_REPLY_TO" => $obHeader->GetHeader("REPLY-TO"), "FIELD_TO" => $obHeader->GetHeader("TO"), "FIELD_CC" => $obHeader->GetHeader("CC"), "FIELD_BCC" => ($obHeader->GetHeader('X-Original-Rcpt-to') != '' ? $obHeader->GetHeader('X-Original-Rcpt-to') . ($obHeader->GetHeader("BCC") != '' ? ', ' : '') : '') . $obHeader->GetHeader("BCC"), "MSG_ID" => trim($obHeader->GetHeader("MESSAGE-ID"), " <>"), "IN_REPLY_TO" => trim($obHeader->GetHeader("IN-REPLY-TO"), " <>"), "FIELD_PRIORITY" => IntVal($obHeader->GetHeader("X-PRIORITY")), "MESSAGE_SIZE" => strlen($message), "SUBJECT" => $obHeader->GetHeader("SUBJECT"), "BODY" => rtrim($message_body));
     if (COption::GetOptionString("mail", "save_src", B_MAIL_SAVE_SRC) == "Y") {
         $arFields["FULL_TEXT"] = $message;
     }
     if ($message_body_html !== false) {
         $arFields["FOR_SPAM_TEST"] = $obHeader->strHeader . " " . $message_body_html;
     } else {
         $arFields["FOR_SPAM_TEST"] = $obHeader->strHeader . " " . $message_body;
     }
     $arFields["SPAM"] = "?";
     if (COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM) == "Y") {
         $arSpam = CMailFilter::GetSpamRating($arFields["FOR_SPAM_TEST"]);
         $arFields["SPAM_RATING"] = $arSpam["RATING"];
         $arFields["SPAM_WORDS"] = $arSpam["WORDS"];
         $arFields["SPAM_LAST_RESULT"] = "Y";
     }
     $MESSAGE_ID = CMailMessage::Add($arFields);
     CMailLog::AddMessage(array("MAILBOX_ID" => $mailbox_id, "MESSAGE_ID" => $MESSAGE_ID, "STATUS_GOOD" => "Y", "LOG_TYPE" => "NEW_MESSAGE", "MESSAGE" => $arFields["SUBJECT"] . " (" . $arFields["MESSAGE_SIZE"] . ") " . (COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM) == "Y" ? "[" . Round($arFields["SPAM_RATING"], 3) . "]" : "")));
     $atchCnt = 0;
     if (COption::GetOptionString("mail", "save_attachments", B_MAIL_SAVE_ATTACHMENTS) == "Y") {
         foreach ($arMessageParts as $part) {
             $arField = array("MESSAGE_ID" => $MESSAGE_ID, "FILE_NAME" => $part["FILENAME"], "CONTENT_TYPE" => $part["CONTENT-TYPE"], "FILE_DATA" => $part["BODY"], "CONTENT_ID" => $part["CONTENT-ID"]);
             if (CMailMessage::AddAttachment($arField)) {
                 $atchCnt++;
             }
         }
         // foreach($arMessageParts as $part)
     }
     $arFields['ID'] = $MESSAGE_ID;
     $arFields['ATTACHMENTS'] = $atchCnt;
     if (is_set($arFields, 'FIELD_DATE_ORIGINAL') && !is_set($arFields, 'FIELD_DATE')) {
         $arFields['FIELD_DATE'] = $DB->formatDate(date('d.m.Y H:i:s', strtotime($arFields['FIELD_DATE_ORIGINAL']) + CTimeZone::getOffset()), 'DD.MM.YYYY HH:MI:SS', CLang::GetDateFormat('FULL'));
     }
     CMailFilter::Filter($arFields, "R");
     return $MESSAGE_ID;
 }