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