void Submission::setImapOptions(const bool saveToSentFolder, const QString &sentFolderName, const QString &hostname, const QString &username, const bool useImapSubmit) { m_saveToSentFolder = saveToSentFolder; m_sentFolderName = sentFolderName; m_imapHostname = hostname; m_imapUsername = username; m_useImapSubmit = useImapSubmit; m_composer->setPreloadEnabled(shouldBuildMessageLocally()); }
void Submission::setSmtpOptions(const bool useBurl, const QString &smtpUsername) { m_useBurl = useBurl; if (m_useBurl && !m_model->isGenUrlAuthSupported()) { m_model->logTrace(0, Common::LOG_OTHER, QLatin1String("Submission"), tr("Cannot BURL without the URLAUTH extension")); m_useBurl = false; } m_smtpUsername = smtpUsername; m_composer->setPreloadEnabled(shouldBuildMessageLocally()); }
void Submission::send() { // this double-updating is needed in case the same Submission attempts to send a message more than once changeConnectionState(STATE_INIT); changeConnectionState(STATE_BUILDING_MESSAGE); if (shouldBuildMessageLocally() && !m_composer->isReadyForSerialization()) { // we have to wait until the data arrive // FIXME: relax this to wait here gotError(tr("Some data are not available yet")); } else { slotMessageDataAvailable(); } }
void Submission::slotMessageDataAvailable() { m_rawMessageData.clear(); QBuffer buf(&m_rawMessageData); buf.open(QIODevice::WriteOnly); QString errorMessage; QList<Imap::Mailbox::CatenatePair> catenateable; if (shouldBuildMessageLocally() && !m_composer->asRawMessage(&buf, &errorMessage)) { gotError(tr("Cannot send right now -- saving failed:\n %1").arg(errorMessage)); return; } if (m_model->isCatenateSupported() && !m_composer->asCatenateData(catenateable, &errorMessage)) { gotError(tr("Cannot send right now -- saving (CATENATE) failed:\n %1").arg(errorMessage)); return; } if (m_saveToSentFolder) { Q_ASSERT(m_model); m_appendUidReceived = false; m_genUrlAuthReceived = false; changeConnectionState(STATE_SAVING); QPointer<Imap::Mailbox::AppendTask> appendTask = 0; if (m_model->isCatenateSupported()) { // FIXME: without UIDPLUS, there isn't much point in $SubmitPending... appendTask = QPointer<Imap::Mailbox::AppendTask>( m_model->appendIntoMailbox( m_sentFolderName, catenateable, QStringList() << QLatin1String("$SubmitPending") << QLatin1String("\\Seen"), m_composer->timestamp())); } else { // FIXME: without UIDPLUS, there isn't much point in $SubmitPending... appendTask = QPointer<Imap::Mailbox::AppendTask>( m_model->appendIntoMailbox( m_sentFolderName, m_rawMessageData, QStringList() << QLatin1String("$SubmitPending") << QLatin1String("\\Seen"), m_composer->timestamp())); } Q_ASSERT(appendTask); connect(appendTask.data(), SIGNAL(appendUid(uint,uint)), this, SLOT(slotAppendUidKnown(uint,uint))); connect(appendTask.data(), SIGNAL(completed(Imap::Mailbox::ImapTask*)), this, SLOT(slotAppendSucceeded())); connect(appendTask.data(), SIGNAL(failed(QString)), this, SLOT(slotAppendFailed(QString))); } else {
void Submission::send() { if (!m_model) { gotError(tr("The IMAP connection has disappeared. " "You'll have close the composer, save the draft and re-open it later. " "The attachments will have to be added later. Sorry for the trouble, " "please see <a href=\"https://projects.flaska.net/issues/640\">https://projects.flaska.net/issues/640</a> " "for details.")); return; } // this double-updating is needed in case the same Submission attempts to send a message more than once changeConnectionState(STATE_INIT); changeConnectionState(STATE_BUILDING_MESSAGE); if (shouldBuildMessageLocally() && !m_composer->isReadyForSerialization()) { // we have to wait until the data arrive // FIXME: relax this to wait here gotError(tr("Some data are not available yet")); } else { slotMessageDataAvailable(); } }