亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mailclient2server.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*
 * Copyright (C) 2003-2007 Funambol, Inc
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
 * PURPOSE.  See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */

#include "pim/mail/MailClient2Server.h"
#include "pim/mail/MailInfo.h"
#include "pim/mail/MailItem.h"
#include "pim/mail/MailClientData.h"
#include "pim/mail/MailSyncSource.h"

#include "pim/account.h"

#include "pim/utils.h"
#include "base/util/utils.h"
#include "base/util/ArrayList.h"
#include <mapidefs.h>
#include <mapicode.h>
#include <mapitags.h>
#include <mapix.h>
#include <mapiutil.h>
#include <cemapi.h>
#include "wtypes.h"

#include "HwndFunctions.h"
#define DEFAULT_USER_W TEXT("default@email")
#define DEFAULT_USER_W_ACUTE TEXT("<default@email>")

//------------------------------------------------------------- Typedef
enum {
    eeePR_ENTRYID,
    eeePR_MESSAGE_FLAGS,
    eeePR_LAST_MODIFICATION_TIME,
    eeeNUM_COLS};

// These tags represent the message information we would like to pick up
static SizedSPropTagArray(eeeNUM_COLS, endSync) =
{
    eeeNUM_COLS,
    PR_ENTRYID,                       // entry id
    PR_MESSAGE_FLAGS,
    PR_LAST_MODIFICATION_TIME        //

};

enum {
    ePR_ENTRYID,
    ePR_MESSAGE_FLAGS,
    //MM
    ePR_LAST_MODIFICATION_TIME,
    ePR_SUBJECT,
    ePR_SUBJECT_PREFIX,
    ePR_MESSAGE_SIZE,
    ePR_SENDER_NAME,
    ePR_SENDER_EMAIL_ADDRESS,
    ePR_HASATTACH,
    ePR_MESSAGE_DELIVERY_TIME,
    ePR_CUSTOM_MESSAGE_ID,
    ePR_CUSTOM_MESSAGE_HEADER,
    ePR_REPLY_RECIPIENT_NAMES,
    ePR_REPLY_RECIPIENT_ENTRIES,
    ePR_CLIENT_SUBMIT_TIME,
    //MM
    NUM_COLS};

// These tags represent the message information we would like to pick up
static SizedSPropTagArray(NUM_COLS, properties) =
{
    NUM_COLS,
    PR_ENTRYID,                         // entry id
    PR_MESSAGE_FLAGS,
    //MM
    PR_LAST_MODIFICATION_TIME,          //
    PR_SUBJECT,                         // mail Subject
    PR_SUBJECT_PREFIX,
    PR_MESSAGE_SIZE,                    // sum of the size of every property of the object
    PR_SENDER_NAME,                     // "Marco "
    PR_SENDER_EMAIL_ADDRESS,            // From  "Marco <magi@libero.it>
    PR_HASATTACH,
    PR_MESSAGE_DELIVERY_TIME,
    PR_CUSTOM_MESSAGE_ID,
    PR_CUSTOM_MESSAGE_HEADER,
    PR_REPLY_RECIPIENT_NAMES,
    PR_REPLY_RECIPIENT_ENTRIES,
    PR_CLIENT_SUBMIT_TIME

};

enum {
    eePR_ENTRYID,
    eePR_LAST_MODIFICATION_TIME,
    eePR_DISPLAY_NAME,
    eePR_MESSAGE_FLAGS,
    eeNUM_COLS};

// These tags represent the message information we would like to pick up
static SizedSPropTagArray(eeNUM_COLS, Columns) =
{
    eeNUM_COLS,
    PR_ENTRYID,
    PR_LAST_MODIFICATION_TIME,
    PR_DISPLAY_NAME,
    PR_MESSAGE_FLAGS
};

//--------------------------------------------------------- Local variables

static long mailAll;
static long mailNew;
static long mailUpdated;
static long mailDeleted;
static wchar_t accName[256];
//--------------------------------------------------------- Constructors

MailClient2Server::MailClient2Server() {
    mailAll = -2;
    arrayIndex = 0;
    allTot = 0;
    elementIndex = -2;

    mailNew = -2;
    mailUpdated = -2;
    mailDeleted = -2;
    folderNumber = 0;
    // deletedMessages = new ArrayList();

    entryListArray = NULL;
    folderToSync = NULL;
    newMessagesArray = NULL;
    updatedMessagesArray = NULL;
    deletedMessagesArray = NULL;
    accName[0] = 0;

}

MailClient2Server::~MailClient2Server() {
    //if (mailMessage) {
    //    delete mailMessage; mailMessage = NULL;
    //}
    if (folderToSync) {
        delete [] folderToSync; folderToSync = NULL;
    }
    if (newMessagesArray) {
        for (int i = 0; i < folderNumber; i++)
            //MAPIFreeBuffer(newMessagesArray[i].lpbin);
        delete [] newMessagesArray; newMessagesArray = NULL;
    }
    if (updatedMessagesArray) {
        for (int i = 0; i < folderNumber; i++)
            //MAPIFreeBuffer(updatedMessagesArray[i].lpbin);

        delete [] updatedMessagesArray; updatedMessagesArray = NULL;
    }
    if (deletedMessagesArray) {
        delete [] deletedMessagesArray; deletedMessagesArray = NULL;
    }
    if (entryListArray) {
        for (int i = 0; i < folderNumber; i++)
            //MAPIFreeBuffer(entryListArray[i].lpbin);

        delete [] entryListArray; entryListArray = NULL;
    }
    accName[0] = 0;
}

static void FileTimeToBasicDate(FILETIME ft, BasicTime *b)
{
    SYSTEMTIME t;
    FILETIME loctime;

    FileTimeToLocalFileTime(&ft, &loctime);
    FileTimeToSystemTime(&loctime, &t);

    b->setYear(t.wYear);
    b->setMonth(t.wMonth);
    b->setWeekday(t.wDayOfWeek);
    b->setDay(t.wDay);
    b->setHour(t.wHour);
    b->setMin(t.wMinute);
    b->setSec(t.wSecond);

    time_t tt = FileTimeToUnixTime(ft);

    TIME_ZONE_INFORMATION tzi;
    SafeGetTimeZoneInformation(&tzi);
    int hour = 0;
    double hourDstMinutes = 0;
    int minutes = 0;
    if (IsDST(&tzi, tt)) {
        hour = abs((tzi.Bias + tzi.DaylightBias)/60);
        hourDstMinutes = (tzi.Bias + tzi.DaylightBias)/60;
    }
    else {
        hour = abs(tzi.Bias/60);
        hourDstMinutes = tzi.Bias*1.0/60;
    }
    minutes = abs((int)(hourDstMinutes*60)) - hour*60;
    if (tzi.Bias > 0)
        hour = -hour;
    b->setTzHour(hour);
    b->setTzMin(minutes);
}

/*
* The name of the object has to follow the rule in which the name is
* <FolderName>/<id>
* i.e. I/AAAAABBBCCC   Inbox/AAAAABBBCCC
*
* isUpdate: For update only, the completeObject send all the complete message for Draft folder.
* The others sends only the information extra files
*
* keyOnly: used to get only the key of the item and not the complete. It is used to delete all the items
* before a refresh-from-server
*
*/

MailClientData* MailClient2Server::completeObject(IMessage* pmsg, wchar_t folder, BOOL isUpdate, BOOL keyOnly) {

    SPropValue rgprops[2] = {0};
    ULONG    cProps   = 0;
    ULONG    cmsgValue =  0;
    SPropValue* msgprops = NULL;
    bool read = false;
    char * hdrs = NULL;
    wchar_t *id = NULL;
    MailClientData* mcd = NULL;
    HRESULT hr;

    hr = pmsg->GetProps ((LPSPropTagArray)&properties, MAPI_UNICODE, &cmsgValue,
       &msgprops);
    EXIT_ON_FAILED (hr);

    if ( !msgprops ) {
        LOG.error("completeObject: can't get message props.");
        return NULL;
    }

    if (msgprops[ePR_ENTRYID].ulPropTag != PR_ENTRYID) {
        LOG.error("entry id not found.");
        return NULL;
    }

    id = convertBinaryToWChar(msgprops[ePR_ENTRYID].Value.bin, folder);

    mcd = new MailClientData(id);
    delete [] id;
    id = NULL;

    mcd->setParent(folder);

    if (keyOnly) {
        return mcd;
    }

    //********************* Set EmailData properties ***************************

    // Reset flags (is it still needed?)
    mcd->getEmailData()->setRead(false);
    mcd->getEmailData()->setForwarded(false);
    mcd->getEmailData()->setReplied(false);
    mcd->getEmailData()->setReceived(false);
    mcd->getEmailData()->setCreated(false);
    mcd->getEmailData()->setDeleted(false);
    mcd->getEmailData()->setFlagged(false);

    if (msgprops[ePR_MESSAGE_FLAGS].ulPropTag == PR_MESSAGE_FLAGS) {
        if (msgprops[ePR_MESSAGE_FLAGS].Value.ul & MSGFLAG_READ) {
            read = true;
        }
        else {
            read = false;
        }
    }

    mcd->getEmailData()->setRead(read);

    // If it's an update, and the folder is not draft, do not set the message body
    if (isUpdate && folder != 'D' && folder != 'O'){
        LOG.debug("Update only");
    }
    else {
        /*************************************************************************
         * Past this point, the whole message is sent to the server, and
         * must be complete.
         *************************************************************************/
        FILETIME ft;

        wchar_t time[20];

        if (folder == 'T' && msgprops[ePR_MESSAGE_DELIVERY_TIME].ulPropTag == PR_MESSAGE_DELIVERY_TIME){
            ft = msgprops[ePR_MESSAGE_DELIVERY_TIME].Value.ft;  //OK
        }
        else if (msgprops[ePR_LAST_MODIFICATION_TIME].ulPropTag == PR_LAST_MODIFICATION_TIME){
            ft = msgprops[ePR_LAST_MODIFICATION_TIME].Value.ft;  //OK
        }
        else {
            // Should never happen
            LOG.error("Error retrieving last modification time");
            LOG.error("Using current time");
            SYSTEMTIME st;
            GetLocalTime(&st);
            SystemTimeToFileTime(&st, &ft);
        }
        // Set date in the Email header.
        FileTime2UTCTimeFormatter(ft, time);
        char *t = toMultibyte(time);
        mcd->getEmailData()->setModified(t);
        delete [] t;

        //*************** Set emailItem props *******************************/
        MailMessage& msg = mcd->getEmailData()->getEmailItem();
        ULONG attachCount = 0;

        // Set date ------------------------------------------------------------
        BasicTime bDate;
        
        // In case of Outbox we use always the current time
        if (folder == 'O') {
            SYSTEMTIME systemTime;

            GetSystemTime(&systemTime);
            SystemTimeToFileTime(&systemTime, &ft);
        }
       
        FileTimeToBasicDate(ft, &bDate);
        msg.setDate(bDate);

        // Set subject ------------------------------------------------------------
        if (msgprops[ePR_SUBJECT].ulPropTag == PR_SUBJECT) {
            msg.setSubject(_wcc(msgprops[ePR_SUBJECT].Value.lpszW));
        }

        wchar_t* emailSender = NULL;
        wchar_t* sender      = NULL;
        wchar_t* accountName = NULL;
        wchar_t*  fr         = NULL;
        // Set sender address -----------------------------------------------------
        if (msgprops[ePR_SENDER_EMAIL_ADDRESS].ulPropTag == PR_SENDER_EMAIL_ADDRESS) {

            LOG.debug("MailClientToServer: PR_SENDER_EMAIL_ADDRESS: %ls", msgprops[ePR_SENDER_EMAIL_ADDRESS].Value.lpszW);

            emailSender = msgprops[ePR_SENDER_EMAIL_ADDRESS].Value.lpszW;

            if (msgprops[ePR_SENDER_NAME].ulPropTag == PR_SENDER_NAME) {
                sender = msgprops[ePR_SENDER_NAME].Value.lpszW;
            }

            if (sender != NULL && wcscmp(sender, emailSender) == 0 && folder == 'O') {

                    //wchar_t accountMail[256];
                    //accountName = new wchar_t[256];
                    //getAccountInfo(accountName, accountMail);
                    if (wcscmp(emailSender, DEFAULT_USER_W) == 0) {
                        msg.setFrom("");
                    } else {
                        fr = new wchar_t[wcslen(accName) + wcslen(emailSender) + 10];
                        wsprintf(fr, TEXT("\"%s\" <%s>"), accName, emailSender );
                        msg.setFrom(_wcc(fr));
                        delete [] fr; fr = NULL;
                    }

            } else {
                // if the email is default user it means the sender is empty and the user
                // want to use the default mail added by the server.
                // The check wcsstr of the email sender is on the acute only to avoid
                // something like default@email.com that can be valid
                if (wcscmp(emailSender, DEFAULT_USER_W) == 0 ||
                    wcsstr(emailSender, DEFAULT_USER_W_ACUTE) != 0) {
                    msg.setFrom("");
                } else {
                    msg.setFrom(_wcc(emailSender));
                }



            }
            //msg.setFrom(_wcc(emailSender));
            LOG.debug("MailClientToServer: From: %s\n", msg.getFrom());
        }

        // Set recipients ---------------------------------------------------------
        char* to = NULL, *cc = NULL, *bcc = NULL;
        hr = GetRecipients(pmsg, &to, &cc, &bcc);
        EXIT_ON_FAILED (hr);

        msg.setTo (to);
        msg.setCc (cc);
        msg.setBcc(bcc);

        if (to) delete [] to;
        if (cc) delete [] cc;
        if (bcc) delete [] bcc;

        // Set body -----------------------------------------------------------
        BodyPart bodyPart;
        wchar_t *buffer = NULL;
        char* body = NULL;
        hr = GetBody(pmsg, &buffer);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av资源站| 国产精品18久久久久| 国产亚洲va综合人人澡精品| 日韩欧美一级片| 亚洲精品一线二线三线无人区| 欧美肥妇free| 日韩亚洲电影在线| 精品欧美乱码久久久久久| 日韩欧美区一区二| 久久色中文字幕| 国产精品盗摄一区二区三区| 中文字幕在线观看一区二区| 亚洲欧美另类图片小说| 亚洲综合色丁香婷婷六月图片| 亚洲成av人片在线| 国内成人自拍视频| proumb性欧美在线观看| 精品蜜桃在线看| 国产天堂亚洲国产碰碰| 亚洲人亚洲人成电影网站色| 一区二区在线免费| 蜜桃视频在线观看一区| 国产福利一区二区三区| 91小视频在线免费看| 91麻豆精品国产91久久久久| 精品福利视频一区二区三区| 国产夜色精品一区二区av| 成人免费在线观看入口| 午夜精品影院在线观看| 国产麻豆精品久久一二三| aaa亚洲精品| 日韩一区二区精品葵司在线| 国产精品网曝门| 日韩av一区二区三区| 处破女av一区二区| 欧美精品自拍偷拍| 国产精品少妇自拍| 日本女人一区二区三区| 成人99免费视频| 欧美一区二区免费视频| 亚洲欧洲韩国日本视频| 美女视频一区二区| 91在线无精精品入口| 91麻豆精品国产自产在线观看一区 | 首页国产欧美久久| 国产aⅴ综合色| 日韩一区二区在线免费观看| 亚洲欧美日韩一区二区三区在线观看| 久久精品国产**网站演员| 91一区二区在线| 久久九九全国免费| 日本网站在线观看一区二区三区 | 久久精品国产一区二区三区免费看| 国产成人一区在线| 日韩精品一区二区三区蜜臀| 亚洲区小说区图片区qvod| 韩国av一区二区三区在线观看| 欧美影院一区二区三区| 国产精品久久影院| 丁香啪啪综合成人亚洲小说| 精品国产乱码久久久久久蜜臀| 午夜伊人狠狠久久| 在线观看成人小视频| 日韩美女精品在线| 成人福利视频在线看| 久久―日本道色综合久久| 欧美a级一区二区| 欧美日韩国产经典色站一区二区三区 | gogogo免费视频观看亚洲一| 久久综合久久鬼色中文字| 日精品一区二区三区| 欧美日韩国产经典色站一区二区三区| 一片黄亚洲嫩模| 在线观看国产一区二区| 亚洲激情av在线| 欧美午夜精品久久久久久孕妇| 亚洲欧美另类久久久精品| 99精品国产99久久久久久白柏| 美女网站在线免费欧美精品| 欧美日韩国产综合一区二区三区| 亚洲一区在线观看视频| 欧美日韩国产乱码电影| 日韩综合小视频| 日韩精品资源二区在线| 久久国产成人午夜av影院| 精品久久久网站| 国产九色精品成人porny| 国产调教视频一区| 在线视频一区二区三| 天天影视色香欲综合网老头| 精品国产免费视频| 国产.欧美.日韩| 一区二区三区在线免费播放 | 国产美女在线观看一区| 国产亚洲欧美在线| 99久久久国产精品| 图片区小说区国产精品视频| 欧美xxxxxxxxx| www.在线欧美| 午夜电影网一区| 久久亚区不卡日本| 91女厕偷拍女厕偷拍高清| 亚洲成人免费在线| 亚洲午夜私人影院| 精品三级av在线| 99久久精品久久久久久清纯| 天堂在线亚洲视频| 国产色一区二区| 欧美三级电影网| 国产成人精品综合在线观看 | 日本v片在线高清不卡在线观看| 26uuu国产日韩综合| 成人黄色在线看| 午夜激情综合网| 国产精品毛片高清在线完整版| 欧美亚洲免费在线一区| 国产一区二区三区不卡在线观看| 亚洲欧洲精品一区二区三区不卡| 欧美日韩亚洲不卡| 成人h精品动漫一区二区三区| 亚洲在线视频一区| 欧美国产综合一区二区| 8x8x8国产精品| 91麻豆免费看片| 国产91精品入口| 激情小说亚洲一区| 污片在线观看一区二区| 亚洲视频在线一区| 国产欧美一区二区精品性色超碰 | 91精品国产综合久久久久久久久久| 国产精品一二三区在线| 亚洲国产精品久久一线不卡| 日本一区二区免费在线观看视频| 91精品麻豆日日躁夜夜躁| 91久久精品一区二区二区| 国产成人日日夜夜| 国内精品视频666| 美国十次了思思久久精品导航| 亚洲黄色性网站| 一区二区三区在线观看动漫| 国产欧美日韩久久| 国产蜜臀97一区二区三区| 久久久国产精品午夜一区ai换脸| 欧美一区二区啪啪| 日韩一二三区视频| 日韩欧美国产电影| 日韩欧美国产成人一区二区| 7777女厕盗摄久久久| 91精品国产综合久久久久久久久久| 欧美少妇bbb| 欧美肥胖老妇做爰| 日韩欧美一区二区久久婷婷| 欧美一区二区三区四区久久| 91麻豆精品国产91久久久久久久久| 欧美三级在线看| 欧美精品一卡二卡| 91精品婷婷国产综合久久| 911精品国产一区二区在线| 欧美午夜宅男影院| 日韩欧美激情一区| 国产性天天综合网| 国产精品日韩精品欧美在线| 国产精品青草久久| 亚洲一区二区精品久久av| 亚洲h精品动漫在线观看| 三级在线观看一区二区| 蜜桃久久精品一区二区| 欧美电影一区二区| 日韩精品一区二区三区在线播放| 日韩精品中午字幕| 国产精品毛片a∨一区二区三区| 亚洲黄色片在线观看| 亚洲不卡一区二区三区| 久久精品72免费观看| 高清视频一区二区| 欧美色中文字幕| 久久久亚洲精华液精华液精华液 | 天天亚洲美女在线视频| 国内精品写真在线观看| gogo大胆日本视频一区| 欧美另类一区二区三区| 亚洲精品一区二区三区在线观看| 欧美激情一区二区三区全黄| 亚洲精品ww久久久久久p站| 日日夜夜免费精品视频| 国产精品一区专区| 色8久久人人97超碰香蕉987| 日韩三级视频在线看| 中文字幕va一区二区三区| 亚洲欧美福利一区二区| 看电影不卡的网站| 一本久久a久久精品亚洲| 91麻豆精品91久久久久同性| 国产精品国产三级国产aⅴ原创 | 69堂成人精品免费视频| 中文字幕精品—区二区四季| 三级欧美韩日大片在线看| 国产成人99久久亚洲综合精品| 欧美狂野另类xxxxoooo| 国产精品久久久久影院色老大|