本文整理汇总了PHP中mapi_message_getrecipienttable函数的典型用法代码示例。如果您正苦于以下问题:PHP mapi_message_getrecipienttable函数的具体用法?PHP mapi_message_getrecipienttable怎么用?PHP mapi_message_getrecipienttable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了mapi_message_getrecipienttable函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getEmail
//.........这里部分代码省略.........
if (Request::GetProtocolVersion() >= 12.0) {
$attach = new SyncBaseAttachment();
} else {
$attach = new SyncAttachment();
}
// the displayname is handled equal for all AS versions
$attach->displayname = w2u(isset($attachprops[PR_ATTACH_LONG_FILENAME]) ? $attachprops[PR_ATTACH_LONG_FILENAME] : (isset($attachprops[PR_ATTACH_FILENAME]) ? $attachprops[PR_ATTACH_FILENAME] : "attachment.bin"));
// fix attachment name in case of inline images
if ($attach->displayname == "inline.txt" && (isset($attachprops[PR_ATTACH_MIME_TAG]) || $attachprops[PR_ATTACH_MIME_TAG_W])) {
$mimetype = isset($attachprops[PR_ATTACH_MIME_TAG]) ? $attachprops[PR_ATTACH_MIME_TAG] : $attachprops[PR_ATTACH_MIME_TAG_W];
$mime = explode("/", $mimetype);
if (count($mime) == 2 && $mime[0] == "image") {
$attach->displayname = "inline." . $mime[1];
}
}
// set AS version specific parameters
if (Request::GetProtocolVersion() >= 12.0) {
$attach->filereference = $entryid . ":" . $row[PR_ATTACH_NUM];
$attach->method = 1;
$attach->estimatedDataSize = $stat["cb"];
if (isset($attachprops[PR_ATTACH_CONTENT_ID]) && $attachprops[PR_ATTACH_CONTENT_ID]) {
$attach->contentid = $attachprops[PR_ATTACH_CONTENT_ID];
}
if (!isset($attach->contentid) && isset($attachprops[PR_ATTACH_CONTENT_ID_W]) && $attachprops[PR_ATTACH_CONTENT_ID_W]) {
$attach->contentid = $attachprops[PR_ATTACH_CONTENT_ID_W];
}
if (isset($attachprops[PR_ATTACHMENT_HIDDEN]) && $attachprops[PR_ATTACHMENT_HIDDEN]) {
$attach->isinline = 1;
}
if (!isset($message->asattachments)) {
$message->asattachments = array();
}
array_push($message->asattachments, $attach);
} else {
$attach->attsize = $stat["cb"];
$attach->attname = $entryid . ":" . $row[PR_ATTACH_NUM];
if (!isset($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
}
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$message->to = array();
$message->cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS, PR_ENTRYID));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} elseif ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
} elseif ($addrtype == "ZARAFA" && isset($row[PR_ENTRYID])) {
$address = $this->getSMTPAddressFromEntryID($row[PR_ENTRYID]);
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($name == "" || $name == $address) {
$fulladdr = w2u($address);
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
$fulladdr = "\"" . w2u($name) . "\" <" . w2u($address) . ">";
} else {
$fulladdr = w2u($name) . "<" . w2u($address) . ">";
}
}
if ($row[PR_RECIPIENT_TYPE] == MAPI_TO) {
array_push($message->to, $fulladdr);
} else {
if ($row[PR_RECIPIENT_TYPE] == MAPI_CC) {
array_push($message->cc, $fulladdr);
}
}
}
if (is_array($message->to) && !empty($message->to)) {
$message->to = implode(", ", $message->to);
}
if (is_array($message->cc) && !empty($message->cc)) {
$message->cc = implode(", ", $message->cc);
}
// without importance some mobiles assume "0" (low) - Mantis #439
if (!isset($message->importance)) {
$message->importance = IMPORTANCE_NORMAL;
}
//TODO contentclass and nativebodytype and internetcpid
if (!isset($message->internetcpid)) {
$message->internetcpid = defined('STORE_INTERNET_CPID') ? constant('STORE_INTERNET_CPID') : INTERNET_CPID_WINDOWS1252;
}
$this->setFlag($mapimessage, $message);
$message->contentclass = DEFAULT_EMAIL_CONTENTCLASS;
if (!isset($message->nativebodytype)) {
$message->nativebodytype = $this->getNativeBodyType($messageprops);
}
return $message;
}
示例2: parse_messages
function parse_messages($store, $entryid)
{
global $total_deleted;
$folder = mapi_msgstore_openentry($store, $entryid);
if (!$folder) {
print "Unable to open folder.";
return false;
}
$table = mapi_folder_getcontentstable($folder);
if (!$table) {
print "Unable to open table.";
return false;
}
$org_hash = null;
$dup_messages = array();
$dup_count = 0;
$result = mapi_table_sort($table, array(PR_CLIENT_SUBMIT_TIME => TABLE_SORT_DESCEND));
if ($result == false) {
echo "Could not sort table\n";
return;
}
while (1) {
// query messages from folders content table
$filters = array(PR_MESSAGE_SIZE, PR_CLIENT_SUBMIT_TIME, PR_MESSAGE_RECIPIENTS, PR_EMAIL_ADDRESS, PR_BODY, PR_HTML, PR_ENTRYID, PR_SUBJECT, PR_SMTP_ADDRESS);
$rows = mapi_table_queryrows($table, $filters, 0, 50);
if (count($rows) == 0) {
break;
}
// we got the messages
foreach ($rows as $row) {
// hash message body (plaintext + html + subject)
$md5_subject = md5($row[PR_SUBJECT]);
$md5_body = md5($row[PR_BODY]);
$md5_html = md5($row[PR_HTML]);
$md5_eid = $row[PR_ENTRYID];
$PR_EMAIL_ADDRESS = $row[PR_EMAIL_ADDRESS];
$PR_SMTP_ADDRESS = $row[PR_SMTP_ADDRESS];
}
$message = mapi_msgstore_openentry($store, $md5_eid);
$recipTable = mapi_message_getrecipienttable($message);
$oldRecipients = mapi_table_queryallrows($recipTable, array(PR_ENTRYID, PR_DISPLAY_NAME, PR_EMAIL_ADDRESS, PR_RECIPIENT_ENTRYID, PR_RECIPIENT_TYPE, PR_SEND_INTERNET_ENCODING, PR_SEND_RICH_INFO, PR_RECIPIENT_DISPLAY_NAME, PR_ADDRTYPE, PR_DISPLAY_TYPE, PR_RECIPIENT_TRACKSTATUS, PR_RECIPIENT_FLAGS, PR_ROWID));
print_r($oldRecipients);
}
}
示例3: clearRecipientResponse
/**
* Clear responses of all attendees who have replied in past.
* @param MAPI_MESSAGE $message on which responses should be cleared
*/
function clearRecipientResponse($message)
{
$recipTable = mapi_message_getrecipienttable($message);
$recipsRows = mapi_table_queryallrows($recipTable, $this->recipprops);
foreach ($recipsRows as $recipient) {
if (($recipient[PR_RECIPIENT_FLAGS] & recipOrganizer) != recipOrganizer) {
// Recipient is attendee, set the trackstatus to "Not Responded"
$recipient[PR_RECIPIENT_TRACKSTATUS] = olRecipientTrackStatusNone;
} else {
// Recipient is organizer, this is not possible, but for safety
// it is best to clear the trackstatus for him as well by setting
// the trackstatus to "Organized".
$recipient[PR_RECIPIENT_TRACKSTATUS] = olRecipientTrackStatusNone;
}
mapi_message_modifyrecipients($message, MODRECIP_MODIFY, array($recipient));
}
}
示例4: setAllExceptionRecipients
/**
* Function which applies the provided recipients to the exception, also checks for deleted recipients.
*
* The $exception_recips should be an array containing all recipients which must be applied
* to the exception. This will copy all recipients from the original message and then start filter
* out all recipients which are not provided by the $exception_recips list.
*
* @param resource $message exception attachment of recurring item
* @param array $exception_recips list of recipients
*/
function setAllExceptionRecipients($message, $exception_recips)
{
$deletedRecipients = array();
$useMessageRecipients = false;
$recipientTable = mapi_message_getrecipienttable($message);
$recipientRows = mapi_table_queryallrows($recipientTable, $this->recipprops);
if (empty($recipientRows)) {
$useMessageRecipients = true;
$recipientTable = mapi_message_getrecipienttable($this->message);
$recipientRows = mapi_table_queryallrows($recipientTable, $this->recipprops);
}
// Add organizer to meeting only if it is not organized.
$msgprops = mapi_getprops($message, array(PR_SENT_REPRESENTING_ENTRYID, PR_SENT_REPRESENTING_EMAIL_ADDRESS, PR_SENT_REPRESENTING_NAME, PR_SENT_REPRESENTING_ADDRTYPE, $this->proptags['responsestatus']));
if (isset($msgprops[$this->proptags['responsestatus']]) && $msgprops[$this->proptags['responsestatus']] != olResponseOrganized) {
$this->addOrganizer($msgprops, $exception_recips);
}
if (!empty($exception_recips)) {
foreach ($recipientRows as $key => $recipient) {
$found = false;
foreach ($exception_recips as $excep_recip) {
if (isset($recipient[PR_SEARCH_KEY]) && isset($excep_recip[PR_SEARCH_KEY]) && $recipient[PR_SEARCH_KEY] == $excep_recip[PR_SEARCH_KEY]) {
$found = true;
}
}
if (!$found) {
$foundInDeletedRecipients = false;
// Look if the $recipient is in the list of deleted recipients
if (!empty($deletedRecipients)) {
foreach ($deletedRecipients as $recip) {
if ($recip[PR_SEARCH_KEY] == $recipient[PR_SEARCH_KEY]) {
$foundInDeletedRecipients = true;
break;
}
}
}
// If recipient is not in list of deleted recipient, add him
if (!$foundInDeletedRecipients) {
if (!isset($recipient[PR_RECIPIENT_FLAGS]) || $recipient[PR_RECIPIENT_FLAGS] != (recipReserved | recipExceptionalDeleted | recipSendable)) {
$recipient[PR_RECIPIENT_FLAGS] = recipSendable | recipExceptionalDeleted;
} else {
$recipient[PR_RECIPIENT_FLAGS] = recipReserved | recipExceptionalDeleted | recipSendable;
}
$recipient[PR_RECIPIENT_TRACKSTATUS] = olRecipientTrackStatusNone;
// No Response required
$deletedRecipients[] = $recipient;
}
}
// When $message contains a non-empty recipienttable, we must delete the recipients
// before re-adding them. However, when $message is doesn't contain any recipients,
// we are using the recipient table of the original message ($this->message)
// rather then $message. In that case, we don't need to remove the recipients
// from the $message, as the recipient table is already empty, and
// mapi_message_modifyrecipients() will throw an error.
if ($useMessageRecipients === false) {
mapi_message_modifyrecipients($message, MODRECIP_REMOVE, array($recipient));
}
}
$exception_recips = array_merge($exception_recips, $deletedRecipients);
} else {
$exception_recips = $recipientRows;
}
if (!empty($exception_recips)) {
// Set the new list of recipients on the exception message, this also removes the existing recipients
mapi_message_modifyrecipients($message, 0, $exception_recips);
}
}
示例5: regenerateTask
/**
* Function which clones current occurrence and sets appropriate properties.
* The original recurring item is moved to next occurrence.
*@param boolean $markComplete true if existing occurrence has to be mark complete else false.
*/
function regenerateTask($markComplete)
{
// Get all properties
$taskItemProps = mapi_getprops($this->message);
if (isset($this->action["subject"])) {
$taskItemProps[$this->proptags["subject"]] = $this->action["subject"];
}
if (isset($this->action["importance"])) {
$taskItemProps[$this->proptags["importance"]] = $this->action["importance"];
}
if (isset($this->action["startdate"])) {
$taskItemProps[$this->proptags["startdate"]] = $this->action["startdate"];
$taskItemProps[$this->proptags["commonstart"]] = $this->action["startdate"];
}
if (isset($this->action["duedate"])) {
$taskItemProps[$this->proptags["duedate"]] = $this->action["duedate"];
$taskItemProps[$this->proptags["commonend"]] = $this->action["duedate"];
}
$folder = mapi_msgstore_openentry($this->store, $taskItemProps[PR_PARENT_ENTRYID]);
$newMessage = mapi_folder_createmessage($folder);
$taskItemProps[$this->proptags["status"]] = $markComplete ? olTaskComplete : olTaskNotStarted;
$taskItemProps[$this->proptags["complete"]] = $markComplete;
$taskItemProps[$this->proptags["percent_complete"]] = $markComplete ? 1 : 0;
// This occurrence has been marked as 'Complete' so disable reminder
if ($markComplete) {
$taskItemProps[$this->proptags["reset_reminder"]] = false;
$taskItemProps[$this->proptags["reminder"]] = false;
$taskItemProps[$this->proptags["datecompleted"]] = $this->action["datecompleted"];
unset($this->action[$this->proptags['datecompleted']]);
}
// Recurrence ends for this item
$taskItemProps[$this->proptags["dead_occurrence"]] = true;
$taskItemProps[$this->proptags["task_f_creator"]] = true;
//OL props
$taskItemProps[$this->proptags["side_effects"]] = 1296;
$taskItemProps[$this->proptags["icon_index"]] = 1280;
// Copy recipients
$recipienttable = mapi_message_getrecipienttable($this->message);
$recipients = mapi_table_queryallrows($recipienttable, array(PR_ENTRYID, PR_DISPLAY_NAME, PR_EMAIL_ADDRESS, PR_RECIPIENT_ENTRYID, PR_RECIPIENT_TYPE, PR_SEND_INTERNET_ENCODING, PR_SEND_RICH_INFO, PR_RECIPIENT_DISPLAY_NAME, PR_ADDRTYPE, PR_DISPLAY_TYPE, PR_RECIPIENT_TRACKSTATUS, PR_RECIPIENT_TRACKSTATUS_TIME, PR_RECIPIENT_FLAGS, PR_ROWID));
$copy_to_recipientTable = mapi_message_getrecipienttable($newMessage);
$copy_to_recipientRows = mapi_table_queryallrows($copy_to_recipientTable, array(PR_ROWID));
foreach ($copy_to_recipientRows as $recipient) {
mapi_message_modifyrecipients($newMessage, MODRECIP_REMOVE, array($recipient));
}
mapi_message_modifyrecipients($newMessage, MODRECIP_ADD, $recipients);
// Copy attachments
$attachmentTable = mapi_message_getattachmenttable($this->message);
if ($attachmentTable) {
$attachments = mapi_table_queryallrows($attachmentTable, array(PR_ATTACH_NUM, PR_ATTACH_SIZE, PR_ATTACH_LONG_FILENAME, PR_ATTACHMENT_HIDDEN, PR_DISPLAY_NAME, PR_ATTACH_METHOD));
foreach ($attachments as $attach_props) {
$attach_old = mapi_message_openattach($this->message, (int) $attach_props[PR_ATTACH_NUM]);
$attach_newResourceMsg = mapi_message_createattach($newMessage);
mapi_copyto($attach_old, array(), array(), $attach_newResourceMsg, 0);
mapi_savechanges($attach_newResourceMsg);
}
}
mapi_setprops($newMessage, $taskItemProps);
mapi_savechanges($newMessage);
// Update body of original message
$msgbody = mapi_message_openproperty($this->message, PR_BODY);
$msgbody = trim($this->windows1252_to_utf8($msgbody), "");
$separator = "------------\r\n";
if (!empty($msgbody) && strrpos($msgbody, $separator) === false) {
$msgbody = $separator . $msgbody;
$stream = mapi_openpropertytostream($this->message, PR_BODY, MAPI_CREATE | MAPI_MODIFY);
mapi_stream_setsize($stream, strlen($msgbody));
mapi_stream_write($stream, $msgbody);
mapi_stream_commit($stream);
}
// We need these properties to notify client
return mapi_getprops($newMessage, array(PR_ENTRYID, PR_PARENT_ENTRYID, PR_STORE_ENTRYID));
}
示例6: buildEMLAttachment
function buildEMLAttachment($attach)
{
$msgembedded = mapi_attach_openobj($attach);
$msgprops = mapi_getprops($msgembedded, array(PR_MESSAGE_CLASS, PR_CLIENT_SUBMIT_TIME, PR_DISPLAY_TO, PR_SUBJECT, PR_SENT_REPRESENTING_NAME, PR_SENT_REPRESENTING_EMAIL_ADDRESS));
$msgembeddedrcpttable = mapi_message_getrecipienttable($msgembedded);
$msgto = $msgprops[PR_DISPLAY_TO];
if ($msgembeddedrcpttable) {
$msgembeddedrecipients = mapi_table_queryrows($msgembeddedrcpttable, array(PR_ADDRTYPE, PR_ENTRYID, PR_DISPLAY_NAME, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS, PR_RECIPIENT_TYPE, PR_RECIPIENT_FLAGS, PR_PROPOSEDNEWTIME, PR_PROPOSENEWTIME_START, PR_PROPOSENEWTIME_END, PR_RECIPIENT_TRACKSTATUS), 0, 99999999);
foreach ($msgembeddedrecipients as $rcpt) {
if ($rcpt[PR_DISPLAY_NAME] == $msgprops[PR_DISPLAY_TO]) {
$msgto = $rcpt[PR_DISPLAY_NAME];
if (isset($rcpt[PR_EMAIL_ADDRESS]) && $rcpt[PR_EMAIL_ADDRESS] != $msgprops[PR_DISPLAY_TO]) {
$msgto .= " <" . $rcpt[PR_EMAIL_ADDRESS] . ">";
}
break;
}
}
}
$msgsubject = $msgprops[PR_SUBJECT];
$msgfrom = $msgprops[PR_SENT_REPRESENTING_NAME];
if (isset($msgprops[PR_SENT_REPRESENTING_EMAIL_ADDRESS]) && $msgprops[PR_SENT_REPRESENTING_EMAIL_ADDRESS] != $msgprops[PR_SENT_REPRESENTING_NAME]) {
$msgfrom .= " <" . $msgprops[PR_SENT_REPRESENTING_EMAIL_ADDRESS] . ">";
}
$msgtime = $msgprops[PR_CLIENT_SUBMIT_TIME];
$msgembeddedbody = eml_ReadMessage($msgembedded);
$msgembeddedattachtable = mapi_message_getattachmenttable($msgembedded);
$msgembeddedattachtablerows = mapi_table_queryallrows($msgembeddedattachtable, array(PR_ATTACH_NUM, PR_ATTACH_METHOD));
if ($msgembeddedattachtablerows) {
$boundary = '=_zpush_static';
$headercontenttype = "multipart/mixed";
$msgembeddedbody['body'] = "Unfortunately your mobile is not able to handle MIME Messages\n" . "--" . $boundary . "\n" . "Content-Type: " . $msgembeddedbody['content'] . "; charset=utf-8\n" . "Content-Transfer-Encoding: quoted-printable\n\n" . $msgembeddedbody['body'] . "\n";
foreach ($msgembeddedattachtablerows as $msgembeddedattachtablerow) {
$msgembeddedattach = mapi_message_openattach($msgembedded, $msgembeddedattachtablerow[PR_ATTACH_NUM]);
if (!$msgembeddedattach) {
debugLog("Unable to open attachment number {$attachnum}");
} else {
$msgembeddedattachprops = mapi_getprops($msgembeddedattach, array(PR_ATTACH_MIME_TAG, PR_ATTACH_LONG_FILENAME, PR_ATTACH_FILENAME, PR_DISPLAY_NAME));
if (isset($msgembeddedattachprops[PR_ATTACH_LONG_FILENAME])) {
$attachfilename = w2u($msgembeddedattachprops[PR_ATTACH_LONG_FILENAME]);
} else {
if (isset($msgembeddedattachprops[PR_ATTACH_FILENAME])) {
$attachfilename = w2u($msgembeddedattachprops[PR_ATTACH_FILENAME]);
} else {
if (isset($msgembeddedattachprops[PR_DISPLAY_NAME])) {
$attachfilename = w2u($msgembeddedattachprops[PR_DISPLAY_NAME]);
} else {
$attachfilename = w2u("untitled");
}
}
}
if ($msgembeddedattachtablerow[PR_ATTACH_METHOD] == ATTACH_EMBEDDED_MSG) {
$attachfilename .= w2u(".eml");
}
$msgembeddedbody['body'] .= "--" . $boundary . "\n" . "Content-Type: " . $msgembeddedattachprops[PR_ATTACH_MIME_TAG] . ";\n" . " name=\"" . $attachfilename . "\"\n" . "Content-Transfer-Encoding: base64\n" . "Content-Disposition: attachment;\n" . " filename=\"" . $attachfilename . "\"\n\n";
$msgembeddedattachstream = mapi_openpropertytostream($msgembeddedattach, PR_ATTACH_DATA_BIN);
$msgembeddedattachment = "";
while (1) {
$msgembeddedattachdata = mapi_stream_read($msgembeddedattachstream, 4096);
if (byte_strlen($msgembeddedattachdata) == 0) {
break;
}
$msgembeddedattachment .= $msgembeddedattachdata;
}
$msgembeddedbody['body'] .= chunk_split(base64_encode($msgembeddedattachment)) . "\n";
unset($msgembeddedattachment);
}
}
$msgembeddedbody['body'] .= "--" . $boundary . "--\n";
} else {
$headercontenttype = $msgembeddedbody['content'] . "; charset=utf-8";
$boundary = '';
}
$msgembeddedheader = "Subject: " . $msgsubject . "\n" . "From: " . $msgfrom . "\n" . "To: " . $msgto . "\n" . "Date: " . gmstrftime("%a, %d %b %Y %T +0000", $msgprops[PR_CLIENT_SUBMIT_TIME]) . "\n" . "MIME-Version: 1.0\n" . "Content-Type: " . $headercontenttype . ";\n" . ($boundary ? " boundary=\"" . $boundary . "\"\n" : "") . "\n";
$stream = mapi_stream_create();
mapi_stream_setsize($stream, byte_strlen($msgembeddedheader . $msgembeddedbody['body']));
mapi_stream_write($stream, $msgembeddedheader . $msgembeddedbody['body']);
mapi_stream_seek($stream, 0, STREAM_SEEK_SET);
return $stream;
}
示例7: _getEmail
//.........这里部分代码省略.........
}
}
// Disable reminder if it is off
$reminderset = $this->_getPropIDFromString("PT_BOOLEAN:{00062008-0000-0000-C000-000000000046}:0x8503");
$remindertime = $this->_getPropIDFromString("PT_LONG:{00062008-0000-0000-C000-000000000046}:0x8501");
$messageprops = mapi_getprops($mapimessage, array($reminderset, $remindertime));
if (!isset($messageprops[$reminderset]) || $messageprops[$reminderset] == false) {
$message->meetingrequest->reminder = "";
} else {
///set the default reminder time to seconds
if ($messageprops[$remindertime] == 0x5ae980e1) {
$message->meetingrequest->reminder = 900;
} else {
$message->meetingrequest->reminder = $messageprops[$remindertime] * 60;
}
}
// Set sensitivity to 0 if missing
if (!isset($message->meetingrequest->sensitivity)) {
$message->meetingrequest->sensitivity = 0;
}
}
// Add attachments
$attachtable = mapi_message_getattachmenttable($mapimessage);
$rows = mapi_table_queryallrows($attachtable, array(PR_ATTACH_NUM));
foreach ($rows as $row) {
if (isset($row[PR_ATTACH_NUM])) {
$mapiattach = mapi_message_openattach($mapimessage, $row[PR_ATTACH_NUM]);
$attachprops = mapi_getprops($mapiattach, array(PR_ATTACH_LONG_FILENAME, PR_ATTACH_FILENAME));
$attach = new SyncAttachment();
$stream = mapi_openpropertytostream($mapiattach, PR_ATTACH_DATA_BIN);
if ($stream) {
$stat = mapi_stream_stat($stream);
$attach->attsize = $stat["cb"];
$attach->displayname = w2u(isset($attachprops[PR_ATTACH_LONG_FILENAME]) ? $attachprops[PR_ATTACH_LONG_FILENAME] : (isset($attachprops[PR_ATTACH_FILENAME]) ? $attachprops[PR_ATTACH_FILENAME] : "attachment.bin"));
$attach->attname = bin2hex($this->_folderid) . ":" . bin2hex($sourcekey) . ":" . $row[PR_ATTACH_NUM];
if (!isset($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$to = array();
$cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} else {
if ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
}
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($name == "" || $name == $address) {
$fulladdr = w2u($address);
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
$fulladdr = "\"" . w2u($name) . "\" <" . w2u($address) . ">";
} else {
$fulladdr = w2u($name) . "<" . w2u($address) . ">";
}
}
if ($row[PR_RECIPIENT_TYPE] == MAPI_TO) {
array_push($to, $fulladdr);
} else {
if ($row[PR_RECIPIENT_TYPE] == MAPI_CC) {
array_push($cc, $fulladdr);
}
}
}
$message->to = implode(", ", $to);
$message->cc = implode(", ", $cc);
if (!isset($message->body) || strlen($message->body) == 0) {
$message->body = " ";
}
if ($mimesupport == 2 && function_exists("mapi_inetmapi_imtoinet")) {
$addrBook = mapi_openaddressbook($this->_session);
$mstream = mapi_inetmapi_imtoinet($this->_session, $addrBook, $mapimessage, array());
$mstreamstat = mapi_stream_stat($mstream);
if ($mstreamstat['cb'] < MAX_EMBEDDED_SIZE) {
$message->mimetruncated = 0;
$mstreamcontent = mapi_stream_read($mstream, MAX_EMBEDDED_SIZE);
$message->mimedata = $mstreamcontent;
$message->mimesize = $mstreamstat["cb"];
unset($message->body, $message->bodytruncated);
}
}
// without importance some mobiles assume "0" (low) - Mantis #439
if (!isset($message->importance)) {
$message->importance = 1;
}
return $message;
}
示例8: deleteAllRecipients
/** Deletes all recipients from given message object
*
*@param $message MAPI message from which recipients are to be removed.
*/
function deleteAllRecipients($message)
{
$recipTable = mapi_message_getrecipienttable($message);
$recipRows = mapi_table_queryallrows($recipTable, array(PR_ROWID));
foreach ($recipRows as $recipient) {
mapi_message_modifyrecipients($message, MODRECIP_REMOVE, array($recipient));
}
}
示例9: _getEmail
//.........这里部分代码省略.........
// Organizer is the sender
$message->meetingrequest->organizer = $message->from;
// Get the GOID
$props = mapi_getprops($mapimessage, array($goidtag));
if (isset($props[$goidtag])) {
$message->meetingrequest->globalobjid = base64_encode($props[$goidtag]);
}
// Force the 'alldayevent' in the object at all times. (non-existent == 0)
if (!isset($message->meetingrequest->alldayevent) || $message->meetingrequest->alldayevent == "") {
$message->meetingrequest->alldayevent = 0;
}
// Set Timezone
if (isset($recurprops[$timezonetag])) {
$tz = $this->_getTZFromMAPIBlob($recurprops[$timezonetag]);
} else {
$tz = $this->_getGMTTZ();
}
if ($tz) {
$message->meetingrequest->timezone = base64_encode($this->_getSyncBlobFromTZ($tz));
}
// 'Instance' is always 0 (?)
$message->meetingrequest->instancetype = 0;
// Disable reminder if it is off
$reminderset = $this->_getPropIDFromString("PT_BOOLEAN:{00062008-0000-0000-C000-000000000046}:0x8503");
$remindertime = $this->_getPropIDFromString("PT_LONG:{00062008-0000-0000-C000-000000000046}:0x8501");
$messageprops = mapi_getprops($mapimessage, array($reminderset, $remindertime));
if (!isset($messageprops[$reminderset]) || $messageprops[$reminderset] == false) {
$message->meetingrequest->reminder = "";
} else {
///set the default reminder time to seconds
if ($messageprops[$remindertime] == 0x5ae980e1) {
$message->meetingrequest->reminder = 900;
} else {
$message->meetingrequest->reminder = $messageprops[$remindertime] * 60;
}
}
// Set sensitivity to 0 if missing
if (!isset($message->meetingrequest->sensitivity)) {
$message->meetingrequest->sensitivity = 0;
}
}
// Add attachments
$attachtable = mapi_message_getattachmenttable($mapimessage);
$rows = mapi_table_queryallrows($attachtable, array(PR_ATTACH_NUM));
foreach ($rows as $row) {
if (isset($row[PR_ATTACH_NUM])) {
$mapiattach = mapi_message_openattach($mapimessage, $row[PR_ATTACH_NUM]);
$attachprops = mapi_getprops($mapiattach, array(PR_ATTACH_LONG_FILENAME));
$attach = new SyncAttachment();
$stream = mapi_openpropertytostream($mapiattach, PR_ATTACH_DATA_BIN);
if ($stream) {
$stat = mapi_stream_stat($stream);
$attach->attsize = $stat["cb"];
$attach->displayname = w2u($attachprops[PR_ATTACH_LONG_FILENAME]);
$attach->attname = bin2hex($this->_folderid) . ":" . bin2hex($sourcekey) . ":" . $row[PR_ATTACH_NUM];
if (!isset($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$to = array();
$cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} else {
if ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
}
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($name == "" || $name == $address) {
$fulladdr = $address;
} else {
$fulladdr = "\"" . w2u($name) . "\" <" . $address . ">";
}
if ($row[PR_RECIPIENT_TYPE] == MAPI_TO) {
array_push($to, $fulladdr);
} else {
if ($row[PR_RECIPIENT_TYPE] == MAPI_CC) {
array_push($cc, $fulladdr);
}
}
}
$message->to = implode(", ", $to);
$message->cc = implode(", ", $cc);
if (!isset($message->body) || strlen($message->body) == 0) {
$message->body = " ";
}
return $message;
}
示例10: _getEmail
//.........这里部分代码省略.........
if (substr(strtolower($attach->displayname), strlen($attach->displayname) - 4) != '.jpg') {
$attach->displayname .= '.jpg';
}
break;
case 'image/png':
if (substr(strtolower($attach->displayname), strlen($attach->displayname) - 4) != '.png') {
$attach->displayname .= '.png';
}
break;
}
} else {
$attach->attmethod = 1;
}
if (isset($message->_mapping['POOMMAIL:Attachments'])) {
if (!isset($message->attachments) || !is_array($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
} else {
if (isset($message->_mapping['AirSyncBase:Attachments'])) {
if (!isset($message->airsyncbaseattachments) || !is_array($message->airsyncbaseattachments)) {
$message->airsyncbaseattachments = array();
}
array_push($message->airsyncbaseattachments, $attach);
}
}
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$to = array();
$cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} else {
if ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
} else {
if ($addrtype == "MOBILE" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
}
}
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($message->messageclass == "IPM.Note.Mobile.SMS") {
if ($name == "" || $name == $address) {
$fulladdr = "\"" . w2u($address) . "\" [MOBILE:" . w2u($address) . "]";
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
$fulladdr = "\"" . w2u($name) . "\" [MOBILE:" . w2u($address) . "]";
} else {
$fulladdr = w2u($name) . " [MOBILE:" . w2u($address) . "]";
}
}
} else {
if ($name == "" || $name == $address) {
$fulladdr = w2u($address);
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
示例11: getEmail
//.........这里部分代码省略.........
$attach->method = isset($attachprops[PR_ATTACH_METHOD]) ? $attachprops[PR_ATTACH_METHOD] : ATTACH_BY_VALUE;
// if displayname does not have the eml extension for embedde messages, android and WP devices won't open it
if ($attach->method == ATTACH_EMBEDDED_MSG) {
if (strtolower(substr($attach->displayname, -4)) != '.eml') {
$attach->displayname .= '.eml';
}
}
// android devices require attachment size in order to display an attachment properly
if (!isset($attachprops[PR_ATTACH_SIZE])) {
$stream = mapi_openpropertytostream($mapiattach, PR_ATTACH_DATA_BIN);
$stat = mapi_stream_stat($stream);
$attach->estimatedDataSize = $stat['cb'];
} else {
$attach->estimatedDataSize = $attachprops[PR_ATTACH_SIZE];
}
if (isset($attachprops[PR_ATTACH_CONTENT_ID]) && $attachprops[PR_ATTACH_CONTENT_ID]) {
$attach->contentid = $attachprops[PR_ATTACH_CONTENT_ID];
}
if (!isset($attach->contentid) && isset($attachprops[PR_ATTACH_CONTENT_ID_W]) && $attachprops[PR_ATTACH_CONTENT_ID_W]) {
$attach->contentid = $attachprops[PR_ATTACH_CONTENT_ID_W];
}
if (isset($attachprops[PR_ATTACHMENT_HIDDEN]) && $attachprops[PR_ATTACHMENT_HIDDEN]) {
$attach->isinline = 1;
}
if (!isset($message->asattachments)) {
$message->asattachments = array();
}
array_push($message->asattachments, $attach);
} else {
$attach->attsize = $attachprops[PR_ATTACH_SIZE];
$attach->attname = sprintf("%s:%s:%s", $entryid, $row[PR_ATTACH_NUM], $parentSourcekey);
if (!isset($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$message->to = array();
$message->cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS, PR_ENTRYID));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} elseif ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
} elseif ($addrtype == "ZARAFA" && isset($row[PR_ENTRYID])) {
$address = $this->getSMTPAddressFromEntryID($row[PR_ENTRYID]);
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($name == "" || $name == $address) {
$fulladdr = w2u($address);
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
$fulladdr = "\"" . w2u($name) . "\" <" . w2u($address) . ">";
} else {
$fulladdr = w2u($name) . "<" . w2u($address) . ">";
}
}
if ($row[PR_RECIPIENT_TYPE] == MAPI_TO) {
array_push($message->to, $fulladdr);
} else {
if ($row[PR_RECIPIENT_TYPE] == MAPI_CC) {
array_push($message->cc, $fulladdr);
}
}
}
if (is_array($message->to) && !empty($message->to)) {
$message->to = implode(", ", $message->to);
}
if (is_array($message->cc) && !empty($message->cc)) {
$message->cc = implode(", ", $message->cc);
}
// without importance some mobiles assume "0" (low) - Mantis #439
if (!isset($message->importance)) {
$message->importance = IMPORTANCE_NORMAL;
}
//TODO contentclass and nativebodytype and internetcpid
if (!isset($message->internetcpid)) {
$message->internetcpid = defined('STORE_INTERNET_CPID') ? constant('STORE_INTERNET_CPID') : INTERNET_CPID_WINDOWS1252;
}
$this->setFlag($mapimessage, $message);
if (!isset($message->contentclass)) {
$message->contentclass = DEFAULT_EMAIL_CONTENTCLASS;
}
if (!isset($message->nativebodytype)) {
$message->nativebodytype = $this->getNativeBodyType($messageprops);
}
// reply, reply to all, forward flags
if (isset($message->lastverbexecuted) && $message->lastverbexecuted) {
$message->lastverbexecuted = Utils::GetLastVerbExecuted($message->lastverbexecuted);
}
return $message;
}
示例12: _getEmail
//.........这里部分代码省略.........
$attach->displayname = w2u($attachprops[PR_DISPLAY_NAME]);
} else {
$attach->displayname = w2u("untitled");
}
}
}
if (strlen($attach->displayname) == 0) {
$attach->displayname = "Untitled_" . $n;
$n++;
}
if ($row[PR_ATTACH_METHOD] == ATTACH_EMBEDDED_MSG) {
$attach->displayname .= w2u(".eml");
}
// END CHANGED dw2412 EML Attachment
// in case the attachment has got a content id it is an inline one...
if (isset($attachprops[PR_ATTACH_CONTENT_ID])) {
$attach->isinline = true;
$attach->method = 6;
$attach->contentid = $attachprops[PR_ATTACH_CONTENT_ID];
$attach->contenttype = $attachprops[PR_ATTACH_MIME_TAG];
}
if (isset($message->_mapping['POOMMAIL:Attachments'])) {
if (!isset($message->attachments) || !is_array($message->attachments)) {
$message->attachments = array();
}
array_push($message->attachments, $attach);
} else {
if (isset($message->_mapping['AirSyncBase:Attachments'])) {
if (!isset($message->airsyncbaseattachments) || !is_array($message->airsyncbaseattachments)) {
$message->airsyncbaseattachments = array();
}
array_push($message->airsyncbaseattachments, $attach);
}
}
}
}
}
// Get To/Cc as SMTP addresses (this is different from displayto and displaycc because we are putting
// in the SMTP addresses as well, while displayto and displaycc could just contain the display names
$to = array();
$cc = array();
$reciptable = mapi_message_getrecipienttable($mapimessage);
$rows = mapi_table_queryallrows($reciptable, array(PR_RECIPIENT_TYPE, PR_DISPLAY_NAME, PR_ADDRTYPE, PR_EMAIL_ADDRESS, PR_SMTP_ADDRESS));
foreach ($rows as $row) {
$address = "";
$fulladdr = "";
$addrtype = isset($row[PR_ADDRTYPE]) ? $row[PR_ADDRTYPE] : "";
if (isset($row[PR_SMTP_ADDRESS])) {
$address = $row[PR_SMTP_ADDRESS];
} else {
if ($addrtype == "SMTP" && isset($row[PR_EMAIL_ADDRESS])) {
$address = $row[PR_EMAIL_ADDRESS];
}
}
$name = isset($row[PR_DISPLAY_NAME]) ? $row[PR_DISPLAY_NAME] : "";
if ($name == "" || $name == $address) {
$fulladdr = w2u($address);
} else {
if (substr($name, 0, 1) != '"' && substr($name, -1) != '"') {
$fulladdr = "\"" . w2u($name) . "\" <" . w2u($address) . ">";
} else {
$fulladdr = w2u($name) . "<" . w2u($address) . ">";
}
}
if ($row[PR_RECIPIENT_TYPE] == MAPI_TO) {
array_push($to, $fulladdr);
} else {
if ($row[PR_RECIPIENT_TYPE] == MAPI_CC) {
array_push($cc, $fulladdr);
}
}
}
if (defined('LIMIT_RECIPIENTS')) {
if (count($to) > LIMIT_RECIPIENTS) {
debugLog("Recipient amount limitted. No to recipients added!");
$to = array();
$message->displayto = "";
}
if (count($cc) > LIMIT_RECIPIENTS) {
debugLog("Recipient amount limitted. No cc recipients added!");
$cc = array();
}
}
$message->to = implode(", ", $to);
$message->cc = implode(", ", $cc);
// CHANGED dw2412 to not have this problem at my system with mapi_inetmapi_imtoinet segfault
if ($mimesupport == 2 && function_exists("mapi_inetmapi_imtoinet") && !isset($message->airsyncbasebody) && !defined('ICS_IMTOINET_SEGFAULT')) {
$addrBook = mapi_openaddressbook($this->_session);
$mstream = mapi_inetmapi_imtoinet($this->_session, $addrBook, $mapimessage, array());
$mstreamstat = mapi_stream_stat($mstream);
if ($mstreamstat['cb'] < MAX_EMBEDDED_SIZE) {
$message->mimetruncated = 0;
$mstreamcontent = mapi_stream_read($mstream, MAX_EMBEDDED_SIZE);
$message->mimedata = $mstreamcontent;
$message->mimesize = $mstreamstat["cb"];
unset($message->body, $message->bodytruncated);
}
}
return $message;
}