void tst_QMailAddress::groupMembers() { QFETCH( QString, input ); QFETCH( QString, input_name ); QFETCH( QString, input_address ); QMailAddress addr; if ( !input.isEmpty() ) addr = QMailAddress( input ); else addr = QMailAddress( input_name, input_address ); QTEST( addr.name(), "name" ); QTEST( addr.address(), "address" ); QTEST( addr.toString(), "to_string" ); QTEST( addr.isGroup(), "is_group" ); QStringList names, addresses; foreach (const QMailAddress& member, addr.groupMembers()) { names.append(member.name()); addresses.append(member.address()); } QTEST( names, "member_names" ); QTEST( addresses, "member_addresses" ); }
void tst_QMailAddress::toStringList_data() { QTest::addColumn<QList<QMailAddress> >("address_list"); QTest::addColumn<QStringList>("string_list"); QTest::newRow("Empty") << QList<QMailAddress>() << QStringList(); QTest::newRow("Single plain address") << ( QList<QMailAddress>() << QMailAddress("*****@*****.**") ) << ( QStringList() << "*****@*****.**" ); QTest::newRow("Single named address") << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") ) << ( QStringList() << "\"Wizard, Of Oz\" <*****@*****.**>" ); QTest::newRow("Single group address") << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") ) << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" ); QTest::newRow("Multiple named addressses") << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") << QMailAddress("Rincewind <*****@*****.**>") ) << ( QStringList() << "\"Wizard, Of Oz\" <*****@*****.**>" << "Rincewind <*****@*****.**>" ); QTest::newRow("Multiple group addresses") << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ) << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ); QTest::newRow("Multiple mixed addresses") << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("Dorothy <*****@*****.**>") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ) << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "Dorothy <*****@*****.**>" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ); }
QMessageAccountId addAccount(const Parameters ¶ms) { qWarning() << "ADDDDD"; QString name(params["name"]); QString fromAddress(params["fromAddress"]); if (!name.isEmpty()) { QMailAccount account; account.setName(name); account.setStatus(QMailAccount::Enabled, true); account.setStatus(QMailAccount::CanTransmit, true); account.setMessageType(QMailMessage::Email); if (!fromAddress.isEmpty()) { account.setFromAddress(QMailAddress(QString(), fromAddress)); } // Ensure that we initialise to the current version for file storage const QString key("qmfstoragemanager"); QMailAccountConfiguration config; config.addServiceConfiguration(key); QMailAccountConfiguration::ServiceConfiguration &svcCfg(config.serviceConfiguration(key)); svcCfg.setValue("servicetype", "storage"); svcCfg.setValue("version", "101"); if (!QMailStore::instance()->addAccount(&account, &config)) { qWarning() << "Unable to addAccount:" << name; } else { return QmfHelpers::convert(account.id()); } } return QMessageAccountId(); }
void tst_QMailAddress::isEmailAddress() { QFETCH( QString, address ); QMailAddress addr = QMailAddress(QString(), address); QTEST(addr.isEmailAddress(), "emailAddress"); }
void tst_QMailAddress::isPhoneNumber() { QFETCH( QString, address ); QMailAddress addr = QMailAddress(QString(), address); QTEST(addr.isPhoneNumber(), "phoneNumber"); }
void EmailPropertySetter::setReplyTo(const QString& s) { target.setReplyTo(QMailAddress(s)); }
void EmailPropertySetter::setFrom(const QString& s) { target.setFrom(QMailAddress(s)); }
void tst_QMailMessagePart::testSerialization() { QByteArray data; QByteArray type; type = "text/plain; charset=us-ascii"; data = "P1: This is a plain text part."; QMailMessagePart p1; p1.setBody(QMailMessageBody::fromData(data, QMailMessageContentType(type), QMailMessageBody::SevenBit, QMailMessageBody::RequiresEncoding)); p1.setContentID("P1"); p1.setContentLocation("After the header"); p1.setContentDescription("The first part"); QCOMPARE( p1.contentType().toString().toLower(), QByteArray("Content-Type: text/plain; charset=us-ascii").toLower() ); QCOMPARE( p1.transferEncoding(), QMailMessageBody::SevenBit ); type = "text/html; charset=UTF-8"; data = "<html>P2: This is a HTML part</html>"; QMailMessageContentType ct(type); ct.setName("P2"); QMailMessageContentDisposition cd(QMailMessageContentDisposition::Inline); cd.setFilename("p2.html"); QMailMessagePart p2; p2.setBody(QMailMessageBody::fromData(data, ct, QMailMessageBody::EightBit, QMailMessageBody::RequiresEncoding)); p2.setContentDisposition(cd); QCOMPARE( p2.contentType().toString().toLower(), QByteArray("Content-Type: text/html; charset=UTF-8; name=P2").toLower() ); QCOMPARE( p2.transferEncoding(), QMailMessageBody::EightBit ); QMailMessage m; m.setTo(QMailAddress("*****@*****.**")); m.setFrom(QMailAddress("*****@*****.**")); m.setDate(QMailTimeStamp("Fri, 22 Jun 2007 11:34:47 +1000")); m.setMultipartType(QMailMessagePartContainer::MultipartAlternative); m.appendPart(p1); m.appendPart(p2); QCOMPARE( m.contentType().toString().toLower(), QByteArray("Content-Type: multipart/alternative").toLower() ); QCOMPARE( m.transferEncoding(), QMailMessageBody::NoEncoding ); const QByteArray expected( "To: [email protected]" CRLF "From: [email protected]" CRLF "Date: Fri, 22 Jun 2007 11:34:47 +1000" CRLF "Content-Type: multipart/alternative; boundary=\"" BOUNDARY "\"" CRLF "MIME-Version: 1.0" CRLF CRLF "This is a multipart message in Mime 1.0 format" CRLF CRLF "--" BOUNDARY CRLF "Content-Type: text/plain; charset=us-ascii" CRLF "Content-Transfer-Encoding: 7bit" CRLF "Content-ID: <P1>" CRLF "Content-Location: After the header" CRLF "Content-Description: The first part" CRLF CRLF "P1: This is a plain text part." CRLF "--" BOUNDARY CRLF "Content-Type: text/html; charset=utf-8; name=P2" CRLF "Content-Transfer-Encoding: 8bit" CRLF "Content-Disposition: inline; filename=p2.html" CRLF CRLF "<html>P2: This is a HTML part</html>" CRLF "--" BOUNDARY "--" CRLF ); QByteArray serialized = m.toRfc2822(); QCOMPARE( serialized, expected ); QMailMessage m2 = QMailMessage::fromRfc2822(serialized); QByteArray repeat = m.toRfc2822(); QCOMPARE( serialized, repeat ); }
void tst_QMailMessagePart::setHeaderField() { QString addr1("*****@*****.**"); QString addr2("*****@*****.**"); QString ownHdr("hello"); QMailMessage m; m.setHeaderField("To", addr2); QCOMPARE(m.headerFieldText("to"), addr2); QCOMPARE(m.headerField("to").content(), addr2.toLatin1()); // Ensure overwrite m.setHeaderField("To", addr1); m.setHeaderField("X-My-Own-Header", ownHdr); QCOMPARE(m.headerFieldText("to"), addr1); QCOMPARE(m.headerField("to").content(), addr1.toLatin1()); QCOMPARE(m.headerFieldText("X-My-Own-Header"), ownHdr); QCOMPARE(m.headerField("X-My-Own-Header").content(), ownHdr.toLatin1()); QCOMPARE(m.to(), (QList<QMailAddress>() << QMailAddress(addr1))); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1))); QMailMessageMetaData mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1))); m.setHeaderField("Cc", addr2); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2))); mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2))); QCOMPARE(m.cc(), (QList<QMailAddress>() << QMailAddress(addr2))); QString addr3("*****@*****.**"); m.setHeaderField("Bcc", addr3); QCOMPARE(m.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2) << QMailAddress(addr3))); mtdata = *static_cast<QMailMessageMetaData*>(&m); QCOMPARE(mtdata.recipients(), (QList<QMailAddress>() << QMailAddress(addr1) << QMailAddress(addr2) << QMailAddress(addr3))); QCOMPARE(m.bcc(), (QList<QMailAddress>() << QMailAddress(addr3))); QString rfc822 = m.toRfc2822(); QMailMessage m2 = QMailMessage::fromRfc2822(rfc822.toLatin1()); QCOMPARE(m2.headerFieldText("to"), addr1); QCOMPARE(m2.headerField("to").content(), addr1.toLatin1()); QCOMPARE(m2.headerFieldText("X-My-Own-Header"), ownHdr); QCOMPARE(m2.headerField("X-My-Own-Header").content(), ownHdr.toLatin1()); QCOMPARE(m2.to(), (QList<QMailAddress>() << QMailAddress(addr1))); m2.setTo(QList<QMailAddress>() << QMailAddress(addr2)); QCOMPARE(m2.headerFieldText("to"), addr2); QCOMPARE(m2.headerField("to").content(), addr2.toLatin1()); QCOMPARE(m2.to(), (QList<QMailAddress>() << QMailAddress(addr2))); }
bool AccountInfo::accountIsValid() { m_account->setName (m_displayName); m_account->setStatus (QMailAccount::PreferredSender, true); //% "IMAP" if (m_inServerType.compare(qtTrId("xx_imap"), Qt::CaseInsensitive) == 0) { if (!m_config->services().contains(imapServiceKey)) m_config->addServiceConfiguration(imapServiceKey); EmailServiceConfiguration imapConfig (m_config, imapServiceKey); imapConfig.setVersion(100); imapConfig.setType(QMailServiceConfiguration::Source); imapConfig.setValue ("username", m_inUsername); imapConfig.setValue ("password", imapConfig.encode(m_inPassword)); imapConfig.setValue ("server", m_inServerAddress); imapConfig.setIntValue ("port", (m_inPort == -1 ? 143 : m_inPort)); QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE; //% "SSL" if (QString::compare(m_inSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_SSL; //% "TLS" else if (QString::compare(m_inSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_TLS; imapConfig.setIntValue ("encryption", encrypType); int interval = EmailSettingsPage::instance()->frequency(); imapConfig.setIntValue("checkInterval", interval); // Todo: the following options will be handled by email settings. // For now, just set them to a good known default value. imapConfig.setIntValue("autoDownload", true); imapConfig.setValue("textSubtype", "plain"); imapConfig.setIntValue("pushEnabled", true); imapConfig.setIntValue("maxSize", 30); imapConfig.setIntValue("canDelete", true); imapConfig.setIntValue("intervalCheckRoamingEnabled", true); imapConfig.setValue("pushFolders", "INBOX"); m_account->setStatus(QMailAccount::CanCreateFolders, true); m_account->setStatus(QMailAccount::CanRetrieve, true); } //% "POP" else if (m_inServerType.compare(qtTrId("xx_pop"), Qt::CaseInsensitive) == 0) { if (!m_config->services().contains(popServiceKey)) m_config->addServiceConfiguration(popServiceKey); EmailServiceConfiguration popConfig (m_config, popServiceKey); popConfig.setVersion(100); popConfig.setType(QMailServiceConfiguration::Source); popConfig.setValue ("username", m_inUsername); popConfig.setValue ("password", popConfig.encode(m_inPassword)); popConfig.setValue ("server", m_inServerAddress); popConfig.setIntValue ("port", (m_inPort == -1 ? 143 : m_inPort)); QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE; //% "SSL" if (QString::compare(m_inSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_SSL; //% "TLS" else if (QString::compare(m_inSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_TLS; popConfig.setIntValue ("encryption", encrypType); int interval = EmailSettingsPage::instance()->frequency(); popConfig.setIntValue("checkInterval", interval); // Todo: the following options will be handled by email settings. // For now, just set them to a good known default value. popConfig.setIntValue("autoDownload", true); popConfig.setValue("textSubtype", "plain"); popConfig.setIntValue("pushEnabled", true); popConfig.setIntValue("maxSize", 30); popConfig.setIntValue("canDelete", true); popConfig.setIntValue("intervalCheckRoamingEnabled", true); m_account->setStatus(QMailAccount::CanRetrieve, true); } //% "SMTP" if (m_outServerType.compare(qtTrId("xx_smtp"), Qt::CaseInsensitive) == 0) { m_account->setFromAddress(QMailAddress(m_emailAddress)); if (!m_config->services().contains(smtpServiceKey)) m_config->addServiceConfiguration(smtpServiceKey); EmailServiceConfiguration smtpConfig (m_config, smtpServiceKey); smtpConfig.setVersion(100); smtpConfig.setType(QMailServiceConfiguration::Sink); smtpConfig.setValue("address", m_emailAddress); smtpConfig.setValue("server", m_outServerAddress); smtpConfig.setIntValue("port", (m_outPort == -1 ? 25 : m_outPort)); smtpConfig.setIntValue("authentication", m_outAuthentication); if (m_outAuthentication != 0) { smtpConfig.setValue("smtpusername", m_outUsername); smtpConfig.setValue("smtppassword", smtpConfig.encode(m_outPassword)); } QMailTransport::EncryptType encrypType = QMailTransport::Encrypt_NONE; //% "SSL" if (QString::compare(m_outSecurity, qtTrId("xx_ssl"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_SSL; //% "TLS" else if (QString::compare(m_outSecurity, qtTrId("xx_tls"), Qt::CaseInsensitive) == 0) encrypType = QMailTransport::Encrypt_TLS; smtpConfig.setIntValue("encryption", encrypType); m_account->setStatus(QMailAccount::PreferredSender, true); QString signature = EmailSettingsPage::instance()->signature(); if (signature.size() > 0) { m_account->setStatus(QMailAccount::AppendSignature, true); m_account->setSignature(signature); } else { m_account->setStatus(QMailAccount::AppendSignature, false); m_account->setSignature(""); } m_account->setStatus(QMailAccount::MessageSink, true); if (!smtpConfig.value("server").isEmpty() && !smtpConfig.value("address").isEmpty()) m_account->setStatus(QMailAccount::CanTransmit, true); } if (!m_config->services().contains(storageServiceKey)) m_config->addServiceConfiguration(storageServiceKey); QMailAccountConfiguration::ServiceConfiguration &svcCfg(m_config->serviceConfiguration(storageServiceKey)); svcCfg.setValue("version", "101"); svcCfg.setValue("servicetype", "storage"); svcCfg.setValue("basePath", ""); if (m_account->id().isValid()) { // We are dealing with an existing account just update the account. QMailStore::instance()->updateAccount(m_account, m_config); } else { QMailStore::instance()->addAccount(m_account, m_config); } QTimer::singleShot(10, this, SLOT(testAccountConfiguration())); return true; }
void tst_QMailAddress::fromStringList1_data() { QTest::addColumn<QString>("string_list"); QTest::addColumn<QList<QMailAddress> >("address_list"); QTest::newRow("Empty") << QString() << QList<QMailAddress>(); QTest::newRow("Single plain address") << "*****@*****.**" << ( QList<QMailAddress>() << QMailAddress("*****@*****.**") ); QTest::newRow("Single named address") << "\"Wizard, Of Oz\" <*****@*****.**>" << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") ); QTest::newRow("Single group address") << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") ); QTest::newRow("Multiple plain addressses, comma-separated") << ( QStringList() << "*****@*****.**" << "*****@*****.**" ).join(QString(',')) << ( QList<QMailAddress>() << QMailAddress("*****@*****.**") << QMailAddress("*****@*****.**") ); QTest::newRow("Multiple plain addressses, semicolon-separated") << ( QStringList() << "*****@*****.**" << "*****@*****.**" ).join(QString(';')) << ( QList<QMailAddress>() << QMailAddress("*****@*****.**") << QMailAddress("*****@*****.**") ); QTest::newRow("Multiple plain addressses, whitespace-separated") << ( QStringList() << "*****@*****.**" << "*****@*****.**" ).join(QString(' ')) << ( QList<QMailAddress>() << QMailAddress("*****@*****.**") << QMailAddress("*****@*****.**") ); QTest::newRow("Multiple named addressses, comma-separated") << ( QStringList() << "\"Wizard, Of Oz\" <*****@*****.**>" << "Rincewind <*****@*****.**>" ).join(QString(',')) << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") << QMailAddress("Rincewind <*****@*****.**>") ); QTest::newRow("Multiple named addressses, semicolon-separated") << ( QStringList() << "\"Wizard, Of Oz\" <*****@*****.**>" << "Rincewind <*****@*****.**>" ).join(QString(';')) << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") << QMailAddress("Rincewind <*****@*****.**>") ); QTest::newRow("Multiple named addressses, whitespace-separated") << ( QStringList() << "\"Wizard, Of Oz\" <*****@*****.**>" << "Rincewind <*****@*****.**>" ).join(QString(' ')) << ( QList<QMailAddress>() << QMailAddress("\"Wizard, Of Oz\" <*****@*****.**>") << QMailAddress("Rincewind <*****@*****.**>") ); QTest::newRow("Multiple group addresses, comma-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(',')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); QTest::newRow("Multiple group addresses, semicolon-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(';')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); QTest::newRow("Multiple group addresses, whitespace-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(' ')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); QTest::newRow("Multiple mixed addresses, comma-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "*****@*****.**" << "Dorothy <*****@*****.**>" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(',')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("*****@*****.**") << QMailAddress("Dorothy <*****@*****.**>") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); QTest::newRow("Multiple mixed addresses, semicolon-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "*****@*****.**" << "Dorothy <*****@*****.**>" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(';')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("*****@*****.**") << QMailAddress("Dorothy <*****@*****.**>") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); QTest::newRow("Multiple mixed addresses, whitespace-separated") << ( QStringList() << "Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;" << "*****@*****.**" << "Dorothy <*****@*****.**>" << "Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;" ).join(QString(' ')) << ( QList<QMailAddress>() << QMailAddress("Wizard Group: \"Wizard, Of Oz\" <*****@*****.**>, Rincewind <*****@*****.**>;") << QMailAddress("*****@*****.**") << QMailAddress("Dorothy <*****@*****.**>") << QMailAddress("Witch Group: Wicked Witch (East) <*****@*****.**>, \"Wicked Witch, South\" <*****@*****.**>;") ); }