Messagelib
composerviewbase.cpp
2 SPDX-FileCopyrightText: 2010 Klaralvdalens Datakonsult AB, a KDAB Group company, [email protected]
115 bool resultTooManyRecipients = m_recipientsEditor->setRecipientString(m_msg->to()->mailboxes(), MessageComposer::Recipient::To);
117 resultTooManyRecipients = m_recipientsEditor->setRecipientString(m_msg->cc()->mailboxes(), MessageComposer::Recipient::Cc);
120 resultTooManyRecipients = m_recipientsEditor->setRecipientString(m_msg->bcc()->mailboxes(), MessageComposer::Recipient::Bcc);
123 resultTooManyRecipients = m_recipientsEditor->setRecipientString(m_msg->replyTo()->mailboxes(), MessageComposer::Recipient::ReplyTo);
205 const MailTransport::Transport *transport = MailTransport::TransportManager::self()->transportById(transportId);
219 htmlContent.replace(QRegularExpression(QStringLiteral("<div\\s*id=\".*\">")), QStringLiteral("<div>"));
311 void ComposerViewBase::send(MessageComposer::MessageSender::SendMethod method, MessageComposer::MessageSender::SaveIn saveIn, bool checkMailDispatcher)
329 m_encrypt ? m_sign ? i18n("&Keep markup, do not sign/encrypt") : i18n("&Keep markup, do not encrypt") : i18n("&Keep markup, do not sign");
330 const QString yesBtnText = m_encrypt ? m_sign ? i18n("Sign/Encrypt (delete markup)") : i18n("Encrypt (delete markup)") : i18n("Sign (delete markup)");
360 qCWarning(MESSAGECOMPOSER_LOG) << "Impossible to set sendmaildispatcher online. Please verify it";
383 qCDebug(MESSAGECOMPOSER_LOG) << "ready for sending: Called while composer active; ignoring. Number of composer " << m_composers.count();
399 connect(job, &MessageComposer::EmailAddressResolveJob::result, this, &ComposerViewBase::slotEmailAddressResolved);
406 qCWarning(MESSAGECOMPOSER_LOG) << "An error occurred while resolving the email addresses:" << job->errorString();
411 bool autoresizeImage = MessageComposer::MessageComposerSettings::self()->autoResizeImageEnabled();
413 const MessageComposer::EmailAddressResolveJob *resolveJob = qobject_cast<MessageComposer::EmailAddressResolveJob *>(job);
502 if (m_neverEncrypt && mSaveIn != MessageComposer::MessageSender::SaveInNone && !mSendLaterInfo) {
546 connect(composer, &MessageComposer::Composer::result, this, &ComposerViewBase::slotSendComposeResult);
561 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnEncrKeyNearExpiryThresholdDays();
570 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnSignKeyNearExpiryThresholdDays();
579 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnEncrRootNearExpiryThresholdDays();
588 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnSignRootNearExpiryThresholdDays();
597 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnEncrChaincertNearExpiryThresholdDays();
606 const int num = MessageComposer::MessageComposerSettings::self()->cryptoWarnSignChaincertNearExpiryThresholdDays();
663 qCWarning(MESSAGECOMPOSER_LOG) << "Failed to export " << k.primaryFingerprint() << result.asString();
685 qCDebug(MESSAGECOMPOSER_LOG) << "Adding " << k.primaryFingerprint() << "from Autocrypt storage";
709 QVector<MessageComposer::Composer *> ComposerViewBase::generateCryptoMessages(bool &wasCanceled)
716 NearExpiryChecker::Ptr nearExpiryChecker(new NearExpiryChecker(encryptKeyNearExpiryWarningThresholdInDays(),
723 connect(nearExpiryChecker.data(), &NearExpiryChecker::expiryMessage, this, [&canceled](const GpgME::Key &key, QString msg, NearExpiryChecker::ExpiryInformation info) {
818 signSomething = determineWhetherToSign(doSignCompletely, keyResolver.data(), signSomething, result, canceled);
832 encryptSomething = determineWhetherToEncrypt(doEncryptCompletely, keyResolver.data(), encryptSomething, signSomething, result, canceled);
854 composer->setSenderEncryptionKey(keyResolver->encryptToSelfKeysFor(Kleo::OpenPGPMIMEFormat)[0]);
932 Q_ASSERT_X(false, "ComposerViewBase::generateCryptoMessages", "No concrete sign or encrypt method selected");
946 void ComposerViewBase::fillInfoPart(MessageComposer::InfoPart *infoPart, ComposerViewBase::RecipientExpansion expansion)
971 infoPart->setReplyTo(m_recipientsEditor->recipientStringList(MessageComposer::Recipient::ReplyTo));
1055 qCDebug(MESSAGECOMPOSER_LOG) << "compose job might have error: " << job->error() << " errorString: " << job->errorString();
1112 void ComposerViewBase::queueMessage(const KMime::Message::Ptr &message, MessageComposer::Composer *composer)
1123 qjob->sentBehaviourAttribute().setSentBehaviour(MailTransport::SentBehaviourAttribute::Delete);
1125 qjob->sentBehaviourAttribute().setSentBehaviour(MailTransport::SentBehaviourAttribute::MoveToCollection);
1130 qjob->sentBehaviourAttribute().setSentBehaviour(MailTransport::SentBehaviourAttribute::MoveToDefaultSentCollection);
1133 MailTransport::Transport *transport = MailTransport::TransportManager::self()->transportById(infoPart->transportId());
1136 KEmailAddress::extractEmailAddress(KEmailAddress::normalizeAddressesAndEncodeIdn(transport->senderOverwriteAddress())));
1138 qjob->addressAttribute().setFrom(KEmailAddress::extractEmailAddress(KEmailAddress::normalizeAddressesAndEncodeIdn(infoPart->from())));
1140 // if this header is not empty, it contains the real recipient of the message, either the primary or one of the
1141 // secondary recipients. so we set that to the transport job, while leaving the message itself alone.
1143 qjob->addressAttribute().setTo(MessageComposer::Util::cleanUpEmailListAndEncoding(realTo->asUnicodeString().split(QLatin1Char('%'))));
1146 qCDebug(MESSAGECOMPOSER_LOG) << "sending with-bcc encr mail to a/n recipient:" << qjob->addressAttribute().to();
1148 qjob->addressAttribute().setTo(MessageComposer::Util::cleanUpEmailListAndEncoding(infoPart->to()));
1149 qjob->addressAttribute().setCc(MessageComposer::Util::cleanUpEmailListAndEncoding(infoPart->cc()));
1150 qjob->addressAttribute().setBcc(MessageComposer::Util::cleanUpEmailListAndEncoding(infoPart->bcc()));
1160 connect(qjob, &MailTransport::MessageQueueJob::result, this, &ComposerViewBase::slotQueueResult);
1179 QString msg = i18n("There were problems trying to queue the message for sending: %1", job->errorString());
1198 QDir dataDirectory(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kmail2/"));
1268 QDir autoSaveDir(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kmail2/autosave"));
1297 qCDebug(MESSAGECOMPOSER_LOG) << "Autosave: Called while composer active; ignoring. Number of composer " << m_composers.count();
1306 connect(composer, &MessageComposer::Composer::result, this, &ComposerViewBase::slotAutoSaveComposeResult);
1351 const QString autosavePath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kmail2/autosave/");
1361 if (file.write(message->encodedContent()) != static_cast<qint64>(message->encodedContent().size())) {
1373 qCWarning(MESSAGECOMPOSER_LOG) << "Auto saving failed:" << errorMessage << file.errorString() << " m_autoSaveUUID" << m_autoSaveUUID;
1395 void ComposerViewBase::saveMessage(const KMime::Message::Ptr &message, MessageComposer::MessageSender::SaveIn saveIn)
1430 target = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::Outbox);
1436 auto saveMessageJob = new Akonadi::CollectionFetchJob(target, Akonadi::CollectionFetchJob::Base);
1438 QObject::connect(saveMessageJob, &Akonadi::CollectionFetchJob::result, this, &ComposerViewBase::slotSaveMessage);
1443 connect(create, &Akonadi::ItemCreateJob::result, this, &ComposerViewBase::slotCreateItemResult);
1455 const Akonadi::CollectionFetchJob *fetchJob = qobject_cast<Akonadi::CollectionFetchJob *>(job);
1463 connect(create, &Akonadi::ItemCreateJob::result, this, &ComposerViewBase::slotCreateItemResult);
1474 target = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::Drafts);
1477 target = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::Templates);
1480 target = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::Outbox);
1525 void ComposerViewBase::addAttachment(const QString &name, const QString &filename, const QString &charset, const QByteArray &data, const QByteArray &mimeType)
1527 MessageCore::AttachmentPart::Ptr attachment = MessageCore::AttachmentPart::Ptr(new MessageCore::AttachmentPart());
1543 if (partToAttach->contentType()->mimeType() == "multipart/digest" || partToAttach->contentType(false)->mimeType() == "message/rfc822") {
1577 void ComposerViewBase::fillComposer(MessageComposer::Composer *composer, ComposerViewBase::RecipientExpansion expansion, bool autoresize)
1591 return MessageComposer::Util::cleanedUpHeaderString(m_recipientsEditor->recipientString(MessageComposer::Recipient::To));
1600 return MessageComposer::Util::cleanedUpHeaderString(m_recipientsEditor->recipientString(MessageComposer::Recipient::Cc));
1609 return MessageComposer::Util::cleanedUpHeaderString(m_recipientsEditor->recipientString(MessageComposer::Recipient::Bcc));
1622 return MessageComposer::Util::cleanedUpHeaderString(m_recipientsEditor->recipientString(MessageComposer::Recipient::ReplyTo));
1647 void ComposerViewBase::setAttachmentController(MessageComposer::AttachmentControllerBase *controller)
1677 void ComposerViewBase::setSignatureController(MessageComposer::SignatureController *sigController)
1730 void ComposerViewBase::identityChanged(const KIdentityManagement::Identity &ident, const KIdentityManagement::Identity &oldIdent, bool msgCleared)
1736 KIdentityManagement::Signature oldSig = const_cast<KIdentityManagement::Identity &>(oldIdent).signature();
1737 KIdentityManagement::Signature newSig = const_cast<KIdentityManagement::Identity &>(ident).signature();
1789 auto const checkFccCollectionJob = new Akonadi::CollectionFetchJob(fccCollection, Akonadi::CollectionFetchJob::Base);
1790 connect(checkFccCollectionJob, &KJob::result, this, &ComposerViewBase::slotFccCollectionCheckResult);
1796 qCWarning(MESSAGECOMPOSER_LOG) << " void ComposerViewBase::slotFccCollectionCheckResult(KJob *job) error " << job->errorString();
1797 const Akonadi::Collection sentMailCol = Akonadi::SpecialMailCollections::self()->defaultCollection(Akonadi::SpecialMailCollections::SentMail);
1835 void ComposerViewBase::setCryptoOptions(bool sign, bool encrypt, Kleo::CryptoMessageFormat format, bool neverEncryptDrafts)
1868 if (parentnode && parentnode->contentType()->isMultipart() && parentnode->contentType()->subType() == "related") {
1872 qCDebug(MESSAGECOMPOSER_LOG) << "found image in multipart/related : " << node->contentType()->name();
1904 return MessageComposer::Util::hasMissingAttachments(attachmentKeywords, m_editor->document(), subject());
1907 ComposerViewBase::MissingAttachment ComposerViewBase::checkForMissingAttachments(const QStringList &attachmentKeywords)
1950 bool ComposerViewBase::determineWhetherToSign(bool doSignCompletely, Kleo::KeyResolver *keyResolver, bool signSomething, bool &result, bool &canceled)
1975 KMessageBox::questionYesNoCancel(m_parentWidget, msg, i18n("Sign Message?"), KGuiItem(i18nc("to sign", "&Sign")), KGuiItem(i18n("Do &Not Sign")))) {
2000 KMessageBox::warningYesNoCancel(m_parentWidget, msg, i18n("Sign Message?"), KGuiItem(i18nc("to sign", "&Sign")), KGuiItem(i18n("Do &Not Sign")))) {
2023 if (KMessageBox::warningContinueCancel(m_parentWidget, msg, i18n("Send Unsigned?"), KGuiItem(i18n("Send &Unsigned"))) == KMessageBox::Cancel) {
2044 const QString buttonText = sign && !doSignCompletely ? i18n("&Sign All Parts") : i18n("&Sign");
2046 KMessageBox::warningYesNoCancel(m_parentWidget, msg, i18n("Unsigned-Message Warning"), KGuiItem(buttonText), KGuiItem(i18n("Send &As Is")))) {
2128 switch (KMessageBox::warningYesNoCancel(m_parentWidget, msg, i18n("Encrypt Message?"), KGuiItem(i18n("&Encrypt")), KGuiItem(i18n("Do &Not Encrypt")))) {
2152 if (KMessageBox::warningContinueCancel(m_parentWidget, msg, i18n("Send Unencrypted?"), KGuiItem(i18n("Send &Unencrypted"))) == KMessageBox::Cancel) {
2175 const QString buttonText = !doEncryptCompletely ? i18n("&Encrypt All Parts") : i18n("&Encrypt");
2217 job->setTo(mExpandedReplyTo.isEmpty() ? mExpandedTo.join(QLatin1Char(',')) : mExpandedReplyTo.join(QLatin1Char(',')));
bool isValid() const
KCODECS_EXPORT QByteArray extractEmailAddress(const QByteArray &address)
void clear()
QStringList expandedBcc() const
Returns the expanded Bcc field.
Definition: emailaddressresolvejob.cpp:180
bool isImage() const
currentText
QString cc() const
QString expandedFrom() const
Returns the expanded From field.
Definition: emailaddressresolvejob.cpp:165
void disableHtml(MessageComposer::ComposerViewBase::Confirmation)
Enabling or disabling HTML in the editor is affected by various client options, so when that would ot...
bool isEmpty() const const
Simple interface that both EncryptJob and SignEncryptJob implement so the composer can extract some e...
Definition: attachmentcontrollerbase.h:25
Transport * transportById(int id, bool def=true) const
Akonadi::Collection defaultCollection(Type type) const
QString number(int n, int base)
QString fcc
The name of a file, to which a copy of the sent message should be appended.
Definition: infopart.h:45
WriteOnly
QString fromUtf8(const char *str, int size)
int size() const const
virtual Q_SCRIPTABLE void start()=0
QVariant fromValue(const T &value)
bool setCurrentTransport(int transportId)
QByteArray mimeType() const
QStringList to
The email address and optionally the name of the primary recipients.
Definition: infopart.h:29
KGuiItem cont()
Q_EMITQ_EMIT
void removePrivateHeaderFields(const KMime::Message::Ptr &message, bool cleanUpHeader)
Removes all private header fields (e.g.
Definition: stringutil.cpp:354
Content * parent() const
void result(KJob *job)
MESSAGECORE_EXPORT KMime::Content * nextSibling(const KMime::Content *node)
Returns the next sibling node of the given node.
Definition: messagecore/src/helpers/nodehelper.cpp:14
QDateTime currentDateTime()
int count(const T &value) const const
T value() const const
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
void clear()
void addAttachment(const QUrl &url, const QString &comment, bool sync)
Add the given attachment to the message.
Definition: composerviewbase.cpp:1514
void setAutoSaveFileName(const QString &fileName)
Sets the filename to use when autosaving something.
Definition: composerviewbase.cpp:1310
void append(const T &value)
qlonglong toLongLong(bool *ok, int base) const const
void sentSuccessfully(Akonadi::Item::Id id)
Message sending completed successfully.
The SignatureController class Controls signature (the footer thing, not the crypto thing) operations ...
Definition: signaturecontroller.h:34
Id id() const
void setMimeType(const QString &mimeType)
Parses messages and generates HTML display code out of them.
Definition: objecttreeparser.h:245
void push_back(const T &value)
void setMessage(const KMime::Message::Ptr &newMsg, bool allowDecryption)
Set the message to be opened in the composer window, and set the internal data structures to keep tra...
Definition: composerviewbase.cpp:102
QString writableLocation(QStandardPaths::StandardLocation type)
QStringList expandedCc() const
Returns the expanded CC field.
Definition: emailaddressresolvejob.cpp:175
QByteArray toLatin1() const const
void send(MessageComposer::MessageSender::SendMethod method, MessageComposer::MessageSender::SaveIn saveIn, bool checkMailDispatcher=true)
Send the message with the specified method, saving it in the specified folder.
Definition: composerviewbase.cpp:311
ButtonCode warningYesNo(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const QString &dontAskAgainName=QString(), Options options=Options(Notify|Dangerous))
int exec(QEventLoop::ProcessEventsFlags flags)
A very simple ObjectTreeSource.
Definition: simpleobjecttreesource.h:20
Headers::ContentID * contentID(bool create=true)
bool loadFromData(const uchar *data, int len, const char *format)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
int currentTransportId() const
document
QString name() const
const Identity & identityForUoidOrDefault(uint uoid) const
AKONADI_MIME_EXPORT void copyMessageFlags(KMime::Message &from, Akonadi::Item &to)
QVector< KMime::Content * > attachmentsOfExtraContents() const
Returns a list of attachments of attached extra content nodes.
Definition: mimetreeparser/src/nodehelper.cpp:1105
QByteArray identifier() const
void sorry(QWidget *parent, const QString &text, const QString &caption, const KGuiItem &buttonOk, Options options=Notify)
KCALUTILS_EXPORT QString errorMessage(const KCalendarCore::Exception &exception)
qint64 Id
Collection::List collections() const
Message
void setDefaultCollection(const Collection &collection)
void start(int msec)
void setFrom(const QString &from)
Widgets for editing differ in client classes, so values are set before sending.
Definition: composerviewbase.cpp:1816
QAction * create(StandardAction id, const QObject *recvr, const char *slot, QObject *parent)
void setPlainText(const QString &text)
MoveToDefaultSentCollection
QString i18n(const char *text, const TYPE &arg...)
bool attachVcard() const
QSharedPointer< AttachmentPart > Ptr
Defines a pointer to an attachment object.
Definition: attachmentpart.h:31
void quit()
A job to resolve nicknames, distribution lists and email addresses for queued emails.
Definition: emailaddressresolvejob.h:27
QByteArray encodedContent(bool useCrLf=false)
QStringList cc
Carbon copy: The email address and optionally the name of the secondary recipients.
Definition: infopart.h:32
QString currentDictionary() const
void cleanupAutoSave()
Stop autosaving and delete the autosaved message.
Definition: composerviewbase.cpp:1260
const T & at(int i) const const
void timeout()
bool isEmpty() const const
QUrl fromLocalFile(const QString &localFile)
WaitCursor
QByteArray toUtf8() const const
bool mkpath(const QString &dirPath) const const
QUuid createUuid()
void removeRecipient(const QString &recipient, Recipient::Type type)
Removes the recipient provided it can be found and has the given type.
Definition: recipientseditor.cpp:164
Headers::ContentDisposition * contentDisposition(bool create=true)
The FollowupReminderCreateJob class.
Definition: followupremindercreatejob.h:26
void setAttachmentModel(MessageComposer::AttachmentModel *model)
The following are for setting the various options and widgets in the composer.
Definition: composerviewbase.cpp:1657
static TransportManager * self()
bool isComposing() const
Returns true if there is at least one composer job running.
Definition: composerviewbase.cpp:97
void setNameFilters(const QStringList &nameFilters)
bool contains(const T &value) const const
int toInt(bool *ok, int base) const const
bool isValid() const const
QStringList expandedReplyTo() const
Returns the expanded Reply-To field.
Definition: emailaddressresolvejob.cpp:185
QString replyToAddr() const
bool isEmpty() const const
void setAutoSave(bool isAutoSave)
Sets if this message being composed is an auto-saved message if so, might need different handling,...
Definition: composer.cpp:633
ReadUser
QByteArray subType() const
void setCryptoOptions(bool sign, bool encrypt, Kleo::CryptoMessageFormat format, bool neverEncryptDrafts=false)
The following are various settings the user can modify when composing a message.
Definition: composerviewbase.cpp:1835
QString htmlContent() const
Similar to plainTextContent(), but returns the HTML source of the first text/html MIME part.
Definition: objecttreeparser.cpp:108
bool remove(const QString &fileName)
bool addRecipient(const QString &recipient, Recipient::Type type)
Adds a recipient (or multiple recipients) to one line of the editor.
Definition: recipientseditor.cpp:98
QString join(const QString &separator) const const
void addAttachment(const MessageCore::AttachmentPart::Ptr &part)
sets sign, encrypt, shows properties dialog if so configured
Definition: attachmentcontrollerbase.cpp:918
void applySignature(const KIdentityManagement::Signature &signature)
Adds the given signature to the editor, taking user preferences into account.
Definition: signaturecontroller.cpp:141
KSharedConfigPtr config()
void reserve(int size)
QString toString() const const
QString bcc() const
QString & replace(int position, int n, QChar after)
void parseObjectTree(KMime::Content *node, bool parseOnlySingleNode=false)
Parse beginning at a given node and recursively parsing the children of that node and it's next sibli...
Definition: objecttreeparser.cpp:115
int removeAll(const T &t)
QByteArray decodedContent()
void setContent(const QByteArray &s)
GenericDataLocation
The AttachmentControllerBase class.
Definition: attachmentcontrollerbase.h:31
bool isEmpty() const const
Id id() const
KIOFILEWIDGETS_EXPORT QString dir(const QString &fileClass)
QString from
The email address and optionally the name of the author of the mail.
Definition: infopart.h:26
Akonadi::Collection currentCollection() const
void add(const QString &entry)
void updateAutoSave()
Enables/disables autosaving depending on the value of the autosave interval.
Definition: composerviewbase.cpp:1242
const char * constData() const const
void stop()
QString fromLatin1(const char *str, int size)
ButtonCode warningYesNoCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
ButtonCode questionYesNoCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonYes=KStandardGuiItem::yes(), const KGuiItem &buttonNo=KStandardGuiItem::no(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
QString autocorrectionLanguage() const
QStringList expandedTo() const
Returns the expanded To field.
Definition: emailaddressresolvejob.cpp:170
ButtonCode warningContinueCancel(QWidget *parent, const QString &text, const QString &caption=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
static SpecialMailCollections * self()
QString i18nc(const char *context, const char *text, const TYPE &arg...)
int count(const T &value) const const
bool isValid() const
QString vCardFile() const
bool autocryptEnabled() const
void failed(const QString &errorMessage, MessageComposer::ComposerViewBase::FailedType type=Sending)
Message sending failed with given error message.
MoveToCollection
void setPayload(const T &p)
static QVector< Mailbox > listFromUnicodeString(const QString &s)
ComposerViewBase::MissingAttachment checkForMissingAttachments(const QStringList &attachmentKeywords)
Check if the mail has references to attachments, but no attachments are added to it.
Definition: composerviewbase.cpp:1907
Headers::ContentType * contentType(bool create=true)
virtual QString errorString() const
bool isMultipart() const
QStringList entryList(QDir::Filters filters, QDir::SortFlags sort) const const
int error() const
Action checkSigningPreferences(bool signingRequested) const
Determine whether to sign or not, depending on the per-recipient signing preferences,...
Definition: keyresolver.cpp:766
QStringList bcc
Blind Carbon copy: The email address and optionally the name of the secondary recipients.
Definition: infopart.h:36
void setHtml(const QString &text)
KGuiItem cancel()
QString rawText(bool *ok=nullptr, QString *errorMessage=nullptr) const
QString message
const QList< QKeySequence > & end()
Action checkEncryptionPreferences(bool encryptionRequested) const
Determine whether to encrypt or not, depending on the per-recipient encryption preferences,...
Definition: keyresolver.cpp:792
Headers::ContentDescription * contentDescription(bool create=true)
QVariant property(const char *name) const const
KCODECS_EXPORT QString normalizeAddressesAndEncodeIdn(const QString &str)
static RecentAddresses * self(KConfig *config=nullptr)
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Wed May 25 2022 03:55:39 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2022 The KDE developers.
Generated on Wed May 25 2022 03:55:39 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.