QMessageId addMessage(const Parameters ¶ms) { QString parentAccountName(params["parentAccountName"]); QString parentFolderPath(params["parentFolderPath"]); QString to(params["to"]); QString from(params["from"]); QString cc(params["cc"]); QString bcc(params["bcc"]); QString date(params["date"]); QString receivedDate(params["receivedDate"]); QString subject(params["subject"]); QString text(params["text"]); QString mimeType(params["mimeType"]); QString attachments(params["attachments"]); QString priority(params["priority"]); QString size(params["size"]); QString type(params["type"]); QString read(params["status-read"]); QString hasAttachments(params["status-hasAttachments"]); QMessageManager mgr; if (!to.isEmpty() && !from.isEmpty() && !date.isEmpty() && !subject.isEmpty() && !parentAccountName.isEmpty() && !parentFolderPath.isEmpty()) { // Find the named account QMessageAccountIdList accountIds(mgr.queryAccounts(QMessageAccountFilter::byName(parentAccountName))); if (accountIds.count() == 1) { // Find the specified folder QMessageFolderFilter filter(QMessageFolderFilter::byPath(parentFolderPath, QMessageDataComparator::Equal) & QMessageFolderFilter::byParentAccountId(accountIds.first())); QMessageFolderIdList folderIds(mgr.queryFolders(filter)); if (folderIds.count() == 1) { QMessage message; QMessagePrivate *p = MapiSession::privateMessage(message); message.setParentAccountId(accountIds.first()); p->_parentFolderId = folderIds.first(); QMessage::StatusFlags flags(0); if (read.toLower() == "true") { flags |= QMessage::Read; } if (hasAttachments.toLower() == "true") { flags |= QMessage::HasAttachments; } message.setStatus(flags); QList<QMessageAddress> toList; foreach (const QString &addr, to.split(",", QString::SkipEmptyParts)) { toList.append(QMessageAddress(QMessageAddress::Email, addr.trimmed())); } message.setTo(toList); QList<QMessageAddress> ccList; foreach (const QString &addr, cc.split(",", QString::SkipEmptyParts)) { ccList.append(QMessageAddress(QMessageAddress::Email, addr.trimmed())); } if (!ccList.isEmpty()) { message.setCc(ccList); } QList<QMessageAddress> bccList; foreach (const QString &addr, bcc.split(",")) { if (!addr.isEmpty()) { bccList.append(QMessageAddress(QMessageAddress::Email, addr.trimmed())); } } message.setBcc(bccList); message.setFrom(QMessageAddress(QMessageAddress::Email, from)); message.setSubject(subject); QDateTime dt(QDateTime::fromString(date, Qt::ISODate)); dt.setTimeSpec(Qt::UTC); message.setDate(dt); if (type.isEmpty()) { message.setType(QMessage::Email); } else { if (type.toLower() == "mms") { message.setType(QMessage::Mms); } else if (type.toLower() == "sms") { message.setType(QMessage::Sms); } else if (type.toLower() == "instantmessage") { message.setType(QMessage::InstantMessage); } else { message.setType(QMessage::Email); } } if (!receivedDate.isEmpty()) { QDateTime dt(QDateTime::fromString(receivedDate, Qt::ISODate)); dt.setTimeSpec(Qt::UTC); message.setReceivedDate(dt); } if (!priority.isEmpty()) { if (priority.toLower() == "high") { message.setPriority(QMessage::HighPriority); } else if (priority.toLower() == "low") { message.setPriority(QMessage::LowPriority); } } if (!text.isEmpty()) { message.setBody(text, mimeType.toAscii()); } if (!attachments.isEmpty()) { qDebug() << attachments; message.appendAttachments(attachments.split("\n")); } else { qDebug() << "Support: No attchments"; } if (!size.isEmpty()) { p->_size = size.toUInt(); } if (!mgr.addMessage(&message)) { qWarning() << "Unable to addMessage:" << to << from << date << subject; } else { return message.id(); } } else {
void MessageSender::send() { //! [associate-account] QString accountName(accountCombo->currentText()); if (accountName.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("No account is selected for transmission")); return; } QMessage message; QPair<QMessage::Type, QMessageAccountId> details = accountDetails[accountName]; message.setType(details.first); message.setParentAccountId(details.second); //! [associate-account] //! [set-recipients] QString to(toEdit->text()); if (to.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a recipient address")); return; } // Find the address type to use for this message QMessageAddress::Type addrType(message.type() == QMessage::Email ? QMessageAddress::Email : QMessageAddress::Phone); QMessageAddressList toList; foreach (const QString &item, to.split(QRegExp("\\s"), QString::SkipEmptyParts)) { toList.append(QMessageAddress(addrType, item)); } message.setTo(toList); //! [set-recipients] //! [set-properties] if (message.type() == QMessage::Email) { QString subject(subjectEdit->text()); if (subject.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a subject")); return; } message.setSubject(subject); } QString text(textEdit->toPlainText()); if (text.isEmpty()) { QMessageBox::warning(0, tr("Missing information"), tr("Please enter a message")); return; } message.setBody(text); //! [set-properties] //! [add-attachments] if (message.type() != QMessage::Sms) { if (attachmentsList->count()) { QStringList paths; for (int i = 0; i < attachmentsList->count(); ++i) { paths.append(attachmentsList->item(i)->text()); } message.appendAttachments(paths); } } //! [add-attachments] //! [send-message] sendButton->setEnabled(false); if (service.send(message)) { sendId = message.id(); } else { sendButton->setEnabled(true); QMessageBox::warning(0, tr("Failed"), tr("Unable to send message")); } //! [send-message] }