⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emailhandler.cpp

📁 Qtopia下的邮件处理程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		replace(mBody, "\n", "\r\n");				if ( mBody.indexOf("\r\n.\r\n", -5) > -1 ) {		    mBody.truncate( mBody.length() -3 );    // leave \r\n only, smtpclient handles delimiter of message		} else if ( !mBody.indexOf("\r\n", -2) > -1 ) {		    mBody += "\r\n";		}		if ( currentMail->replyTo().isEmpty() ) {		    smtpClient->addMail("<" + currentMail->fromEmail() + ">",					currentMail->subject(),					combinedList, mBody);		} else {		    smtpClient->addMail(userName, currentMail->subject(),					combinedList, mBody);		}		smtpOk = true;          //reset the Bcc just in case        if(mailBcc.count() > 0){            currentMail->setBcc(mailBcc);            currentMail->encodeMail();        }           }	} else {							//error	    temp = tr("Could not locate all files\nin mail with subject:\n"		      "%1\nNO mail has been sent")		.arg( currentMail->subject() );		    QMessageBox::warning(qApp->activeWindow(), tr( "Mail encoding error" ), temp, tr( "OK" ));	    allOk = false;	}             }    if (allOk && (smtpOk#ifdef QTOPIA_PHONE		|| smsOk#ifndef QTOPIA_NO_MMS		|| mmsOk#endif#endif		)) {	if (smtpOk) {	    smtpClient->setAccount(smtpAccount);	    smtpClient->newConnection();	}#ifdef QTOPIA_PHONE	if (smsOk)	    smsClient->newConnection();	else	    smsClient->clearList();#ifndef QTOPIA_NO_MMS	if (mmsOk)	    mmsClient->newConnection();#endif#endif	emit mailSendSize(allMailSize);    } else {	emit mailSent(-1);#ifdef QTOPIA_PHONE	smsClient->clearList();#endif    }}void EmailHandler::setSmtpAccount(MailAccount *account){    smtpAccount = account;}void EmailHandler::setMailAccount(MailAccount *account){                   	    mailAccount = account;}void EmailHandler::setSmsAccount(MailAccount *account){    smsAccount = account;#ifdef QTOPIA_PHONE    smsClient->setAccount( account );#endif}void EmailHandler::setMmsAccount(MailAccount *account){    mmsAccount = account;#ifdef QTOPIA_PHONE#ifndef QTOPIA_NO_MMS    mmsClient->setAccount(account);#endif#endif}void EmailHandler::getMailHeaders(){    Client *client = clientFromAccount(mailAccount);    if ( mailAccount->accountType() == MailAccount::POP )	receiving = true; // maybe this should be unconditional    if (client) {	client->setAccount(mailAccount);	client->headersOnly(true, 2000);	//less than 2000, download all	client->newConnection();    }}void EmailHandler::getMailByList(MailList *mailList, bool newConnection){    if (mailList->count() == 0) {	//should not occur though	emit mailTransferred(0);	return;    }    receiving = true;    Client *client = clientFromAccount(mailAccount);    if (client) {	client->headersOnly(false, 0);		if (newConnection) {	    client->setAccount(mailAccount);	    client->newConnection();	}		client->setSelectedMails(mailList, !newConnection);    }}void EmailHandler::popQuit(){    Client *client = clientFromAccount(mailAccount);    if (client)	client->quit();    receiving = false;}void EmailHandler::acceptMail(const Email &mail){#if defined(QTOPIA_PHONE) && !defined(QTOPIA_NO_MMS)    if (mmsClient && mail.type() == MailMessage::MMS) {	mmsClient->sendNotifyResp(mail, "Deferred");    }#elif !defined(QTOPIA_DESKTOP)    //Q_CONST_UNUSED(mail);    (void)mail;#endif}void EmailHandler::rejectMail(const Email &mail){#if defined(QTOPIA_PHONE) && !defined(QTOPIA_NO_MMS)    if (mmsClient && mail.type() == MailMessage::MMS) {	mmsClient->sendNotifyResp(mail, "Rejected");    }#elif !defined(QTOPIA_DESKTOP)    //Q_CONST_UNUSED(mail);    (void)mail;#endif}void EmailHandler::unresolvedUidl(QStringList &list){    QString user = mailAccount->id();	    emit unresolvedUidlList(user, list);}void EmailHandler::messageArrived(const QString &message, const QString &id, const QUuid &internalId, uint size, bool complete){    Email mail;	    mail.setStatus(EFlag_Incoming, true );    mail.setUuid( internalId );	    QString str = message;    replace(str, QString::fromLatin1( "\r\n" ), QString::fromLatin1( "\n" ) );    mail.fromRFC822( str );    mail.setSize( size );    mail.setStatus(EFlag_Downloaded, complete);    mail.setServerUid( id.mid( id.indexOf(" ") + 1, id.length() ) );    if (id.startsWith("sms:")) {	mail.setServerUid(id);	if (smsAccount)	    mail.setFromAccount( smsAccount->id() );	mail.setType(MailMessage::SMS);#ifndef QTOPIA_NO_MMS    } else if (id.startsWith("X-Mms-Content-Location")                || id.startsWith("X-Mms-MMS-Version")) {	if (mmsAccount)	    mail.setFromAccount( mmsAccount->id() );	mail.setType(MailMessage::MMS);#endif    } else {	mail.setFromAccount( mailAccount->id() );	mail.setType(MailMessage::Email);    }    mail.setFromMailbox("");    emit mailArrived(mail);}void EmailHandler::messageArrived(Email mail){    emit mailArrived(mail);}void EmailHandler::messageArrived(const QString &message, const QString &id, const QUuid &internalId, uint size, bool complete,				    const QString &folder, uint flags){    Email mail;    mail.setUuid( internalId );    mail.setStatus(EFlag_Incoming, true );    if ( flags & MFlag_Seen ) {	mail.setStatus(EFlag_IMAP_Seen, true );    }    if ( flags & MFlag_Answered )	mail.setStatus(EFlag_Replied, true );	    QString str = message;    replace(str, QString::fromLatin1( "\r\n" ), QString::fromLatin1( "\n" ) );    mail.fromRFC822( str );	    mail.setSize( size );    mail.setStatus(EFlag_Downloaded, complete);    mail.setServerUid( id.mid( id.indexOf(" ") + 1, id.length() ) );    mail.setFromAccount( mailAccount->id() );    mail.setFromMailbox( folder );    mail.setType(MailMessage::Email);    emit mailArrived(mail);}void EmailHandler::cancel(){    QString msg = tr( "Cancelled by user" );	    receiving = false;	    /* all clients handles this call regardless of whether	they are actually in use or not (disregarded) */    popClient->errorHandling(ErrCancel, msg);    imapClient->errorHandling(ErrCancel, msg);    smtpClient->errorHandling(ErrCancel, msg);#ifdef QTOPIA_PHONE    smsClient->errorHandling(ErrCancel, msg);#ifndef QTOPIA_NO_MMS    mmsClient->errorHandling(ErrCancel, msg);#endif#endif}Client* EmailHandler::clientFromAccount(MailAccount *account){    if ( account->accountType() == MailAccount::POP )	return popClient;#ifdef QTOPIA_PHONE#ifndef QTOPIA_NO_MMS    else if ( account->accountType() == MailAccount::MMS)	return mmsClient;#endif    else if ( account->accountType() == MailAccount::SMS)	return smsClient;#endif    else if ( account->accountType() == MailAccount::IMAP)	return imapClient;    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -