Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
No build reason found for SLE-Module-Development-Tools-OBS:s390x
KDE:Unstable:Applications
ksmtp
_service:obs_scm:ksmtp-VERSIONgit.20240930T1353...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:ksmtp-VERSIONgit.20240930T135317~29e0375.obscpio of Package ksmtp
07070100000000000081A400000000000000000000000166FA912D00000071000000000000000000000000000000000000003600000000ksmtp-VERSIONgit.20240930T135317~29e0375/.codespellrc[codespell] skip = ./build*,.git,*.notifyrc,*.desktop,*.json,*.xml interactive = 3 ignore-words-list = accessort 07070100000001000081A400000000000000000000000166FA912D00000067000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/.codespellrc.license# SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> # SPDX-License-Identifier: CC0-1.0 07070100000002000081A400000000000000000000000166FA912D000000A3000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/.git-blame-ignore-revs# SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: none # clang-format 2cbd60dbe819b2c5a40f6dd035f6ce289950ddfa 7165fcca8a0c522578ba720981be2d9ae5bebd90 07070100000003000081A400000000000000000000000166FA912D00000172000000000000000000000000000000000000003400000000ksmtp-VERSIONgit.20240930T135317~29e0375/.gitignore# SPDX-License-Identifier: CC0-1.0 # SPDX-FileCopyrightText: none # Ignore the following files *~ *.[oa] *.diff *.kate-swp *.kdev4 .kdev_include_paths *.kdevelop.pcs *.moc *.moc.cpp *.orig *.user .*.swp .swp.* Doxyfile Makefile /build*/ .cmake/ CMakeLists.txt.user* *.unc-backup* compile_commands.json .clang-format .clangd .idea /cmake-build* .cache Testing/ /.vscode/ 07070100000004000081A400000000000000000000000166FA912D00000195000000000000000000000000000000000000003800000000ksmtp-VERSIONgit.20240930T135317~29e0375/.gitlab-ci.yml# SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> # SPDX-License-Identifier: CC0-1.0 include: - project: sysadmin/ci-utilities file: - /gitlab-templates/linux-qt6.yml - /gitlab-templates/freebsd-qt6.yml - /gitlab-templates/reuse-lint.yml - /gitlab-templates/windows-qt6.yml - /gitlab-templates/cppcheck.yml - /gitlab-templates/clang-format.yml 07070100000005000081A400000000000000000000000166FA912D00000178000000000000000000000000000000000000003500000000ksmtp-VERSIONgit.20240930T135317~29e0375/.kde-ci.yml# SPDX-FileCopyrightText: None # SPDX-License-Identifier: CC0-1.0 Dependencies: - 'on': ['Linux', 'FreeBSD', 'Windows'] 'require': 'frameworks/extra-cmake-modules': '@latest-kf6' 'frameworks/ki18n': '@latest-kf6' 'frameworks/kio': '@latest-kf6' 'frameworks/kcoreaddons': '@latest-kf6' Options: require-passing-tests-on: [ 'Linux', 'FreeBSD', 'Windows' ] 07070100000006000081A400000000000000000000000166FA912D00000E0F000000000000000000000000000000000000003800000000ksmtp-VERSIONgit.20240930T135317~29e0375/CMakeLists.txt# SPDX-FileCopyrightText: none # SPDX-License-Identifier: BSD-3-Clause cmake_minimum_required(VERSION 3.16 FATAL_ERROR) set(PIM_VERSION "6.2.40") project(KSMTP VERSION ${PIM_VERSION}) # ECM setup set(KF_MIN_VERSION "6.6.0") set(QT_REQUIRED_VERSION "6.7.0") find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMGenerateExportHeader) include(ECMGenerateHeaders) include(ECMSetupVersion) include(FeatureSummary) include(KDEGitCommitHooks) include(KDEClangFormat) file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c) kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) include(ECMQtDeclareLoggingCategory) include(ECMDeprecationSettings) include(ECMFeatureSummary) include(ECMCheckOutboundLicense) file(GLOB_RECURSE ALL_SOURCE_FILES src/*.cpp src/*.h tests/*.cpp tests/*.h autotests/*.cpp autotests/*.h ) ecm_check_outbound_license(LICENSES GPL-2.0-only FILES ${ALL_SOURCE_FILES}) include(ECMAddQch) option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") set(KSMTP_LIB_VERSION ${PIM_VERSION}) ecm_setup_version(PROJECT VARIABLE_PREFIX KSMTP VERSION_HEADER ${KSMTP_BINARY_DIR}/src/ksmtp_version.h PACKAGE_VERSION_FILE ${KSMTP_BINARY_DIR}/KPim6SMTPConfigVersion.cmake SOVERSION 6 ) ############ Find packages ############ find_package(Qt6Network ${QT_REQUIRED_VERSION} REQUIRED) find_package(KF6CoreAddons ${KF_MIN_VERSION} CONFIG REQUIRED) find_package(KF6I18n ${KF_MIN_VERSION} CONFIG REQUIRED) find_package(KF6KIO ${KF_MIN_VERSION} CONFIG REQUIRED) find_package(Sasl2) set_package_properties(Sasl2 PROPERTIES TYPE REQUIRED) ########### CMake Config Files ############ add_definitions(-DQT_NO_CONTEXTLESS_CONNECT) add_definitions(-DTRANSLATION_DOMAIN=\"libksmtp6\") ecm_set_disabled_deprecation_versions(QT 6.7.2 KF 6.7.0) option(USE_UNITY_CMAKE_SUPPORT "Use UNITY cmake support (speedup compile time)" OFF) set(COMPILE_WITH_UNITY_CMAKE_SUPPORT OFF) if(USE_UNITY_CMAKE_SUPPORT) set(COMPILE_WITH_UNITY_CMAKE_SUPPORT ON) endif() ########### Targets ########### add_subdirectory(src) set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim6SMTP") if(BUILD_QCH) ecm_install_qch_export( TARGETS KPim6SMTP_QCH FILE KPim6SMTPQchTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KPim6SMTPQchTargets.cmake\")") endif() configure_package_config_file( "${KSMTP_SOURCE_DIR}/KPimSMTPConfig.cmake.in" "${KSMTP_BINARY_DIR}/KPim6SMTPConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) if(BUILD_TESTING) add_subdirectory(autotests) add_subdirectory(tests) endif() ########### Install Files ############ install(FILES "${KSMTP_BINARY_DIR}/KPim6SMTPConfig.cmake" "${KSMTP_BINARY_DIR}/KPim6SMTPConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KPim6SMTPTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KPim6SMTPTargets.cmake NAMESPACE KPim6::) install(FILES ${KSMTP_BINARY_DIR}/src/ksmtp_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KSMTP COMPONENT Devel ) kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) ki18n_install(po) ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) 07070100000007000081A400000000000000000000000166FA912D00001AB2000000000000000000000000000000000000003B00000000ksmtp-VERSIONgit.20240930T135317~29e0375/CMakePresets.json{ "version": 3, "configurePresets": [ { "name": "base", "displayName": "base preset", "generator": "Ninja", "binaryDir": "${sourceDir}/build-${presetName}", "installDir": "$env{KF6}", "hidden": true, "cacheVariables": { "BUILD_QCH": "ON" } }, { "name": "dev-mold", "displayName": "Build as debug + using mold linker", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", "CMAKE_SHARED_LINKER_FLAGS": "-fuse-ld=mold" }, "inherits": [ "base" ] }, { "name": "dev", "displayName": "Build as debug", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON" }, "inherits": [ "base" ] }, { "name": "asan", "displayName": "Build with Asan support.", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "ECM_ENABLE_SANITIZERS" : "'address;undefined'" }, "inherits": [ "base" ] }, { "name": "dev-clang", "displayName": "dev-clang", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON" }, "environment": { "CXX": "clang++", "CCACHE_DISABLE": "ON" }, "inherits": [ "base" ] }, { "name": "unity", "displayName": "Build with CMake unity support.", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "USE_UNITY_CMAKE_SUPPORT": "ON" }, "inherits": [ "base" ] }, { "name": "release", "displayName": "Build as release mode.", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "BUILD_TESTING": "OFF" }, "inherits": [ "base" ] }, { "name": "profile", "displayName": "profile", "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" }, "inherits": [ "base" ] }, { "name": "coverage", "displayName": "coverage", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "USE_UNITY_CMAKE_SUPPORT": "OFF", "BUILD_COVERAGE": "ON" }, "inherits": [ "base" ] }, { "name": "clazy", "displayName": "clazy", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" }, "environment": { "CXX": "clazy", "CCACHE_DISABLE": "ON" }, "inherits": [ "base" ] }, { "name": "pch", "displayName": "pch", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "USE_PRECOMPILED_HEADERS": "ON", "BUILD_COVERAGE": "ON" }, "inherits": [ "base" ] }, { "name": "ftime-trace", "displayName": "ftime-trace", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "USE_DEVELOPER_MODE": "ON", "CMAKE_C_FLAGS_INIT": "-ftime-trace", "CMAKE_CXX_FLAGS_INIT": "-ftime-trace" }, "environment": { "CC": "/usr/bin/clang", "CXX": "/usr/bin/clang++", "CCACHE_DISABLE": "ON" }, "inherits": [ "base" ] } ], "buildPresets": [ { "name": "dev", "configurePreset": "dev" }, { "name": "ftime-trace", "configurePreset": "ftime-trace" }, { "name": "dev-mold", "configurePreset": "dev-mold" }, { "name": "dev-clang", "configurePreset": "dev-clang" }, { "name": "pch", "configurePreset": "pch" }, { "name": "release", "configurePreset": "release" }, { "name": "unity", "configurePreset": "unity" }, { "name": "coverage", "configurePreset": "coverage" }, { "name": "asan", "configurePreset": "asan" }, { "name": "clazy", "configurePreset": "clazy", "environment": { "CLAZY_CHECKS" : "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo", "CCACHE_DISABLE" : "ON" } } ], "testPresets": [ { "name": "dev", "configurePreset": "dev", "output": {"outputOnFailure": true}, "execution": {"noTestsAction": "error", "stopOnFailure": false} }, { "name": "asan", "configurePreset": "asan", "output": {"outputOnFailure": true}, "execution": {"noTestsAction": "error", "stopOnFailure": true} }, { "name": "unity", "configurePreset": "unity", "output": {"outputOnFailure": true}, "execution": {"noTestsAction": "error", "stopOnFailure": true} }, { "name": "coverage", "configurePreset": "coverage", "output": {"outputOnFailure": true}, "execution": {"noTestsAction": "error", "stopOnFailure": true} } ] } 07070100000008000081A400000000000000000000000166FA912D0000006C000000000000000000000000000000000000004300000000ksmtp-VERSIONgit.20240930T135317~29e0375/CMakePresets.json.license# SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org> # SPDX-License-Identifier: BSD-3-Clause 07070100000009000081A400000000000000000000000166FA912D00000126000000000000000000000000000000000000004100000000ksmtp-VERSIONgit.20240930T135317~29e0375/KPimSMTPConfig.cmake.in# SPDX-FileCopyrightText: 2017 Daniel Vrátil <dvratil@kde.org> # SPDX-License-Identifier: BSD-3-Clause @PACKAGE_INIT@ include(CMakeFindDependencyMacro) find_dependency(KF6CoreAddons "@KF_MIN_VERSION@") include("${CMAKE_CURRENT_LIST_DIR}/KPim6SMTPTargets.cmake") @PACKAGE_INCLUDE_QCHTARGETS@ 0707010000000A000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003200000000ksmtp-VERSIONgit.20240930T135317~29e0375/LICENSES0707010000000B000081A400000000000000000000000166FA912D000005C8000000000000000000000000000000000000004300000000ksmtp-VERSIONgit.20240930T135317~29e0375/LICENSES/BSD-3-Clause.txtCopyright (c) <year> <owner>. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 0707010000000C000081A400000000000000000000000166FA912D00001B04000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/LICENSES/CC0-1.0.txtCreative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 0707010000000D000081A400000000000000000000000166FA912D000060C6000000000000000000000000000000000000004800000000ksmtp-VERSIONgit.20240930T135317~29e0375/LICENSES/LGPL-2.0-or-later.txtGNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it! 0707010000000E000081A400000000000000000000000166FA912D00006532000000000000000000000000000000000000004800000000ksmtp-VERSIONgit.20240930T135317~29e0375/LICENSES/LGPL-2.1-or-later.txtGNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and an idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. < signature of Ty Coon > , 1 April 1990 Ty Coon, President of Vice That's all there is to it! 0707010000000F000081A400000000000000000000000166FA912D0000084D000000000000000000000000000000000000003600000000ksmtp-VERSIONgit.20240930T135317~29e0375/Mainpage.dox/* SPDX-FileCopyrightText: none SPDX-License-Identifier: CC0-1.0 */ /*! * @mainpage KSmtp - a job-based API for interacting with SMTP servers * * @section purpose Purpose * * This library provides a job-based API for interacting with an SMTP server. * Its design follows the design KIMAP. * * @section desc Description * Sample usage: * @code * void MyClass::login() * { * m_session = new KSmtp::Session("smtp.example.com", 587, KSmtp::Session::StartAndWait, this); * * // Start authentication * KSmtp::LoginJob* login = new KSmtp::LoginJob(m_session); * login->setUseTls(true); * login->setUserName("example@example.com"); * login->setPassword("password"); * connect(login, SIGNAL(result(KJob*)), this, SLOT(loginResult(KJob*))); * login->start(); * } * * void MyClass::loginResult(KJob* job) * { * if (m_session->state() != KSmtp::Session::Authenticated) { * ... // handle error * return; * } * * // Create a new KMime::Message * KMime::Message::Ptr msg(new KMime::Message()); * msg->from()->fromUnicodeString("sender@example.com", "utf-8"); * msg->to()->fromUnicodeString("recipient@example.com", "utf-8"); * msg->subject()->fromUnicodeString("Hi there!", "utf-8"); * msg->contentType()->setMimeType("text/plain"); * msg->contentTransferEncoding()->setEncoding(KMime::Headers::CEquPr); * * // Assembles and encodes the message * msg->assemble(); * const QByteArray content = msg->encodedContent(true) + "\r\n"; * * // Start sending the message * KSmtp::SendJob* send = new KSmtp::SendJob(m_session); * send->setData(content); * send->setSender("sender@example.com"); * send->setTo("recipient@example.com"); * send->setBcc("hidden-recipient@example.com"); * connect(send, SIGNAL(result(KJob*)), SLOT(sendResult(KJob*))); * send->start(); * } * @endcode * * @authors * The major authors of this library are:\n * Christophe Laveault \<christophe@betterinbox.com\> * * @maintainers * Gregory Schlomoff \<greg@betterinbox.com\>, * * @licenses * @lgpl */ // DOXYGEN_PROJECTNAME=KSmtp Library 07070100000010000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003300000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests07070100000011000081A400000000000000000000000166FA912D0000011F000000000000000000000000000000000000004200000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests/CMakeLists.txt# SPDX-FileCopyrightText: none # SPDX-License-Identifier: BSD-3-Clause include(ECMAddTests) find_package(Qt6Test ${QT_REQUIRED_VERSION} REQUIRED) ecm_add_test(smtptest.cpp fakeserver.cpp smtptest.h fakeserver.h LINK_LIBRARIES KPim6SMTP Qt::Test Qt::Network TEST_NAME smtptest ) 07070100000012000081A400000000000000000000000166FA912D00001577000000000000000000000000000000000000004200000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests/fakeserver.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "fakeserver.h" #include <QDebug> #include <QFile> #include <QTcpServer> #include <QTcpSocket> #include <QTest> FakeServer::FakeServer(QObject *parent) : QThread(parent) { moveToThread(this); } QByteArray FakeServer::greeting() { return "S: 220 localhost ESMTP xx777xx"; } QList<QByteArray> FakeServer::greetingAndEhlo(bool multiline) { return QList<QByteArray>() << greeting() << "C: EHLO 127.0.0.1" << QByteArray("S: 250") + (multiline ? '-' : ' ') + "Localhost ready to roll"; } QList<QByteArray> FakeServer::bye() { return {"C: QUIT", "S: 221 So long, and thanks for all the fish", "X: "}; } FakeServer::~FakeServer() { quit(); wait(); } void FakeServer::startAndWait() { start(); // this will block until the event queue starts QMetaObject::invokeMethod(this, &FakeServer::started, Qt::BlockingQueuedConnection); } void FakeServer::dataAvailable() { QMutexLocker locker(&m_mutex); auto socket = qobject_cast<QTcpSocket *>(sender()); Q_ASSERT(socket != nullptr); int scenarioNumber = m_clientSockets.indexOf(socket); QVERIFY(!m_scenarios[scenarioNumber].isEmpty()); readClientPart(scenarioNumber); writeServerPart(scenarioNumber); } void FakeServer::newConnection() { QMutexLocker locker(&m_mutex); m_clientSockets << m_tcpServer->nextPendingConnection(); connect(m_clientSockets.last(), &QIODevice::readyRead, this, &FakeServer::dataAvailable); // m_clientParsers << new KIMAP::ImapStreamParser( m_clientSockets.last(), true ); QVERIFY(m_clientSockets.size() <= m_scenarios.size()); writeServerPart(m_clientSockets.size() - 1); } void FakeServer::run() { m_tcpServer = new QTcpServer(); if (!m_tcpServer->listen(QHostAddress(QHostAddress::LocalHost), 5989)) { qFatal("Unable to start the server"); return; } connect(m_tcpServer, &QTcpServer::newConnection, this, &FakeServer::newConnection); exec(); qDeleteAll(m_clientSockets); delete m_tcpServer; } void FakeServer::started() { // do nothing: this is a dummy slot used by startAndWait() } void FakeServer::setScenario(const QList<QByteArray> &scenario) { QMutexLocker locker(&m_mutex); m_scenarios.clear(); m_scenarios << scenario; } void FakeServer::addScenario(const QList<QByteArray> &scenario) { QMutexLocker locker(&m_mutex); m_scenarios << scenario; } void FakeServer::addScenarioFromFile(const QString &fileName) { QFile file(fileName); file.open(QFile::ReadOnly); QList<QByteArray> scenario; // When loading from files we never have the authentication phase // force jumping directly to authenticated state. // scenario << preauth(); while (!file.atEnd()) { scenario << file.readLine().trimmed(); } file.close(); addScenario(scenario); } bool FakeServer::isScenarioDone(int scenarioNumber) const { QMutexLocker locker(&m_mutex); if (scenarioNumber < m_scenarios.size()) { return m_scenarios[scenarioNumber].isEmpty(); } else { return true; // Non existent hence empty, right? } } bool FakeServer::isAllScenarioDone() const { QMutexLocker locker(&m_mutex); for (const QList<QByteArray> &scenario : std::as_const(m_scenarios)) { if (!scenario.isEmpty()) { qDebug() << scenario; return false; } } return true; } void FakeServer::writeServerPart(int scenarioNumber) { QList<QByteArray> scenario = m_scenarios[scenarioNumber]; QTcpSocket *clientSocket = m_clientSockets[scenarioNumber]; while (!scenario.isEmpty() && (scenario.first().startsWith("S: ") || scenario.first().startsWith("W: "))) { QByteArray rule = scenario.takeFirst(); if (rule.startsWith("S: ")) { QByteArray payload = rule.mid(3); clientSocket->write(payload + "\r\n"); } else { int timeout = rule.mid(3).toInt(); QTest::qWait(timeout); } } if (!scenario.isEmpty() && scenario.first().startsWith('X')) { scenario.takeFirst(); clientSocket->close(); } if (!scenario.isEmpty()) { QVERIFY(scenario.first().startsWith("C: ")); } m_scenarios[scenarioNumber] = scenario; } void FakeServer::readClientPart(int scenarioNumber) { QList<QByteArray> scenario = m_scenarios[scenarioNumber]; QTcpSocket *clientSocket = m_clientSockets[scenarioNumber]; while (!scenario.isEmpty() && scenario.first().startsWith("C: ")) { QByteArray line = clientSocket->readLine(); QByteArray received = "C: " + line.trimmed(); QByteArray expected = scenario.takeFirst(); if (expected == "C: SKIP" && !scenario.isEmpty()) { expected = scenario.takeFirst(); while (received != expected) { received = "C: " + clientSocket->readLine().trimmed(); } } QCOMPARE(QString::fromUtf8(received), QString::fromUtf8(expected)); QCOMPARE(received, expected); } if (!scenario.isEmpty()) { QVERIFY(scenario.first().startsWith("S: ")); } m_scenarios[scenarioNumber] = scenario; } #include "moc_fakeserver.cpp" 07070100000013000081A400000000000000000000000166FA912D00000522000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests/fakeserver.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include <QMutex> #include <QThread> class QTcpServer; class QTcpSocket; Q_DECLARE_METATYPE(QList<QByteArray>) class FakeServer : public QThread { Q_OBJECT public: explicit FakeServer(QObject *parent = nullptr); ~FakeServer() override; void startAndWait(); void run() override; static QByteArray greeting(); static QList<QByteArray> greetingAndEhlo(bool multiline = true); static QList<QByteArray> bye(); void setScenario(const QList<QByteArray> &scenario); void addScenario(const QList<QByteArray> &scenario); void addScenarioFromFile(const QString &fileName); bool isScenarioDone(int scenarioNumber) const; bool isAllScenarioDone() const; private Q_SLOTS: void newConnection(); void dataAvailable(); void started(); private: void writeServerPart(int scenarioNumber); void readClientPart(int scenarioNumber); QList<QList<QByteArray>> m_scenarios; QTcpServer *m_tcpServer; mutable QMutex m_mutex; QList<QTcpSocket *> m_clientSockets; }; 07070100000014000081A400000000000000000000000166FA912D000023D7000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests/smtptest.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "smtptest.h" #include "fakeserver.h" #include "loginjob.h" #include "sendjob.h" #include "session.h" #include <QTest> void SmtpTest::testHello_data() { QTest::addColumn<QList<QByteArray>>("scenario"); QTest::addColumn<QString>("hostname"); QList<QByteArray> scenario; scenario << FakeServer::greeting() << "C: EHLO 127.0.0.1" << "S: 250 Localhost ready to roll" << FakeServer::bye(); QTest::newRow("EHLO OK") << scenario << QStringLiteral("127.0.0.1"); scenario.clear(); scenario << FakeServer::greeting() << "C: EHLO 127.0.0.1" << "S: 500 Command was not recognized" << "C: HELO 127.0.0.1" << "S: 250 Localhost ready to roll" << FakeServer::bye(); QTest::newRow("EHLO unknown") << scenario << QStringLiteral("127.0.0.1"); scenario.clear(); scenario << FakeServer::greeting() << "C: EHLO 127.0.0.1" << "S: 502 Command not implemented" << "C: HELO 127.0.0.1" << "S: 250 Localhost ready to roll" << FakeServer::bye(); QTest::newRow("EHLO not implemented") << scenario << QStringLiteral("127.0.0.1"); scenario.clear(); scenario << FakeServer::greeting() << "C: EHLO 127.0.0.1" << "S: 502 Command not implemented" << "C: HELO 127.0.0.1" << "S: 500 Command was not recognized" << FakeServer::bye(); QTest::newRow("ERROR") << scenario << QStringLiteral("127.0.0.1"); scenario.clear(); scenario << FakeServer::greeting() << "C: EHLO random.stranger" << "S: 250 random.stranger ready to roll" << FakeServer::bye(); QTest::newRow("EHLO hostname") << scenario << QStringLiteral("random.stranger"); } void SmtpTest::testHello() { QFETCH(QList<QByteArray>, scenario); QFETCH(QString, hostname); FakeServer fakeServer; fakeServer.setScenario(scenario); fakeServer.startAndWait(); KSmtp::Session session(QStringLiteral("127.0.0.1"), 5989); session.setCustomHostname(hostname); QEventLoop loop; connect(&session, &KSmtp::Session::stateChanged, this, [&loop](auto state) { qDebug() << state; if (state == KSmtp::Session::NotAuthenticated || state == KSmtp::Session::Disconnected) { loop.quit(); } }); session.open(); loop.exec(); qDebug() << "### Session state is:" << session.state(); QEXPECT_FAIL("ERROR", "Expected failure if HELO command not recognized", Continue); QVERIFY2(session.state() == KSmtp::Session::NotAuthenticated, "Handshake failed"); session.quit(); if (session.state() != KSmtp::Session::Disconnected) { loop.exec(); } QVERIFY(fakeServer.isAllScenarioDone()); fakeServer.quit(); } void SmtpTest::testLoginJob_data() { QTest::addColumn<QList<QByteArray>>("scenario"); QTest::addColumn<QString>("authMode"); QTest::addColumn<int>("errorCode"); QList<QByteArray> scenario; scenario << FakeServer::greetingAndEhlo() << "S: 250 AUTH PLAIN LOGIN" << "C: AUTH PLAIN AGxvZ2luAHBhc3N3b3Jk" // [\0 + "login" + \0 + "password"].toBase64() << "S: 235 Authenticated" << FakeServer::bye(); QTest::newRow("Plain auth ok") << scenario << "Plain" << 0; scenario.clear(); scenario << FakeServer::greetingAndEhlo() << "S: 250 AUTH PLAIN LOGIN" << "C: AUTH LOGIN" << "S: 334 VXNlcm5hbWU6" // "Username:".toBase64() << "C: bG9naW4=" // "login".toBase64() << "S: 334 UGFzc3dvcmQ6" // "Password:".toBase64() << "C: cGFzc3dvcmQ=" // "password".toBase64() << "S: 235 Authenticated" << FakeServer::bye(); QTest::newRow("Login auth ok") << scenario << "Login" << 0; scenario.clear(); scenario << FakeServer::greetingAndEhlo() << "S: 250 AUTH PLAIN" << "C: AUTH PLAIN AGxvZ2luAHBhc3N3b3Jk" // [\0 + "login" + \0 + "password"].toBase64() << "S: 235 Authenticated" << FakeServer::bye(); QTest::newRow("Login not supported") << scenario << "Login" << 0; scenario.clear(); scenario << FakeServer::greetingAndEhlo(false) // The login job won't even try to send AUTH, because it does not // have any mechanisms to use //<< "C: AUTH PLAIN AGxvZ2luAHBhc3N3b3Jk" // [\0 + "login" + \0 + "password"].toBase64() //<< "S: 235 Authenticated" << FakeServer::bye(); QTest::newRow("Auth not supported") << scenario << "Login" << 100; scenario.clear(); scenario << FakeServer::greetingAndEhlo() << "S: 250 AUTH PLAIN" << "C: AUTH PLAIN AGxvZ2luAHBhc3N3b3Jk" // [\0 + "login" + \0 + "password"].toBase64() << "S: 535 Authorization failed" << FakeServer::bye(); QTest::newRow("Wrong password") << scenario << "Plain" << 100; } void SmtpTest::testLoginJob() { QFETCH(QList<QByteArray>, scenario); QFETCH(QString, authMode); QFETCH(int, errorCode); KSmtp::LoginJob::AuthMode mode = KSmtp::LoginJob::UnknownAuth; if (authMode == QLatin1StringView("Plain")) { mode = KSmtp::LoginJob::Plain; } else if (authMode == QLatin1StringView("Login")) { mode = KSmtp::LoginJob::Login; } FakeServer fakeServer; fakeServer.setScenario(scenario); fakeServer.startAndWait(); KSmtp::Session session(QStringLiteral("127.0.0.1"), 5989); session.setCustomHostname(QStringLiteral("127.0.0.1")); QEventLoop loop; connect(&session, &KSmtp::Session::stateChanged, this, [&loop](auto state) { if (state == KSmtp::Session::NotAuthenticated || state == KSmtp::Session::Disconnected) { loop.quit(); } }); session.open(); loop.exec(); auto login = new KSmtp::LoginJob(&session); login->setPreferedAuthMode(mode); login->setUserName(QStringLiteral("login")); login->setPassword(QStringLiteral("password")); login->exec(); // Checking job error code: QVERIFY2(login->error() == errorCode, "Unexpected LoginJob error code"); // Checking session state: QEXPECT_FAIL("Auth not supported", "Expected failure if not authentication method supported", Continue); QEXPECT_FAIL("Wrong password", "Expected failure if wrong password", Continue); QVERIFY2(session.state() == KSmtp::Session::Authenticated, "Authentication failed"); session.quit(); loop.exec(); QVERIFY(fakeServer.isAllScenarioDone()); fakeServer.quit(); } void SmtpTest::testSendJob_data() { QTest::addColumn<QList<QByteArray>>("scenario"); QTest::addColumn<int>("errorCode"); QList<QByteArray> scenario; scenario << FakeServer::greetingAndEhlo(false) << "C: MAIL FROM:<foo@bar.com>" << "S: 530 Not allowed" << FakeServer::bye(); QTest::newRow("Send not allowed") << scenario << 100; scenario.clear(); scenario << FakeServer::greetingAndEhlo(false) << "C: MAIL FROM:<foo@bar.com>" << "S: 250 ok" << "C: RCPT TO:<bar@foo.com>" << "S: 250 ok" << "C: DATA" << "S: 354 Ok go ahead" << "C: From: foo@bar.com" << "C: To: bar@foo.com" << "C: Hello world." << "C: .." // Single dot becomes two << "C: .." // Single dot becomes two << "C: ..." // Two dots become three << "C: ..Foo" // .Foo becomes ..Foo << "C: End" << "C: " << "C: ." << "S: 250 Ok transfer done" << FakeServer::bye(); QTest::newRow("ok") << scenario << 0; scenario.clear(); } void SmtpTest::testSendJob() { QFETCH(QList<QByteArray>, scenario); QFETCH(int, errorCode); FakeServer fakeServer; fakeServer.setScenario(scenario); fakeServer.startAndWait(); KSmtp::Session session(QStringLiteral("127.0.0.1"), 5989); session.setCustomHostname(QStringLiteral("127.0.0.1")); QEventLoop loop; connect(&session, &KSmtp::Session::stateChanged, this, [&loop](auto state) { if (state == KSmtp::Session::NotAuthenticated || state == KSmtp::Session::Disconnected) { loop.quit(); } }); session.open(); loop.exec(); auto send = new KSmtp::SendJob(&session); send->setData("From: foo@bar.com\r\nTo: bar@foo.com\r\nHello world.\r\n.\r\n.\r\n..\r\n.Foo\r\nEnd"); send->setFrom(QStringLiteral("foo@bar.com")); send->setTo({QStringLiteral("bar@foo.com")}); send->exec(); // Checking job error code: QVERIFY2(send->error() == errorCode, qPrintable(QStringLiteral("Unexpected LoginJob error: ") + send->errorString())); session.quit(); loop.exec(); QVERIFY(fakeServer.isAllScenarioDone()); fakeServer.quit(); } SmtpTest::SmtpTest() = default; void SmtpTest::initTestCase() { } void SmtpTest::cleanupTestCase() { } QTEST_MAIN(SmtpTest) #include "moc_smtptest.cpp" 07070100000015000081A400000000000000000000000166FA912D000002B3000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/autotests/smtptest.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "QObject" class SmtpTest : public QObject { Q_OBJECT public: SmtpTest(); private Q_SLOTS: void initTestCase(); void cleanupTestCase(); void testHello(); void testHello_data(); void testLoginJob(); void testLoginJob_data(); void testSendJob(); void testSendJob_data(); // TODO: (CL) Check if SendJob parses properly the data it gets before sending }; 07070100000016000081A400000000000000000000000166FA912D000000BA000000000000000000000000000000000000003700000000ksmtp-VERSIONgit.20240930T135317~29e0375/metainfo.yamlname: ksmtp description: SMTP library public_lib: true group: kdepim type: functional platforms: - name: Linux irc: kontact libraries: - cmake: "KPim6::SMTP" cmakename: KPim6SMTP" 07070100000017000081A400000000000000000000000166FA912D0000003E000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/metainfo.yaml.licenseSPDX-FileCopyrightText: none SPDX-License-Identifier: CC0-1.0 07070100000018000041ED00000000000000000000003566FA912D00000000000000000000000000000000000000000000002C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po07070100000019000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ar0707010000001A000081A400000000000000000000000166FA912D00000AC8000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ar/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Safa Alfulaij <safa1996alfulaij@gmail.com>, 2018. # Zayed Al-Saidi <zayed.alsaidi@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2021-12-19 18:56+0400\n" "Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n" "Language-Team: ar\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "خدمة غير متوفرة" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "صندوق البريد غير متوفر. قال الخادم: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "مساحة التخزين غير كافية على الخادم. قال الخادم: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "خطأ خادم : %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "فُقد الاتّصال بالخادوم." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "لِج" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "تعذّر الاستثياق مع خادوم SMTP بسبب عدم العثور على طريقة استيثاق مطابقة." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "انتهت صلاحية الرمز" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "فشل الولوج، تعذّر تمهيد مكتبة SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "إرسال مهمّة" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "تعذّر إرسال الرّسالة بسبب نقص أو عدم صلاحيّة حقل المرسل أو المستلم" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "تعذّر إرسال الرّسالة لأنّها تتخطّى الحجم الأقصى المسموح وهو %1 بايت. (حجم " "الرّسالة: %2 بايت.)" #~ msgid "Server time out" #~ msgstr "انتهت مهلة الخادوم" 0707010000001B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003000000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ast0707010000001C000081A400000000000000000000000166FA912D00000733000000000000000000000000000000000000003D00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ast/libksmtp6.po# Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the ksmtp package. # # SPDX-FileCopyrightText: 2023 Enol P. <enolp@softastur.org> msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-10-25 10:23+0200\n" "Last-Translator: Enol P. <enolp@softastur.org>\n" "Language-Team: \n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 23.08.2\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "El serviciu nun ta disponible" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "El pase caducó" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" 0707010000001D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/bg0707010000001E000081A400000000000000000000000166FA912D00000BC0000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/bg/libksmtp6.po# Copyright (C) 2024 This file is copyright: # This file is distributed under the same license as the ksmtp package. # # SPDX-FileCopyrightText: 2024 Mincho Kondarev <mkondarev@yahoo.de> msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2024-06-04 13:11+0200\n" "Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n" "Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 24.05.0\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Услугата не е налична" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Пощенската кутия е недостъпна. Сървърът отговори с: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Недостатъчно място за съхранение на сървъра. Сървърът отговори с: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Грешка в сървъра: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Връзката със сървъра е прекъсната." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Вписване" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Не може да се извърши удостоверение към SMTP сървъра, защото не е намерен " "съответстващ метод за удостоверяване" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Токенът е изтекъл" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Неуспешно влизане, не може да се инициализира SASL библиотеката" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Съобщението не можа да бъде изпратено, тъй като полето за подател или " "получател липсва или е невалидно" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Съобщението не можа да бъде изпратено, тъй като превишава максималния " "разрешен размер от %1байта. (Размер на съобщението: %2 байта.)" 0707010000001F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/bs07070100000020000081A400000000000000000000000166FA912D00000989000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/bs/libksmtp6.po# Bosnian translations for kde package. # Copyright (C) 2012 This_file_is_part_of_KDE # This file is distributed under the same license as the kde package. # Samir Ribic <megaribi@epn.ba>, 2012. # msgid "" msgstr "" "Project-Id-Version: kde 49i410\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2015-02-16 11:55+0000\n" "Last-Translator: Samir Ribić <Unknown>\n" "Language-Team: Bosnian\n" "Language: bs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2015-02-17 06:22+0000\n" "X-Generator: Launchpad (build 17341)\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Greška servera" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prijava" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Nije se mogla potvrditi autentičnost na SMTP server, jer je pronađen nijedan " "odgovarajući metod potvrde identiteta" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Ne mogu poslati poruku jer ili primaoc ili pošiljaoc ne postoje ili su " "nevažeći" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Ne mogu poslati poruku jer prelazi maksimalnu dopuštenu veličinu od %1 " "bajta. (Veličina poruke: %2 bajta.)" #~ msgid "Server time out" #~ msgstr "Serversko vrijeme isteklo" #~ msgid "Job" #~ msgstr "Posao" 07070100000021000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ca07070100000022000081A400000000000000000000000166FA912D00000B99000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ca/libksmtp6.po# Translation of libksmtp6.po to Catalan # Copyright (C) 2014-2023 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Antoni Bella Pérez <antonibella5@yahoo.com>, 2014, 2017, 2018, 2020. # Josep M. Ferrer <txemaq@gmail.com>, 2017, 2018, 2021, 2023. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-08-07 22:13+0200\n" "Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n" "Language-Team: Catalan <kde-i18n-ca@kde.org>\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Generator: Lokalize 23.04.3\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "El servei no està disponible" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Bústia de correu no disponible. El servidor ha informat: «%1»" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Espai d'emmagatzematge insuficient al servidor. El servidor ha informat: «%1»" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Error del servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "S'ha perdut la connexió amb el servidor." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Inici de sessió" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "No s'ha pogut realitzar l'autenticació amb el servidor SMTP perquè no s'ha " "trobat cap mètode d'autenticació coincident" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "El testimoni ha vençut" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "Ha fallat l'inici de la sessió, no s'ha pogut inicialitzar la biblioteca SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Envia la tasca" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "No s'ha pogut enviar el missatge perquè els camps del remitent o del " "destinatari falten o no són vàlids" # skip-rule: punctuation-period-no #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "No s'ha pogut enviar el missatge perquè s'ha excedit la mida màxima permesa " "de %1 bytes. (Mida del missatge: %2 bytes)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "STARTTLS no està acceptat pel servidor, proveu amb SSL/TLS." 07070100000023000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003800000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ca@valencia07070100000024000081A400000000000000000000000166FA912D00000B2E000000000000000000000000000000000000004500000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ca@valencia/libksmtp6.po# Translation of libksmtp6.po to Catalan (Valencian) # Copyright (C) 2014-2023 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Antoni Bella Pérez <antonibella5@yahoo.com>, 2014, 2017, 2018, 2020. # Josep M. Ferrer <txemaq@gmail.com>, 2017, 2018, 2021, 2023. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-08-07 22:13+0200\n" "Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n" "Language-Team: Catalan <kde-i18n-ca@kde.org>\n" "Language: ca@valencia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Accelerator-Marker: &\n" "X-Generator: Lokalize 23.04.3\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "El servei no està disponible" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Bústia de correu no disponible. El servidor ha informat: «%1»" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Espai d'emmagatzematge insuficient al servidor. El servidor ha informat: «%1»" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "S'ha produït un error del servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "S'ha perdut la connexió amb el servidor." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Inici de sessió" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "No s'ha pogut realitzar l'autenticació amb el servidor SMTP perquè no s'ha " "trobat cap mètode d'autenticació coincident" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "El testimoni ha vençut" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "No s'ha pogut fer l'inici de la sessió, no s'ha pogut restablir la " "biblioteca SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Envia la tasca" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "No s'ha pogut enviar el missatge perquè els camps del remitent o del " "destinatari falten o no són vàlids" # skip-rule: punctuation-period-no #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "No s'ha pogut enviar el missatge perquè s'ha excedit la mida màxima permesa " "de %1 bytes. (Mida del missatge: %2 bytes)." 07070100000025000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/cs07070100000026000081A400000000000000000000000166FA912D0000084F000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/cs/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Vít Pelčák <vit@pelcak.org>, 2011, 2017, 2018, 2019. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2019-09-10 11:34+0200\n" "Last-Translator: Vit Pelcak <vit@pelcak.org>\n" "Language-Team: Czech <kde-i18n-doc@kde.org>\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 19.08.0\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Služba není dostupná" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Schránka není dostupná. Server odpověděl: \"%1\"" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Nedostatek místa na serveru. Server odpověděl: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Chyba serveru: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Spojení se serverem bylo ztraceno." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Přihlášení" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token vypršel" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Přihlášení selhalo, nelze inicializovat knihovnu SASL." #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Poslat úlohu" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" 07070100000027000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/de07070100000028000081A400000000000000000000000166FA912D00000A8A000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/de/libksmtp6.po# Torbjörn Klatt <torbjoern.k@googlemail.com>, 2011. # Burkhard Lück <lueck@hube-lueck.de>, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: libksmtp6\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-11-20 08:34+0100\n" "Last-Translator: Burkhard Lück <lueck@hube-lueck.de>\n" "Language-Team: German <kde-i18n-de@kde.org>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Dienst nicht verfügbar" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postfach nicht erreichbar. Servermeldung: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Unzureichender Speicherplatz auf dem Server. Servermeldung: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Serverfehler: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Die Verbindung zum Server ist abgebrochen." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Anmeldung" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Es kann nicht am SMTP-Server authentifiziert werden, da keine passende " "Authentifizierungsmethode gefunden wurde." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token ist abgelaufen" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "Anmeldung fehlgeschlagen, die SASL-Bibliothek kann nicht initialisiert werden" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Senden-Auftrag" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Die Nachricht kann nicht gesendet werden, da entweder der Absender oder " "Empfänger fehlt oder ungültig ist." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Die Nachricht kann nicht gesendet werden, da sie die maximal erlaubte Größe " "von %1 Byte überschreitet. (Nachrichtengröße: %2 Byte.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS wird vom Server nicht unterstützt, benutzen Sie stattdessen SSL/" #~ "TLS." #~ msgid "Server time out" #~ msgstr "Server antwortet nicht " #~ msgid "Job" #~ msgstr "Auftrag" 07070100000029000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003200000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/en_GB0707010000002A000081A400000000000000000000000166FA912D00000A52000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/en_GB/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Steve Allewell <steve.allewell@gmail.com>, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-10-27 17:55+0100\n" "Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n" "Language-Team: British English <kde-l10n-en_gb@kde.org>\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 2.0\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Service not available" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Mailbox unavailable. The server said: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Insufficient storage space on server. The server said: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Server error: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Connection to server lost." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Login" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token expired" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Login failed, cannot initialise the SASL library" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Could not send the message because either the sender or recipient field is " "missing or invalid" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgid "Server time out" #~ msgstr "Server time out" #~ msgid "Job" #~ msgstr "Job" 0707010000002B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/eo0707010000002C000081A400000000000000000000000166FA912D000009B8000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/eo/libksmtp6.po# translation of libksmtp5.pot to esperanto # Copyright (C) 2022 Free Software Foundation, Inc. # This file is distributed under the same license as the ksmtp package. # Oliver Kellogg <olivermkellogg@gmail.com, 2023. # msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-07-30 11:24+0100\n" "Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n" "Language-Team: Esperanto <kde-i18n-eo@kde.org>\n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: translate-po (https://github.com/zcribe/translate-po)\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Servo ne havebla" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Leterkesto nedisponebla. La servilo diris: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Nesufiĉa konserva spaco sur servilo. La servilo diris: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Servila eraro: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Konekto al servilo perdita." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Ensaluti" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Ne eblis aŭtentikiĝi ĉe la SMTP-servilo ĉar neniu kongrua aŭtentikigmetodo " "estis trovita" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token eksvalidiĝis" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Ensaluto malsukcesis, ne povas pravalorigi la SASL-bibliotekon" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Ne eblis sendi la mesaĝon ĉar aŭ la sendinto aŭ ricevanto mankas aŭ nevalidas" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Ne eblis sendi la mesaĝon ĉar ĝi superas la maksimuman permesitan grandecon " "de %1 bajtoj. (Mesaĝgrandeco: %2 bajtoj.)" 0707010000002D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/es0707010000002E000081A400000000000000000000000166FA912D00000B6C000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/es/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Kira J. Fernandez <kirajfdez@gmail.com>, 2011. # Eloy <ecuadra@eloihr.net>, 2017. # Eloy Cuadra <ecuadra@eloihr.net>, 2017. # Javier Vinal <fjvibal@gmail.com>, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-10-08 22:35+0100\n" "Last-Translator: Javier Vinal <fjvinal@gmail.com>\n" "Language-Team: Spanish <kde-l10n-es@kde.org>\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "El servicio no está diponible" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Buzón de correo no disponible. El servidor respondió: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Insuficiente espacio de almacenamiento en el servidor. El servidor " "respondió: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Error del servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Perdida la conexión al servidor." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Inicio de sesión" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "No se ha podido realizar la autenticación en el servidor SMTP porque no se " "ha encontrado ningún método de concordancia." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token expirado" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "El inicio de sesión ha fallado: no se puede inicializar la biblioteca SASL." #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Enviar trabajo" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "No se ha podido enviar el mensaje porque los campos del remitente o del " "destinatario faltan o no son válidos." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "No se ha podido enviar el mensaje porque se ha excedido el tamaño máximo " "permitido de %1 bytes. (Tamaño del mensaje: %2 bytes.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS no está implementado en el servidor, intente usar SSL/TLS en su " #~ "lugar." #~ msgid "Server time out" #~ msgstr "Tiempo límite del servidor" 0707010000002F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/et07070100000030000081A400000000000000000000000166FA912D00000A25000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/et/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Marek Laane <bald@smail.ee>, 2011, 2019. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2019-11-17 00:56+0200\n" "Last-Translator: Marek Laane <qiilaq69@gmail.com>\n" "Language-Team: Estonian <kde-et@lists.linux.ee>\n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 19.08.1\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Teenust ei ole saadaval" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postkast ei ole saadaval. Server teatas: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Serveris napib salvestusruumi. Server teatas: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Serveri tõrge: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Ühendus serveriga katkes." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Sisselogimine" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Autentimine SMTP serveris nurjus, sest ei leitud sobivat autentimisviisi" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Pääsmik on aegunud" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Sisselogimine nurjus, SASL teeki ei õnnestunud initsialiseerida" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Kirja saatmine nurjus, sest saatja või saaja väli puudus või oli vigane" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Kirja saatmine nurjus, sest see ületas maksimaalselt lubatud suurust %1 " "baiti. (Kirja suurus. %2 baiti)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS ei ole serveris toetatud, selle asemel kasutatakse SSL/TLS." #~ msgid "Server time out" #~ msgstr "Serveri ajaületus" #~ msgid "Job" #~ msgstr "Töö" 07070100000031000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/eu07070100000032000081A400000000000000000000000166FA912D00000AE7000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/eu/libksmtp6.po# Translation for libksmtp5.po to Euskara/Basque (eu). # Copyright (C) 2021, This file is copyright: # This file is distributed under the same license as the ksmtp package. # KDE euskaratzeko proiektuko arduraduna <xalba@ni.eus>. # # Translators: # Iñigo Salvador Azurmendi <xalba@ni.eus>, 2021. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2021-08-22 12:56+0200\n" "Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n" "Language-Team: Basque <kde-i18n-eu@kde.org>\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 21.08.0\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Zerbitzua ez dago erabilgarri" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postontzia ez dago erabilgarri. Zerbitzariak esan du: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Zerbitzarian ez dago biltegiratzeko behar den lekua. Zerbitzariak esan du: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Zerbitzariaren errorea: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Zerbitzarirako konexioa galdu da." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Saio-hastea" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Ezin izan da SMTP zerbitzariarekin egiaztatu, ez baita aurkitu egiaztatzeko " "bat datorren metodorik" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Tokena iraungi da" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Saio-hastea huts egin du, ezin du SASL liburutegia hasieratu" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Bidaltzeko ataza" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Ezin izan du mezua bidali, igorlea edo hartzailea eremuak falta direlako edo " "baliogabeak direlako" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Ezin izan du mezua bidali, onartutako %1 byteko gehienezko neurria " "gainditzen duelako (Mezuaren neurria: %2 byte)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "Zerbitzariak ez du STARTTLS onartzen, saia horren ordez SSL/TLS " #~ "erabiltzen." 07070100000033000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/fi07070100000034000081A400000000000000000000000166FA912D00000AEB000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/fi/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Tommi Nieminen <translator@legisign.org>, 2015, 2017, 2018. # Lasse Liehu <lasse.liehu@gmail.com>, 2015. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-11-21 17:23+0200\n" "Last-Translator: Tommi Nieminen <translator@legisign.org>\n" "Language-Team: Finnish <kde-i18n-doc@kde.org>\n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 2.0\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Palvelu ei ole käytettävissä" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postilaatikko ei ole käytettävissä. Palvelin vastasi: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Palvelimen tallennustila ei riitä. Palvelin vastasi: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Palvelinvirhe: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Palvelinyhteys on menetetty." # Tämä on ilmeisesti jonkin ”kirjautumistyön” nimi. #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Kirjaudu" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "SMTP-palvelimeen ei voitu tunnistautua, koska sopivaa todennustapaa ei " "löytynyt" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Merkki on vanhentunut" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Kirjautuminen epäonnistui: SASL-kirjastoa ei voi alustaa" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Viestiä ei voitu lähettää, koska joko lähettäjä- tai vastaanottajakenttä " "puuttuu tai on kelvoton" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Viestiä ei voitu lähettää, koska se ylittää sallitun enimmäiskoon %1 tavua. " "(Viestin koko: %2 tavua.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "Palvelin ei tue STARTTLS:ää, yritä käyttää sen sijaan SSL/TLS:ää." #~ msgid "Server time out" #~ msgstr "Palvelimen aikakatkaisu" #~ msgid "Job" #~ msgstr "Työ" 07070100000035000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/fr07070100000036000081A400000000000000000000000166FA912D00000C4E000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/fr/libksmtp6.po# translation of libksmtp.po to Français # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Joëlle Cornavin <jcorn@free.fr>, 2011. # Xavier Besnard <xavier.besnard@kde.org>, 2013. # Simon Depiets <sdepiets@gmail.com>, 2017, 2018. # Xavier Besnard <xavier.besnard@kde.org>, 2023. # msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-01-04 14:36+0100\n" "Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n" "Language-Team: French <kde-francophone@kde.org>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 22.12.0\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Service non disponible" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Boîte aux lettres non disponible. Le serveur a indiqué : « %1 »" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Espace de stockage insuffisant sur le serveur. Le serveur a indiqué : « %1 »" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Erreur du serveur : « %1 »" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Interruption de la connexion au serveur." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Identifiant de connexion" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Impossible de s'authentifier au serveur « SMTP » car aucune méthode " "d'authentification correspondante n'a été trouvée" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Le token a expiré" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "La connexion a échoué, impossible d'initialiser la bibliothèque « SASL »" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Tâche d'envoi" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Impossible d'envoyer le message car le champ « Expéditeur » ou " "« Destinataire » est absent ou non valable" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Impossible d'envoyer le message car il dépasse la taille maximale autorisée " "de %1 octets (Taille du message : %2 octets)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS n'est pas pris en charge par le serveur, veuillez essayer avec " #~ "SSL/TLS." #~ msgid "Server time out" #~ msgstr "Délai d'attente du serveur" #~ msgid "Job" #~ msgstr "Tâche" 07070100000037000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ga07070100000038000081A400000000000000000000000166FA912D000007B8000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ga/libksmtp6.po# Irish translation of libksmtp # Copyright (C) 2011 This_file_is_part_of_KDE # This file is distributed under the same license as the libksmtp package. # Kevin Scannell <kscanne@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2011-12-28 12:28-0500\n" "Last-Translator: Kevin Scannell <kscanne@gmail.com>\n" "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " "3 : 4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Earráid fhreastalaí" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Logáil isteach" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" #~ msgid "Job" #~ msgstr "Jab" 07070100000039000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/gl0707010000003A000081A400000000000000000000000166FA912D00000B2F000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/gl/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Marce Villarino <mvillarino@kde-espana.es>, 2013. # Adrián Chaves Fernández <adriyetichaves@gmail.com>, 2015, 2017. # Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-10-21 18:58+0100\n" "Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n" "Language-Team: Galician <kde-i18n-doc@kde.org>\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Servizo non dispoñíbel" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Caixa de correo non dispoñíbel. O servidor dixo: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Espazo de almacenamento insuficiente no servidor. O servidor dixo: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Erro do servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Perdeuse a conexión co servidor." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Identificación" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Non foi posíbel autenticar co servidor de SMTP porque non se atopou ningún " "método de autenticación correspondente." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "O código caducou" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "O acceso fallou, non se pode inicializar a biblioteca SASL." #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Tarefa de envío" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Non foi posíbel enviar a mensaxe porque faltan ou son incorrectos os campos " "do remitente ou do destinatario." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Non foi posíbel enviar a mensaxe porque supera o tamaño límite de %1 bytes. " "O tamaño da mensaxe é de %2 bytes." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "O servidor non é compatíbel con STARTTLS, probe a usar SSL/TLS." #~ msgid "Server time out" #~ msgstr "O servidor superou o tempo límite" #~ msgid "Job" #~ msgstr "Tarefa" 0707010000003B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/he0707010000003C000081A400000000000000000000000166FA912D00000A54000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/he/libksmtp6.po# Copyright (C) 2024 This file is copyright: # This file is distributed under the same license as the ksmtp package. # # SPDX-FileCopyrightText: 2024 Yaron Shahrabani <sh.yaron@gmail.com> msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2024-03-19 08:15+0200\n" "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Language-Team: צוות התרגום של KDE ישראל\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " "n % 10 == 0) ? 2 : 3));\n" "X-Generator: Lokalize 23.08.5\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "השירות לא זמין" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "תיבת הדוא״ל לא זמינה. השרת הגיב: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "אין מספיק מקום פנוי בשרת. השרת הגיב: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "שגיאת שרת: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "החיבור לשרת אבד." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "כניסה" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "לא ניתן לאמת את שרת ה־SMTP כיוון שלא נמצאה שיטת אימות תואמת" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "האסימון פג" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "הכניסה נכשלה, לא ניתן להפעיל את ספריית ה־SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "שליחת משימה" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "לא ניתן לשלוח את ההודעה כיוון ששדה המוען או הנמען חסרים או שגויים" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "לא ניתן לשלוח את ההודעה כיוון שהיא חורגת מהגודל המרבי המותר על סך %1 בתים. " "(גודל ההודעה: %2 בתים.)" 0707010000003D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/hi0707010000003E000081A400000000000000000000000166FA912D00000DB6000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/hi/libksmtp6.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # # Sameer Singh <lumarzeli30@gmail.com>, 2021. # Raghavendra Kamath <raghu@raghukamath.com>, 2021. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2021-06-27 15:18+0530\n" "Last-Translator: Raghavendra Kamath <raghu@raghukamath.com>\n" "Language-Team: kde-hindi\n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: Lokalize 21.04.2\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "सेवा उपलब्ध नहीं" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "मेलपेटी अनुपलब्ध। सर्वर ने कहा: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "सर्वर में अपर्याप्त जगह। सर्वर ने कहा: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "सर्वर त्रुटि: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "सर्वर से कनेक्शन टूटा।" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "लॉगइन" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "एसएमटीपी सर्वर में प्रमाणित नहीं कर सके क्योंकि कोई अनूकूल प्रमाणिकरण विधि नहीं मिली" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "टोकन की समय सीमा समाप्त हो चुकी है" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "लॉगइन असफल, एसएएसएल लाइब्ररी को आयोजित नहीं कर सके" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "सेंडजॉब" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "सन्देश भेजा नहीं जा सका क्योंकि प्रेषक या प्रापक क्षेत्र में से कोई एक या तो खाली है या फिर " "अवैध है।" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "संदेश नहीं भेजा जा सका क्योंकि यह अधिकतम अनुमत आकार %1 बाइट्स से अधिक है। (संदेश का " "आकार: %2 बाइट्स।)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "सर्वर में स्टार्टटीएलएस असमर्थित है, इसके बजाय एसएसएल/टीएलएस का प्रयोग करके देखें" 0707010000003F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/hu07070100000040000081A400000000000000000000000166FA912D00000A94000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/hu/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Balázs Úr <urbalazs@gmail.com>, 2012, 2013. # SPDX-FileCopyrightText: 2024 Kristof Kiszel <ulysses@fsf.hu> msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2024-01-19 13:26+0100\n" "Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n" "Language-Team: Hungarian <kde-l10n-hu@kde.org>\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 24.01.90\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "A szolgáltatás nem érhető el" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "A postafiók nem érhető el. A kiszolgáló válasza: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Nincs elegendő tárhely a kiszolgálón. A kiszolgáló válasza: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Kiszolgálóhiba: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "A kapcsolat a kiszolgálóval megszakadt." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Bejelentkezés" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Nem sikerült bejelentkezni az SMTP kiszolgálóra, mert nem található egyező " "hitelesítési módszer" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "A token lejárt" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "Sikertelen bejelentkezés, nem lehet előkészíteni a SASL programkönyvtárat" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Feladat küldése" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Nem sikerült elküldeni az üzenetet, mert a feladó vagy a címzett mező " "hiányzik vagy érvénytelen" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Nem sikerült elküldeni az üzenetet, mert meghaladja az engedélyezett " "maximális %1 bájt méretet. (Az üzenet mérete: %2 bájt.)" #~ msgid "Server time out" #~ msgstr "A kiszolgáló túllépte az időkorlátot" #~ msgid "Job" #~ msgstr "Feladat" 07070100000041000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ia07070100000042000081A400000000000000000000000166FA912D00000A92000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ia/libksmtp6.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # # giovanni <g.sora@tiscali.it>, 2020, 2023. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-07-26 18:04+0200\n" "Last-Translator: giovanni <g.sora@tiscali.it>\n" "Language-Team: Interlingua <kde-i18n-doc@kde.org>\n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 21.12.1\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Servicio non disponibile" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Cassetta de e-posta non disponibile. Le servitor diceva: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Spatio de immagazinage insufficiente sur le servitor. Le servitor diceva: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Error de servitor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Connexion a servitor perdite." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Accesso de identification" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Non pote authenticar se al servitor SMTP proque necun methodo de " "authentication coincidente ha essite trovate" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Indicio (token) expirava" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "Accesso de authentication falleva, non pote initializar le bibliotheca de " "SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob (Invia carga)" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Non pote inviar le message proque o le campo de mittente o de destinatario " "es mancante o invalide" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Non pote inviar le message proque illo excede le grandor maxime permittite " "de %1 bytes. (Grandor de message: %2 bytes)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS non es supportate per le servitor, essaya usante SSL/TLS plus " #~ "tosto." 07070100000043000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/it07070100000044000081A400000000000000000000000166FA912D00000AE7000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/it/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Vincenzo Reale <smart2128vr@gmail.com>, 2011, 2018. # msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-09-22 22:29+0100\n" "Last-Translator: Vincenzo Reale <smart2128@baslug.org>\n" "Language-Team: Italian <kde-i18n-it@kde.org>\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 2.0\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Servizio non disponibile" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Casella di posta non disponibile. Il server ha risposto: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Spazio di archiviazione insufficiente sul server. Il server ha risposto: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Errore del server: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Connessione al server interrotta." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Accesso" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Impossibile eseguire l'autenticazione al server SMTP poiché non è stato " "trovato il metodo di autenticazione corrispondente" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token scaduto" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Accesso non riuscito, impossibile inizializzare la libreria SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Invio" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Impossibile inviare il messaggio poiché il campo del mittente o del " "destinatario è mancante o non valido" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Impossibile inviare il messaggio poiché supera la dimensione massima " "consentita di %1 byte (dimensione del messaggio: %2 byte)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS non è supportato dal server, prova invece a utilizzare SSL/TLS." #~ msgid "Server time out" #~ msgstr "Tempo scaduto per il server" #~ msgid "Job" #~ msgstr "Operazione" 07070100000045000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ja07070100000046000081A400000000000000000000000166FA912D00000689000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ja/libksmtp6.pomsgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2011-06-14 23:23-0700\n" "Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n" "Language-Team: Japanese <kde-jp@kde.org>\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" 07070100000047000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ka07070100000048000081A400000000000000000000000166FA912D00000D26000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ka/libksmtp6.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2022-05-21 06:33+0200\n" "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n" "Language-Team: Georgian <kde-i18n-doc@kde.org>\n" "Language: ka\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "სერვისი ხელმიუწვდომელია" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "საფოსტო ყუთი მიუწვდომელია. სერვერის პასუხი: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "სერვერზე საცავის არასაკმარისი ზომა. სერვერმა თქვა: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "სერვერის შეცდომა: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "სერვერთან კავშირი დაკარგულია." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "შესვლა" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "SMTP ავთენტიკაცია შეუძლებელია. ავთენტიკაციის შესაბამისი მეთოდი ნაპოვნი არაა" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "კოდი ვადაგასულია" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "შესვლის შეცდომა. SAS ბიბილიოთეკის ინიციალიზაცია შეუძლებელია" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "გამგზავნის ან მიმღების ველის არასწორი შემცველობის ან არარსებობის გამო " "შეტყობინების გაგზავნა შეუძლებელია" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "შეტყობინების მაქსიმალური ზომის (%1 ბაიტი) გადაჭარბების გამო შეტყობინების " "გაგზავნა შეუძლებელია. (შეტყობინების ზომაა %2 ბაიტი)" 07070100000049000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/km0707010000004A000081A400000000000000000000000166FA912D00000B9A000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/km/libksmtp6.po# translation of libksmtp.po to Khmer # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Khoem Sokhem <khoemsokhem@khmeros.info>, 2011. msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2011-06-28 07:53+0700\n" "Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n" "Language-Team: Khmer <support@khmeros.info>\n" "Language: km\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "X-Language: km-KH\n" "Plural-Forms: nplurals=1; plural=0;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "កំហុសម៉ាស៊ីនបម្រើ" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "ចូល" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "មិនអាចផ្ទៀងផ្ទាត់ម៉ាស៊ីនបម្រើ SMTP បានទេ ពីព្រោះរកមិនឃើញវិធីសាស្ត្រផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវដែលផ្គូផ្គង" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "មិនអាចផ្ញើសារបានទេ ពីព្រោះទាំងវាលអ្នកផ្ញើ ឬអ្នកទទួលបាត់ ឬមិនត្រឹមត្រូវ" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "មិនអាចផ្ញើសារបានទេ ពីព្រោះវាលើសទំហំដែលបានអនុញ្ញាតអតិបរមា %1 បៃ ។ (ទំហំសារ ៖ %2 បៃ ។)" #~ msgid "Server time out" #~ msgstr "ម៉ាស៊ីនបម្រើអស់ពេល" #~ msgid "Job" #~ msgstr "ការងារ" 0707010000004B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ko0707010000004C000081A400000000000000000000000166FA912D00000A9C000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ko/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Shinjo Park <kde@peremen.name>, 2017, 2018, 2019, 2020. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2020-04-05 13:06+0200\n" "Last-Translator: Shinjo Park <kde@peremen.name>\n" "Language-Team: Korean <kde-kr@kde.org>\n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 19.04.3\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "서비스를 사용할 수 없음" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "편지함을 사용할 수 없습니다. 서버 응답: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "서버에 저장 공간이 부족합니다. 서버 응답: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "서버 오류: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "서버와의 연결이 끊어졌습니다." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "로그인" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "일치하는 인증 방식을 찾을 수 없어서 SMTP 서버에 인증할 수 없음" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "토큰 만료됨" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "로그인 실패, SASL 라이브러리를 초기화할 수 없음" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "보낸 사람이나 받는 사람 필드가 비어 있거나 잘못되었기 때문에 메시지를 보낼 " "수 없음" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "메시지 최대 허용 크기인 %1바이트를 초과했기 때문에 메시지를 보낼 수 없습니다." "(메시지 크기: %2바이트.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "서버에서 STARTTLS를 사용할 수 없습니다. SSL/TLS를 사용하십시오." #~ msgid "Server time out" #~ msgstr "서버 시간 초과됨" 0707010000004D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/lt0707010000004E000081A400000000000000000000000166FA912D000009BE000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/lt/libksmtp6.po# Lithuanian translations for l package. # Copyright (C) 2011 This_file_is_part_of_KDE # This file is distributed under the same license as the l package. # # Automatically generated, 2011. # Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2011. msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2011-10-04 23:13+0300\n" "Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian <kde-i18n-doc@kde.org>\n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" "X-Generator: Lokalize 1.2\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Serverio klaida" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prisijungti" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Nepavyko nustatyti tapatybės SMTP serveryje, nes atitinkamas tapatybės " "nustatymo metodas nerastas" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Siųsti darbą" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Nepavyko išsiųsti laiško, nes trūksta siuntėjo arba gavėjo lauko, arba jie " "netinkami" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Nepavyko išsiųsti laiško, nes jis viršija didžiausią leistiną dydį - %1 " "baitų (Laiško dydis: %2 baitų.)" #~ msgid "Server time out" #~ msgstr "Serveris neatsako" #~ msgid "Job" #~ msgstr "Darbas" 0707010000004F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/lv07070100000050000081A400000000000000000000000166FA912D000009F0000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/lv/libksmtp6.po# Copyright (C) 2024 This file is copyright: # This file is distributed under the same license as the ksmtp package. # # SPDX-FileCopyrightText: 2024 Toms Trasūns <toms.trasuns@posteo.net> msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2024-02-19 16:56+0200\n" "Last-Translator: Toms Trasūns <toms.trasuns@posteo.net>\n" "Language-Team: Latvian <kde-i18n-doc@kde.org>\n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" "X-Generator: Lokalize 23.08.4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Serviss nav pieejams" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Pasta kastīte nav pieejama. Serveris atbildēja: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Serverī nepietiek vietas. Serveris atbildēja: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Servera kļūda: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Savienojums ar serveri ir pazudis." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Ierakstīties" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Neizdevās autentificēties SMTP serverī, jo nav atrasta atbilstoša " "autentifikācijas metode" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Iztecējis pilnvaras termiņš" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Ierakstīšanās neizdevās, jo nevar inicializēt SASL bibliotēku" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Nosūtīt uzdevumu" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Sistēma nevarēja nosūtīt ziņojumu, jo sūtītāja vai saņēmēja lauks ir tukšs " "vai nederīgs" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Sistēma nevarēja nosūtīt ziņojumu, jo tā garums pārsniedz maksimālo atļauto " "izmēru, kas ir %1 baiti. (ziņojumu izmērs: %2 baiti.)" 07070100000051000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/mr07070100000052000081A400000000000000000000000166FA912D0000081E000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/mr/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Chetan Khona <chetan@kompkin.com>, 2013. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2013-04-02 13:56+0530\n" "Last-Translator: Chetan Khona <chetan@kompkin.com>\n" "Language-Team: Marathi <kde-i18n-doc@kde.org>\n" "Language: mr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" "X-Generator: Lokalize 1.5\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "सर्व्हर त्रुटी" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "प्रवेश" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "पाठविण्याचे कार्य" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" #~ msgid "Server time out" #~ msgstr "सर्व्हर वेळ संपली" #~ msgid "Job" #~ msgstr "कार्य" 07070100000053000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003000000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nds07070100000054000081A400000000000000000000000166FA912D00000799000000000000000000000000000000000000003D00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nds/libksmtp6.po# translation of libksmtp.po to Low Saxon # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Manfred Wiese <m.j.wiese@web.de>, 2011. # msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2011-06-15 06:14+0200\n" "Last-Translator: Manfred Wiese <m.j.wiese@web.de>\n" "Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n" "Language: nds\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Serverfehler" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Anmellen" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" #~ msgid "Job" #~ msgstr "Opgaav" 07070100000055000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nl07070100000056000081A400000000000000000000000166FA912D00000AC3000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nl/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Freek de Kruijf <freekdekruijf@kde.nl>, 2011, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-09-17 10:12+0100\n" "Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n" "Language-Team: Dutch <kde-i18n-nl@kde.org>\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Service niet beschikbaar" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postbus niet beschikbaar. De server zei: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Onvoldoende opslagruimte op server. De server zei: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Serverfout: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Verbinding met server verbroken." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Aanmelden" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Kon geen toegang tot de SMTP-server krijgen omdat er geen overeenkomende " "authenticatiemethode is gevonden" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token is verlopen" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Aanmelden is mislukt, kan de SASL bibliotheek niet initialiseren" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Taak verzenden" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Kon het bericht niet verzenden omdat ofwel het afzender- of ontvangerveld " "ontbreekt of ongeldig is" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Kon het bericht niet verzenden omdat de maximaal aantal toegestane grootte " "van %1 bytes wordt overschreden. (Berichtgrootte is %2 bytes)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS wordt niet ondersteund door de server, probeer in plaats daarvan " #~ "SSL/TLS." #~ msgid "Server time out" #~ msgstr "Tijdslimiet overschreden naar de server" #~ msgid "Job" #~ msgstr "Taak" 07070100000057000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nn07070100000058000081A400000000000000000000000166FA912D0000099E000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/nn/libksmtp6.po# Translation of libksmtp6 to Norwegian Nynorsk # # Karl Ove Hufthammer <karl@huftis.org>, 2016, 2020, 2023. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-08-10 20:06+0200\n" "Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n" "Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 23.04.3\n" "X-Environment: kde\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Tenesta ikkje tilgjengeleg" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Postboksen er ikkje tilgjengeleg. Tenaren sa: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Ikkje nok ledig plass på tenaren. Tenaren sa: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Tenarfeil: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Tilkoplinga til tenaren vart avbroten." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Innlogging" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Klarte ikkje autentisera med SMTP-tenaren på grunn av ingen støtta " "autentiseringsmetodar vart funnen." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Tilgangspollett utgått på tid" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Innlogginga var mislukka. Klarte ikkje starta SASL-biblioteket." #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Sendejobb" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Klarte ikkje senda meldinga, då anten avsendar- eller mottakarfeltet manglar " "eller er ugyldig." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Klarte ikkje senda meldinga, då ho er større enn maksstorleiken på %1 byte. " "(Meldingsstorleik: %2 byte.)" 07070100000059000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pl0707010000005A000081A400000000000000000000000166FA912D00000B2B000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pl/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>, 2011, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-11-04 08:29+0100\n" "Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n" "Language-Team: Polish <kde-i18n-doc@kde.org>\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Usługa niedostępna" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Skrzynka pocztowa niedostępna. Serwer zwrócił: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Niewystarczająco miejsca do przechowywania na serwerze. Serwer zwrócił: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Błąd serwera: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Utracono połączenie z serwerem." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Logowanie" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Nie można uwierzytelnić się na serwerze SMTP, bo nie można znaleźć pasującej " "metody uwierzytelnienia" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token wygasł" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Logowanie nie powiodło się, nie można zainicjować biblioteki SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "WyślijZadanie" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Nie można wysłać wiadomości, bo brakuje albo pola wysyłającego albo adresata " "lub są one nieprawidłowe" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Nie można wysłać wiadomości, bo przekracza ona maksymalny dopuszczalny " "rozmiar %1 bajtów. (Rozmiar wiadomości: %2 bajtów.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS nie jest obsługiwany przez serwer, zamiast tego spróbuj użyć SSL/" #~ "TLS." #~ msgid "Server time out" #~ msgstr "Serwer przekroczył czas oczekiwania" #~ msgid "Job" #~ msgstr "Zadanie" 0707010000005B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pt0707010000005C000081A400000000000000000000000166FA912D00000A1E000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pt/libksmtp6.pomsgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-09-16 11:53+0100\n" "Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n" "Language-Team: Portuguese <kde-i18n-pt@kde.org>\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-POFile-SpellExtra: STARTTLS\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Serviço não disponível" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Caixa de correio indisponível. O servidor indicou: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Espaço de armazenamento insuficiente no servidor. O servidor indicou: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Erro no servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Perdeu-se a ligação ao servidor." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Utilizador" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Não foi possível autenticar-se no servidor de SMTP, dado não ter sido " "encontrado qualquer método de autenticação correspondente" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "O código expirou" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "Não foi possível autenticar-se; não é possível inicializar a biblioteca de " "SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Tarefa de Envio" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Não foi possível enviar a mensagem, dado que o campo do remetente ou do " "destinatário está vazio ou é inválido" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Não foi possível enviar a mensagem, dado que excede o tamanho máximo " "permitido de %1 'bytes'. (Tamanho da mensagem: %2 'bytes'.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "O STARTTLS não é suportado pelo servidor; tente usar o SSL/TLS em " #~ "alternativa." 0707010000005D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003200000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pt_BR0707010000005E000081A400000000000000000000000166FA912D00000BBE000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/pt_BR/libksmtp6.po# Translation of libksmtp5.po to Brazilian Portuguese # Copyright (C) 2011-2018 This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Marcus Gama <marcus.gama@gmail.com>, 2011. # André Marcelo Alvarenga <alvarenga@kde.org>, 2011, 2018. # Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2019. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2019-02-20 11:13-0300\n" "Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n" "Language-Team: Portuguese <kde-i18n-pt_BR@kde.org>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 18.12.2\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Serviço não disponível" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Caixa de e-mail não disponível. O servidor retornou: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Espaço de armazenamento insuficiente no servidor. O servidor retornou: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Erro do servidor: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "A conexão com o servidor foi perdida." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Usuário" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Não foi possível autenticar-se no servidor de SMTP, pois não foi encontrado " "qualquer método de autenticação correspondente" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Token expirado" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" "A autenticação falhou porque não é possível inicializar a biblioteca SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Tarefa de envio" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Não foi possível enviar a mensagem pois o campo do remetente ou do " "destinatário está vazio ou é inválido" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Não foi possível enviar a mensagem pois ela excede o tamanho máximo " "permitido de %1 'bytes'. (Tamanho da mensagem: %2 'bytes'.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "O STARTTLS não é suportado pelo servidor, tente usar o SSL/TLS como " #~ "alternativa." #~ msgid "Server time out" #~ msgstr "O servidor expirou o tempo-limite" 0707010000005F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ro07070100000060000081A400000000000000000000000166FA912D0000084B000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ro/libksmtp6.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # Sergiu Bivol <sergiu@cip.md>, 2021. # msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2021-07-26 12:56+0100\n" "Last-Translator: Sergiu Bivol <sergiu@cip.md>\n" "Language-Team: Romanian\n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Lokalize 19.12.3\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Serviciul nu e disponibil" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Cutie poștală indisponibilă. Serverul a spus: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Spațiu de stocare insuficient pe server. Serverul a spus: „%1”" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Eroare server: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Conexiunea la server a fost pierdută." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Autentificare" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Jeton expirat" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Autentificare eșuată, biblioteca SASL nu poate fi inițializată" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" 07070100000061000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ru07070100000062000081A400000000000000000000000166FA912D00000DB4000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ru/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Alexander Potashev <aspotashev@gmail.com>, 2017. # Alexander Yavorsky <kekcuha@gmail.com>, 2018, 2020. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2020-04-22 17:23+0300\n" "Last-Translator: Alexander Yavorsky <kekcuha@gmail.com>\n" "Language-Team: Russian <kde-russian@lists.kde.ru>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 19.12.3\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Сервис недоступен" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Почтовый ящик недоступен. Ответ сервера: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Недостаточно свободного места на сервере. Ответ сервера: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Ошибка сервера: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Соединение с сервером разорвано." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Вход в систему" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Не удалось пройти проверку подлинности на SMTP-сервере: не найден подходящий " "метод проверки подлинности" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Истёк срок действия токена" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Ошибка входа: не удалось инициализировать библиотеку SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Отправка писем" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Не удалось отправить сообщение: поле данных отправителя или получателя не " "заполнено или содержит некорректные данные" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Не удалось отправить сообщение: размер сообщения превышает %1 байт — " "максимально допустимый размер. (Размер сообщения: %2 байт.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "Протокол STARTTLS не поддерживается сервером, попробуйте использовать " #~ "протокол SSL/TLS." #~ msgid "Server time out" #~ msgstr "Время ожидания ответа от сервера истекло" 07070100000063000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sa07070100000064000081A400000000000000000000000166FA912D00000CF5000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sa/libksmtp6.po# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-09-27 18:59+0530\n" "Last-Translator: \n" "Language-Team: Sanskrit <kde-i18n-doc@kde.org>\n" "Language: sa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.3.2\n" "Plural-Forms: nplurals=2; plural=(n>2);\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "सेवा उपलब्धा नास्ति" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "सन्देशपेटिका अनुपलब्धः अस्ति। वितारकः अवदत् : %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "वितारके अपर्याप्तं भण्डारणस्थानं। वितारकः अवदत् : %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "वितारक त्रुटिः: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "वितारकेन सह सम्पर्कः नष्टः।." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "सम्प्रवेश" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "SMTP वितारकं प्रति प्रमाणीकरणं कर्तुं न शक्तवान् यतः कोऽपि मेलप्रमाणीकरणविधिः न प्राप्ता" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "स्तोकस्य अवधिः समाप्तः" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "प्रवेशः विफलः, SASL पुस्तकालयस्य आरम्भं कर्तुं न शक्नोति" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "प्रेषणकार्यम्" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "सन्देशं प्रेषयितुं न शक्तवान् यतः प्रेषकक्षेत्रं वा ग्राहकं वा क्षेत्रं लुप्तं अथवा अमान्यं अस्ति" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "सन्देशं प्रेषयितुं न शक्तवान् यतः सः %1 बाइट् इत्यस्य अधिकतमं अनुमतं आकारं अतिक्रमयति । " "(सन्देशस्य आकारः : %2 बाइट् ।)" 07070100000065000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sk07070100000066000081A400000000000000000000000166FA912D00000ABB000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sk/libksmtp6.po# translation of libksmtp.po to Slovak # Roman Paholik <wizzardsk@gmail.com>, 2012, 2013, 2017. # Matej Mrenica <matejm98mthw@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2019-08-04 10:11+0200\n" "Last-Translator: Matej Mrenica <matejm98mthw@gmail.com>\n" "Language-Team: Slovak <kde-i18n-doc@kde.org>\n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 19.07.90\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Služba nie je k dispozícii" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Poštová schránka nie je k dispozícii. Server hlási: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Nedostatočný úložný priestor na serveri. Server hlási: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Chyba servera: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Spojenie k serveru bolo stratené." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prihlásenie" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Nemôžem overiť cez SMTP server pretože nebola nájdená vyhovujúca overovacia " "metóda" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Platnosť tokenu vypršala" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Prihlásenie zlyhalo, nemôžem inicializovať knižnicu SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Poslať úlohu" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Nemôžem poslať správu pretože pole odosielateľa alebo prijímateľa chýba " "alebo je neplatné" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Nemôžem poslať správu pretože presahuje maximálnu povolenú veľkosť %1 " "bajtov. (Veľkosť správy: %2 bajtov.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "STARTTLS nie je podporovaný serverom, skúste namiesto toho použiť SSL/TLS." #~ msgid "Server time out" #~ msgstr "Časový limit servera" #~ msgid "Job" #~ msgstr "Úloha" 07070100000067000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sl07070100000068000081A400000000000000000000000166FA912D00000B6B000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sl/libksmtp6.po# Slovenian translation of libksmtp5 # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Andrej Mernik <andrejm@ubuntu.si>, 2017. # Matjaž Jeran <matjaz.jeran@amis.net>, 2019. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2020-01-23 16:40+0100\n" "Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n" "Language-Team: Slovenian <lugos-slo@lugos.si>\n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Translator: Andrej Mernik <andrejm@ubuntu.si>\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" "X-Generator: Poedit 2.2.4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Storitev ni na voljo" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Potni nabiralnik na na voljo. Strežnik je sporočil: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Premalo prostora za shranjevanje na strežniku. Strežnik je sporočil: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Napaka strežnika: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Povezava s strežnikom je bila prekinjena." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prijava" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Ni se bilo mogoče overiti strežniku SMTP, ker ni bilo najdenega nobenega " "načina za overitev" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Žeton je pretekel" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Prijava ni uspela, saj ni mogoče inicializirati knjižnice SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Sporočila ni bilo mogoče poslati, ker ima neveljavno oz. manjkajoče polje " "pošiljatelj ali prejemnik" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Sporočila ni bilo mogoče poslati, ker presega največjo dovoljeno velikost %1 " "bajtov. (Velikost sporočila: %2 bajtov.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "Strežnik ne podpira STARTTLS, poskusite namesto tega uporabiti SSL/TLS." #~ msgid "Server time out" #~ msgstr "Časovni pretek strežnika" #~ msgid "Job" #~ msgstr "Posel" 07070100000069000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr0707010000006A000081A400000000000000000000000166FA912D00000A95000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr/libksmtp6.po# Translation of libksmtp5.po into Serbian. # Chusslove Illich <caslav.ilic@gmx.net>, 2017. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2017-08-05 19:10+0200\n" "Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n" "Language-Team: Serbian <kde-i18n-sr@kde.org>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Environment: kde\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Грешка сервера" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Веза са сервером изгубљена." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Пријављивање" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Не могу да се аутентификујем на СМТП серверу зато што није нађен ниједан " "поклапајући метод аутентификације." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Пријављивање пропало, не могу да припремим САСЛ библиотеку" # rewrite-msgid: /Job// #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Слање" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Не могу да пошаљем поруку зато што је или поље пошиљаоца или примаоца празно " "или лоше." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Не могу да пошаљем поруку зато што премашује највећу дозвољену величину од " "%1 B. (Величина поруке: %2 B.)" 0707010000006B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@ijekavian0707010000006C000081A400000000000000000000000166FA912D00000A9F000000000000000000000000000000000000004600000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@ijekavian/libksmtp6.po# Translation of libksmtp5.po into Serbian. # Chusslove Illich <caslav.ilic@gmx.net>, 2017. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2017-08-05 19:10+0200\n" "Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n" "Language-Team: Serbian <kde-i18n-sr@kde.org>\n" "Language: sr@ijekavian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Environment: kde\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Грешка сервера" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Веза са сервером изгубљена." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Пријављивање" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Не могу да се аутентификујем на СМТП серверу зато што није нађен ниједан " "поклапајући метод аутентификације." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Пријављивање пропало, не могу да припремим САСЛ библиотеку" # rewrite-msgid: /Job// #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Слање" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Не могу да пошаљем поруку зато што је или поље пошиљаоца или примаоца празно " "или лоше." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Не могу да пошаљем поруку зато што премашује највећу дозвољену величину од " "%1 B. (Величина поруке: %2 B.)" 0707010000006D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@ijekavianlatin0707010000006E000081A400000000000000000000000166FA912D00000968000000000000000000000000000000000000004B00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@ijekavianlatin/libksmtp6.po# Translation of libksmtp5.po into Serbian. # Chusslove Illich <caslav.ilic@gmx.net>, 2017. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2017-08-05 19:10+0200\n" "Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n" "Language-Team: Serbian <kde-i18n-sr@kde.org>\n" "Language: sr@ijekavianlatin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Environment: kde\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Greška servera" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Veza sa serverom izgubljena." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prijavljivanje" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Ne mogu da se autentifikujem na SMTP serveru zato što nije nađen nijedan " "poklapajući metod autentifikacije." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Prijavljivanje propalo, ne mogu da pripremim SASL biblioteku" # rewrite-msgid: /Job// #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Slanje" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Ne mogu da pošaljem poruku zato što je ili polje pošiljaoca ili primaoca " "prazno ili loše." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Ne mogu da pošaljem poruku zato što premašuje najveću dozvoljenu veličinu od " "%1 B. (Veličina poruke: %2 B.)" 0707010000006F000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003500000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@latin07070100000070000081A400000000000000000000000166FA912D0000095F000000000000000000000000000000000000004200000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sr@latin/libksmtp6.po# Translation of libksmtp5.po into Serbian. # Chusslove Illich <caslav.ilic@gmx.net>, 2017. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2017-08-05 19:10+0200\n" "Last-Translator: Chusslove Illich <caslav.ilic@gmx.net>\n" "Language-Team: Serbian <kde-i18n-sr@kde.org>\n" "Language: sr@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Accelerator-Marker: &\n" "X-Text-Markup: kde4\n" "X-Environment: kde\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "Greška servera" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Veza sa serverom izgubljena." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Prijavljivanje" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Ne mogu da se autentifikujem na SMTP serveru zato što nije nađen nijedan " "poklapajući metod autentifikacije." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Prijavljivanje propalo, ne mogu da pripremim SASL biblioteku" # rewrite-msgid: /Job// #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Slanje" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Ne mogu da pošaljem poruku zato što je ili polje pošiljaoca ili primaoca " "prazno ili loše." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Ne mogu da pošaljem poruku zato što premašuje najveću dozvoljenu veličinu od " "%1 B. (Veličina poruke: %2 B.)" 07070100000071000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sv07070100000072000081A400000000000000000000000166FA912D00000ABF000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/sv/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Stefan Asserhall <stefan.asserhall@gmail.com>, 2011, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-09-18 20:16+0100\n" "Last-Translator: Stefan Asserhäll <stefan.asserhall@gmail.com>\n" "Language-Team: Swedish <kde-i18n-doc@kde.org>\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Tjänst ej tillgänglig" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Brevlåda ej tillgänglig. Servern svarade: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Otillräckligt lagringsutrymme på servern. Servern svarade: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Serverfel: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Anslutningen till servern förlorad." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Inloggning" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Kunde inte erhålla behörighet av SMTP-servern eftersom ingen matchande metod " "för behörighetskontroll hittades" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Symbol utgången" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Inloggning misslyckades, kan inte initiera SASL-biblioteket" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Sändningsjobb" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Kunde inte skicka brevet eftersom antingen fältet för avsändare eller " "mottagare saknas eller är ogiltigt" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Kunde inte skicka brevet eftersom det överskrider den största tillåtna " "storleken %1 byte (brevstorlek: %2 byte)." #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "STARTTLS stöds inte av servern. Försök använda SSL/TLS istället." #~ msgid "Server time out" #~ msgstr "Tidsgräns har gått ut för servern" #~ msgid "Job" #~ msgstr "Jobb" 07070100000073000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ta07070100000074000081A400000000000000000000000166FA912D00000909000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ta/libksmtp6.po# Copyright (C) YEAR This file is copyright: # This file is distributed under the same license as the ksmtp package. # # Kishore G <kishore96@gmail.com>, 2022. msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2022-07-07 19:26+0530\n" "Last-Translator: Kishore G <kishore96@gmail.com>\n" "Language-Team: Tamil <kde-i18n-doc@kde.org>\n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 22.04.2\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "சேவை கிடைக்கவில்லை" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "அஞ்சல்பெட்டி கிடைக்கவில்லை. சேவையகம் கூறியது: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "சேவையகத்தில் போதிய சேமிப்பக இடம் இல்லை. சேவையகம் கூறியது: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "சேவையக சிக்கல்: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "சேவையகத்துடனான இணைப்பு முறிவடைந்தது." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "நுழைவு" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" 07070100000075000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/tr07070100000076000081A400000000000000000000000166FA912D000009CC000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/tr/libksmtp6.po# Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # # Emir SARI <emir_sari@icloud.com>, 2022, 2023. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-02-08 20:10+0300\n" "Last-Translator: Emir SARI <emir_sari@icloud.com>\n" "Language-Team: Turkish <kde-l10n-tr@kde.org>\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 22.12.2\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Hizmet kullanılamıyor" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Posta kutusu kullanılamıyor: Sunucu dedi ki: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "Sunucuda yetersiz depolama alanı. Sunucu dedi ki: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Sunucu hatası: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "Sunucuya yapılan bağlantı koptu." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Oturum Aç" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "SMTP sunucusunda kimlik doğrulama yapılamadı; çünkü eşleşen bir kimlik " "doğrulama yöntemi bulunamadı" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Jetonun süresi doldu" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Oturum açma başarısız, SASL kitaplığı başlatılamıyor" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "GörevGönder" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "İleti gönderilemedi; çünkü gönderen veya alıcı alanları eksik veya geçersiz" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "İleti gönderilemedi; çünkü en büyük %1 bayt boyutu geçildi. (İleti boyutu: " "%2 bayt)" #~ msgid "Server time out" #~ msgstr "Sunucu zaman aşımı" #~ msgid "Job" #~ msgstr "Görev" 07070100000077000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ug07070100000078000081A400000000000000000000000166FA912D00000790000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/ug/libksmtp6.po# Uyghur translation for libksmtp. # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # Gheyret Kenji <gheyret@gmail.com>, YEAR. # msgid "" msgstr "" "Project-Id-Version: libksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2013-09-08 07:05+0900\n" "Last-Translator: Gheyret Kenji <gheyret@gmail.com>\n" "Language-Team: Uyghur <kde-i18n-doc@kde.org>\n" "Language: ug\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" #: job.cpp:64 #, fuzzy, kde-format #| msgid "Server error" msgid "Server error: %1" msgstr "مۇلازىمېتىر خاتالىقى" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "كىرىش" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" #~ msgid "Job" #~ msgstr "ۋەزىپە" 07070100000079000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/uk0707010000007A000081A400000000000000000000000166FA912D00000E5F000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/uk/libksmtp6.po# Translation of libksmtp5.po to Ukrainian # Copyright (C) 2018 This_file_is_part_of_KDE # This file is distributed under the license LGPL version 2.1 or # version 3 or later versions approved by the membership of KDE e.V. # # Yuri Chornoivan <yurchor@ukr.net>, 2011, 2017, 2018. msgid "" msgstr "" "Project-Id-Version: libksmtp5\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2018-09-17 08:53+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "Немає доступу до служби" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "Немає доступу до поштової скриньки. Повідомлення сервера: %1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "" "Недостатньо місця для зберігання даних на сервері. Повідомлення сервера: %1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "Помилка сервера: %1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "З’єднання з сервером розірвано." #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "Вхід" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "" "Не вдалося пройти розпізнавання на сервері SMTP через те, що не було " "знайдено відповідного способу розпізнавання." #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "Ключ застарів" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "Не вдалося увійти через неможливість ініціалізувати бібліотеку SASL" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "Надсилання" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "" "Не вдалося надіслати повідомлення, оскільки поле відправника або отримувача " "не заповнено або заповнено з помилками." #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "Не вдалося надіслати повідомлення, оскільки його розмір перевищує " "максимальний можливий — %1 байтів. (Розмір повідомлення: %2 байтів.)" #~ msgid "STARTTLS is not supported by the server, try using SSL/TLS instead." #~ msgstr "" #~ "Не сервері не передбачено підтримки STARTTLS, спробуйте скористатися SSL/" #~ "TLS." #~ msgid "Server time out" #~ msgstr "Перевищення часу очікування на відповідь від сервера" #~ msgid "Job" #~ msgstr "Завдання" 0707010000007B000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003200000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/zh_CN0707010000007C000081A400000000000000000000000166FA912D000008C1000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/zh_CN/libksmtp6.pomsgid "" msgstr "" "Project-Id-Version: kdeorg\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2024-04-22 15:58\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: kdeorg\n" "X-Crowdin-Project-ID: 269464\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /kf6-trunk/messages/ksmtp/libksmtp6.pot\n" "X-Crowdin-File-ID: 48998\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "服务不可用" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "无法访问此邮箱,服务器响应为:%1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "服务器的存储空间不足,服务器响应为:%1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "服务器出错:%1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "与服务器的连接丢失。" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "登录" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "无法在该 SMTP 服务器上进行身份验证,无法找到匹配的身份验证方式" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "令牌已过期" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "登录失败,无法初始化 SASL 库" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "发送任务" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "无法发送该信件,发信人或者收件人缺失或无效" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "无法发送该信件,它超过了最大允许的 %1 字节大小。(信件大小:%2 字节。)" 0707010000007D000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000003200000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/zh_TW0707010000007E000081A400000000000000000000000166FA912D0000093D000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/po/zh_TW/libksmtp6.po# Copyright (C) 2023 This file is copyright: # This file is distributed under the same license as the ksmtp package. # # SPDX-FileCopyrightText: 2023 Kisaragi Hiu <mail@kisaragi-hiu.com> msgid "" msgstr "" "Project-Id-Version: ksmtp\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2022-04-14 00:45+0000\n" "PO-Revision-Date: 2023-12-20 17:20+0900\n" "Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n" "Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 23.08.4\n" #: job.cpp:58 #, kde-format msgid "Service not available" msgstr "服務不可用" #: job.cpp:60 #, kde-format msgid "Mailbox unavailable. The server said: %1" msgstr "信箱不可用。伺服器回應:%1" #: job.cpp:62 #, kde-format msgid "Insufficient storage space on server. The server said: %1" msgstr "伺服器上的空間不足。伺服器回應:%1" #: job.cpp:64 #, kde-format msgid "Server error: %1" msgstr "伺服器錯誤:%1" #: job.cpp:73 #, kde-format msgid "Connection to server lost." msgstr "已喪失對伺服器的連線。" #: loginjob.cpp:77 #, kde-format msgid "Login" msgstr "登入" #: loginjob.cpp:163 #, kde-format msgid "" "Could not authenticate to the SMTP server because no matching authentication " "method has been found" msgstr "無法與 SMTP 伺服器進行驗證,因為沒有找到任何相符的認證方法" #: loginjob.cpp:224 #, kde-format msgid "Token expired" msgstr "權杖已過期" #: loginjob.cpp:268 #, kde-format msgid "Login failed, cannot initialize the SASL library" msgstr "登入失敗,無法初始化 SASL 函式庫" #: sendjob.cpp:54 #, kde-format msgid "SendJob" msgstr "SendJob" #: sendjob.cpp:103 #, kde-format msgid "" "Could not send the message because either the sender or recipient field is " "missing or invalid" msgstr "無法傳送信件,因為寄件者或收件者欄位缺乏或者是無效的" #: sendjob.cpp:111 #, kde-format msgid "" "Could not send the message because it exceeds the maximum allowed size of %1 " "bytes. (Message size: %2 bytes.)" msgstr "" "無法傳送信件,因為它的大小超過最大允許值(%1 位元組)。(信件大小:%2 位元" "組)" 0707010000007F000081A400000000000000000000000166FA912D00000222000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/readme-build-ftime.txt# Analyzing Build Performance For debug build time: We need ClangBuildAnalyzer ` git clone https://github.com/aras-p/ClangBuildAnalyzer mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=<path> ../ make install ` ## Command line cmake -preset ftime-trace ClangBuildAnalyzer --start $PWD/build-ftime-trace cmake --build --preset ftime-trace ClangBuildAnalyzer --stop $PWD/build-ftime-trace build-ftime.txt ClangBuildAnalyzer --analyze build-ftime.txt > analyze-build-ftime.txt see https://aras-p.info/blog/2019/09/28/Clang-Build-Analyzer/ 07070100000080000081A400000000000000000000000166FA912D0000003E000000000000000000000000000000000000004800000000ksmtp-VERSIONgit.20240930T135317~29e0375/readme-build-ftime.txt.licenseSPDX-FileCopyrightText: none SPDX-License-Identifier: CC0-1.0 07070100000081000081A400000000000000000000000166FA912D000001BF000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/sanitizers.supp# SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org> # SPDX-License-Identifier: CC0-1.0 # Suppression file for ASAN/LSAN leak:libspeechd leak:getdelim leak:g_malloc leak:libfontconfig leak:libdbus leak:QEasingCurve:: leak:QtSharedPointer::ExternalRefCountData::getAndRef leak:QArrayData::allocate leak:QObject::QObject leak:QObjectPrivate::addConnection leak:QObjectPrivate::connectImpl leak:QPropertyAnimation::QPropertyAnimation 07070100000082000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002D00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src07070100000083000081A400000000000000000000000166FA912D00000AA8000000000000000000000000000000000000003C00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/CMakeLists.txt# SPDX-FileCopyrightText: none # SPDX-License-Identifier: BSD-3-Clause add_library(KPim6SMTP) add_library(KPim6::SMTP ALIAS KPim6SMTP) target_sources(KPim6SMTP PRIVATE job.cpp loginjob.cpp sendjob.cpp session.cpp sessionthread.cpp sessionuiproxy.cpp loginjob.h sessionthread_p.h session_p.h job.h serverresponse_p.h session.h sessionuiproxy.h job_p.h sendjob.h ) ecm_qt_declare_logging_category(KPim6SMTP HEADER ksmtp_debug.h IDENTIFIER KSMTP_LOG CATEGORY_NAME org.kde.pim.ksmtp DESCRIPTION "ksmtp (ksmtp)" EXPORT KSMTP ) if(COMPILE_WITH_UNITY_CMAKE_SUPPORT) set_target_properties(KPim6SMTP PROPERTIES UNITY_BUILD ON) endif() ecm_generate_export_header(KPim6SMTP BASE_NAME ksmtp VERSION ${KSMTP_VERSION} DEPRECATED_BASE_VERSION 0 USE_VERSION_HEADER ) target_include_directories(KPim6SMTP INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KPim6/KSMTP;${KDE_INSTALL_INCLUDEDIR}/KPim6/KSMTP/ksmtp>") if(WIN32) set(extra_LIBS ws2_32) endif() target_link_libraries(KPim6SMTP PUBLIC KF6::CoreAddons PRIVATE KF6::I18n KF6::KIOCore Qt::Network Sasl2::Sasl2 ${extra_LIBS} ) set_target_properties(KPim6SMTP PROPERTIES VERSION ${KSMTP_VERSION} SOVERSION ${KSMTP_SOVERSION} EXPORT_NAME SMTP ) ecm_generate_headers(KSMTP_CamelCase_HEADERS HEADER_NAMES Job LoginJob SendJob Session SessionUiProxy PREFIX KSMTP REQUIRED_HEADERS KSMTP_HEADERS ) install(TARGETS KPim6SMTP EXPORT KPim6SMTPTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ksmtp_export.h ${KSMTP_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KSMTP/ksmtp ) install(FILES ${KSMTP_CamelCase_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KPim6/KSMTP/KSMTP ) ecm_qt_install_logging_categories(EXPORT KSMTP FILE ksmtp.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) if(BUILD_QCH) ecm_add_qch( KPim6SMTP_QCH NAME KPim6SMTP BASE_NAME KPim6SMTP VERSION ${PIM_VERSION} ORG_DOMAIN org.kde SOURCES # using only public headers, to cover only public API ${KSMTP_HEADERS} ${KSMTP_CamelCase_HEADERS} #MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" #IMAGE_DIRS "${CMAKE_SOURCE_DIR}/docs/pics" LINK_QCHS Qt6Core_QCH Qt6Gui_QCH Qt6Widgets_QCH INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} BLANK_MACROS KSMTP_EXPORT TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel ) endif() 07070100000084000081A400000000000000000000000166FA912D000000CF000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/Messages.sh#! /bin/sh # SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2017 Montel Laurent <montel@kde.org> $XGETTEXT `find . -name "*.cpp" -o -name "*.h" | grep -v '/tests/'` -o $podir/libksmtp6.pot 07070100000085000081A400000000000000000000000166FA912D000007AE000000000000000000000000000000000000003500000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/job.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "job.h" #include "job_p.h" #include "serverresponse_p.h" #include "session_p.h" #include <KLocalizedString> using namespace KSmtp; Job::Job(Session *session) : KJob(session) , d_ptr(new JobPrivate(session, QStringLiteral("Job"))) { } Job::Job(JobPrivate &dd) : KJob(dd.m_session) , d_ptr(&dd) { } Job::~Job() = default; Session *Job::session() const { Q_D(const Job); return d->m_session; } void Job::start() { Q_D(Job); d->sessionInternal()->addJob(this); } void Job::sendCommand(const QByteArray &cmd) { Q_D(Job); d->sessionInternal()->sendData(cmd); } void Job::handleErrors(const ServerResponse &r) { if (r.isCode(4) || r.isCode(5)) { setError(KJob::UserDefinedError); // https://www.ietf.org/rfc/rfc2821.txt // We could just use r.text(), but that might not be in the user's language, so try and prepend a translated message. const QString serverText = QString::fromUtf8(r.text()); if (r.code() == 421) { setErrorText(i18n("Service not available")); // e.g. the server is shutting down } else if (r.code() == 450 || r.code() == 550) { setErrorText(i18n("Mailbox unavailable. The server said: %1", serverText)); } else if (r.code() == 452 || r.code() == 552) { setErrorText(i18n("Insufficient storage space on server. The server said: %1", serverText)); } else { setErrorText(i18n("Server error: %1", serverText)); } emitResult(); } } void Job::connectionLost() { setError(KJob::UserDefinedError); setErrorText(i18n("Connection to server lost.")); emitResult(); } #include "moc_job.cpp" 07070100000086000081A400000000000000000000000166FA912D00000405000000000000000000000000000000000000003300000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/job.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "ksmtp_export.h" #include <KJob> namespace KSmtp { class Session; class SessionPrivate; class JobPrivate; class ServerResponse; /** * @brief The Job class */ class KSMTP_EXPORT Job : public KJob { Q_OBJECT Q_DECLARE_PRIVATE(Job) friend class SessionPrivate; public: ~Job() override; [[nodiscard]] Session *session() const; void start() override; protected: void sendCommand(const QByteArray &cmd); virtual void doStart() = 0; virtual void handleResponse(const ServerResponse &response) = 0; void handleErrors(const ServerResponse &response); void connectionLost(); explicit Job(Session *session); explicit Job(JobPrivate &dd); std::unique_ptr<JobPrivate> const d_ptr; }; } 07070100000087000081A400000000000000000000000166FA912D000002BC000000000000000000000000000000000000003500000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/job_p.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "session.h" namespace KSmtp { class SessionPrivate; class JobPrivate { public: JobPrivate(Session *session, const QString &name) : m_session(session) , m_name(name) { } virtual ~JobPrivate() = default; inline SessionPrivate *sessionInternal() { return m_session->d; } inline const SessionPrivate *sessionInternal() const { return m_session->d; } Session *m_session = nullptr; QString m_name; }; } 07070100000088000081A400000000000000000000000166FA912D00002C6D000000000000000000000000000000000000003A00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/loginjob.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "loginjob.h" #include "job_p.h" #include "ksmtp_debug.h" #include "serverresponse_p.h" #include "session_p.h" #include <KLocalizedString> #include <QJsonDocument> #include <QJsonObject> extern "C" { #include <sasl/sasl.h> } namespace { static const sasl_callback_t callbacks[] = {{SASL_CB_ECHOPROMPT, nullptr, nullptr}, {SASL_CB_NOECHOPROMPT, nullptr, nullptr}, {SASL_CB_GETREALM, nullptr, nullptr}, {SASL_CB_USER, nullptr, nullptr}, {SASL_CB_AUTHNAME, nullptr, nullptr}, {SASL_CB_PASS, nullptr, nullptr}, {SASL_CB_CANON_USER, nullptr, nullptr}, {SASL_CB_LIST_END, nullptr, nullptr}}; } namespace KSmtp { class LoginJobPrivate : public JobPrivate { public: LoginJobPrivate(LoginJob *job, Session *session, const QString &name) : JobPrivate(session, name) , m_preferedAuthMode(LoginJob::Login) , m_actualAuthMode(LoginJob::UnknownAuth) , q(job) { } ~LoginJobPrivate() override = default; [[nodiscard]] bool sasl_interact(); [[nodiscard]] bool sasl_init(); [[nodiscard]] bool sasl_challenge(const QByteArray &data); [[nodiscard]] bool authenticate(); [[nodiscard]] bool selectAuthentication(); [[nodiscard]] LoginJob::AuthMode authModeFromCommand(const QByteArray &mech) const; [[nodiscard]] QByteArray authCommand(LoginJob::AuthMode mode) const; QString m_userName; QString m_password; LoginJob::AuthMode m_preferedAuthMode; LoginJob::AuthMode m_actualAuthMode; sasl_conn_t *m_saslConn = nullptr; sasl_interact_t *m_saslClient = nullptr; private: LoginJob *const q; }; } using namespace KSmtp; LoginJob::LoginJob(Session *session) : Job(*new LoginJobPrivate(this, session, i18n("Login"))) { } LoginJob::~LoginJob() = default; void LoginJob::setUserName(const QString &userName) { Q_D(LoginJob); d->m_userName = userName; } void LoginJob::setPassword(const QString &password) { Q_D(LoginJob); d->m_password = password; } void LoginJob::setPreferedAuthMode(AuthMode mode) { Q_D(LoginJob); if (mode == UnknownAuth) { qCWarning(KSMTP_LOG) << "LoginJob: Cannot set preferred authentication mode to Unknown"; return; } d->m_preferedAuthMode = mode; } LoginJob::AuthMode LoginJob::usedAuthMode() const { return d_func()->m_actualAuthMode; } void LoginJob::doStart() { Q_D(LoginJob); if (d->sessionInternal()->negotiatedEncryption() == QSsl::UnknownProtocol && d->m_session->encryptionMode() != Session::Unencrypted) { qFatal("LoginJob started despite session not being encrypted!"); } if (!d->authenticate()) { emitResult(); } } void LoginJob::handleResponse(const ServerResponse &r) { Q_D(LoginJob); // Handle server errors handleErrors(r); // Send account data if (r.isCode(334)) { if (d->m_actualAuthMode == Plain) { const QByteArray challengeResponse = '\0' + d->m_userName.toUtf8() + '\0' + d->m_password.toUtf8(); sendCommand(challengeResponse.toBase64()); } else { if (!d->sasl_challenge(QByteArray::fromBase64(r.text()))) { emitResult(); } } return; } // Final agreement if (r.isCode(235)) { d->sessionInternal()->setState(Session::Authenticated); emitResult(); } } bool LoginJobPrivate::selectAuthentication() { const QStringList availableModes = m_session->availableAuthModes(); if (availableModes.contains(QString::fromLatin1(authCommand(m_preferedAuthMode)))) { m_actualAuthMode = m_preferedAuthMode; } else if (availableModes.contains(QString::fromLatin1(authCommand(LoginJob::Login)))) { m_actualAuthMode = LoginJob::Login; } else if (availableModes.contains(QString::fromLatin1(authCommand(LoginJob::Plain)))) { m_actualAuthMode = LoginJob::Plain; } else { qCWarning(KSMTP_LOG) << "LoginJob: Couldn't choose an authentication method. Please retry with : " << availableModes; q->setError(KJob::UserDefinedError); q->setErrorText(i18n("Could not authenticate to the SMTP server because no matching authentication method has been found")); return false; } return true; } bool LoginJobPrivate::sasl_init() { if (sasl_client_init(nullptr) != SASL_OK) { qCWarning(KSMTP_LOG) << "Failed to initialize SASL"; return false; } return true; } bool LoginJobPrivate::sasl_interact() { sasl_interact_t *interact = m_saslClient; while (interact->id != SASL_CB_LIST_END) { qCDebug(KSMTP_LOG) << "SASL_INTERACT Id" << interact->id; switch (interact->id) { case SASL_CB_AUTHNAME: { // case SASL_CB_USER: qCDebug(KSMTP_LOG) << "SASL_CB_[USER|AUTHNAME]: '" << m_userName << "'"; const auto username = m_userName.toUtf8(); interact->result = strdup(username.constData()); interact->len = username.size(); break; } case SASL_CB_PASS: { qCDebug(KSMTP_LOG) << "SASL_CB_PASS: [hidden]"; const auto pass = m_password.toUtf8(); interact->result = strdup(pass.constData()); interact->len = pass.size(); break; } default: interact->result = nullptr; interact->len = 0; break; } ++interact; } return true; } bool LoginJobPrivate::sasl_challenge(const QByteArray &challenge) { int result = -1; const char *out = nullptr; uint outLen = 0; if (m_actualAuthMode == LoginJob::XOAuth2) { QJsonDocument doc = QJsonDocument::fromJson(challenge); if (!doc.isNull() && doc.isObject()) { const auto obj = doc.object(); if (obj.value(QLatin1StringView("status")).toString() == QLatin1StringView("400")) { q->setError(LoginJob::TokenExpired); q->setErrorText(i18n("Token expired")); // https://developers.google.com/gmail/imap/xoauth2-protocol#error_response_2 // "The client sends an empty response ("\r\n") to the challenge containing the error message." q->sendCommand(""); return false; } } } for (;;) { result = sasl_client_step(m_saslConn, challenge.isEmpty() ? nullptr : challenge.constData(), challenge.size(), &m_saslClient, &out, &outLen); if (result == SASL_INTERACT) { if (!sasl_interact()) { q->setError(LoginJob::UserDefinedError); sasl_dispose(&m_saslConn); return false; } } else { break; } } if (result != SASL_OK && result != SASL_CONTINUE) { const QString saslError = QString::fromUtf8(sasl_errdetail(m_saslConn)); qCWarning(KSMTP_LOG) << "sasl_client_step failed: " << result << saslError; q->setError(LoginJob::UserDefinedError); q->setErrorText(saslError); sasl_dispose(&m_saslConn); return false; } q->sendCommand(QByteArray::fromRawData(out, outLen).toBase64()); return true; } bool LoginJobPrivate::authenticate() { if (!selectAuthentication()) { return false; } if (!sasl_init()) { q->setError(LoginJob::UserDefinedError); q->setErrorText(i18n("Login failed, cannot initialize the SASL library")); return false; } int result = sasl_client_new("smtp", m_session->hostName().toUtf8().constData(), nullptr, nullptr, callbacks, 0, &m_saslConn); if (result != SASL_OK) { const auto saslError = QString::fromUtf8(sasl_errdetail(m_saslConn)); q->setError(LoginJob::UserDefinedError); q->setErrorText(saslError); return false; } uint outLen = 0; const char *out = nullptr; const char *actualMech = nullptr; const auto authMode = authCommand(m_actualAuthMode); for (;;) { qCDebug(KSMTP_LOG) << "Trying authmod" << authMode; result = sasl_client_start(m_saslConn, authMode.constData(), &m_saslClient, &out, &outLen, &actualMech); if (result == SASL_INTERACT) { if (!sasl_interact()) { sasl_dispose(&m_saslConn); q->setError(LoginJob::UserDefinedError); return false; } } else { break; } } m_actualAuthMode = authModeFromCommand(actualMech); if (result != SASL_CONTINUE && result != SASL_OK) { const auto saslError = QString::fromUtf8(sasl_errdetail(m_saslConn)); qCWarning(KSMTP_LOG) << "sasl_client_start failed with:" << result << saslError; q->setError(LoginJob::UserDefinedError); q->setErrorText(saslError); sasl_dispose(&m_saslConn); return false; } if (outLen == 0) { q->sendCommand("AUTH " + authMode); } else { q->sendCommand("AUTH " + authMode + ' ' + QByteArray::fromRawData(out, outLen).toBase64()); } return true; } LoginJob::AuthMode LoginJobPrivate::authModeFromCommand(const QByteArray &mech) const { if (qstrnicmp(mech.constData(), "PLAIN", 5) == 0) { return LoginJob::Plain; } else if (qstrnicmp(mech.constData(), "LOGIN", 5) == 0) { return LoginJob::Login; } else if (qstrnicmp(mech.constData(), "CRAM-MD5", 8) == 0) { return LoginJob::CramMD5; } else if (qstrnicmp(mech.constData(), "DIGEST-MD5", 10) == 0) { return LoginJob::DigestMD5; } else if (qstrnicmp(mech.constData(), "GSSAPI", 6) == 0) { return LoginJob::GSSAPI; } else if (qstrnicmp(mech.constData(), "NTLM", 4) == 0) { return LoginJob::NTLM; } else if (qstrnicmp(mech.constData(), "ANONYMOUS", 9) == 0) { return LoginJob::Anonymous; } else if (qstrnicmp(mech.constData(), "XOAUTH2", 7) == 0) { return LoginJob::XOAuth2; } else { return LoginJob::UnknownAuth; } } QByteArray LoginJobPrivate::authCommand(LoginJob::AuthMode mode) const { switch (mode) { case LoginJob::Plain: return QByteArrayLiteral("PLAIN"); case LoginJob::Login: return QByteArrayLiteral("LOGIN"); case LoginJob::CramMD5: return QByteArrayLiteral("CRAM-MD5"); case LoginJob::DigestMD5: return QByteArrayLiteral("DIGEST-MD5"); case LoginJob::GSSAPI: return QByteArrayLiteral("GSSAPI"); case LoginJob::NTLM: return QByteArrayLiteral("NTLM"); case LoginJob::Anonymous: return QByteArrayLiteral("ANONYMOUS"); case LoginJob::XOAuth2: return QByteArrayLiteral("XOAUTH2"); case LoginJob::UnknownAuth: return ""; // Should not happen } return {}; } #include "moc_loginjob.cpp" 07070100000089000081A400000000000000000000000166FA912D0000040B000000000000000000000000000000000000003800000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/loginjob.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "ksmtp_export.h" #include "job.h" namespace KSmtp { class LoginJobPrivate; /** * @brief The LoginJob class */ class KSMTP_EXPORT LoginJob : public Job { Q_OBJECT Q_DECLARE_PRIVATE(LoginJob) public: enum AuthMode { UnknownAuth, Plain, Login, CramMD5, DigestMD5, NTLM, GSSAPI, Anonymous, XOAuth2 }; enum LoginError { TokenExpired = KJob::UserDefinedError + 1 }; explicit LoginJob(Session *session); ~LoginJob() override; void setUserName(const QString &userName); void setPassword(const QString &password); void setPreferedAuthMode(AuthMode mode); [[nodiscard]] AuthMode usedAuthMode() const; protected: void doStart() override; void handleResponse(const ServerResponse &r) override; }; } 0707010000008A000081A400000000000000000000000166FA912D000015A1000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sendjob.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "sendjob.h" #include "job_p.h" #include "ksmtp_debug.h" #include "serverresponse_p.h" #include <KLocalizedString> namespace KSmtp { class SendJobPrivate : public JobPrivate { public: enum Status { Idle, SendingReturnPath, SendingRecipients, SendingData }; SendJobPrivate(SendJob *job, Session *session, const QString &name) : JobPrivate(session, name) , q(job) { } SendJob *const q; void sendNextRecipient(); void addRecipients(const QStringList &rcpts); bool prepare(); using MessagePart = struct { QString contentType; QString name; QByteArray content; }; QString m_returnPath; QStringList m_recipients; QByteArray m_data; QStringList m_recipientsCopy; Status m_status = Idle; bool m_dsn = false; }; } using namespace KSmtp; SendJob::SendJob(Session *session) : Job(*new SendJobPrivate(this, session, i18n("SendJob"))) { } void SendJob::setFrom(const QString &from) { Q_D(SendJob); const auto start = from.indexOf(QLatin1Char('<')); if (start > -1) { const auto end = qMax(start, from.indexOf(QLatin1Char('>'), start)); d->m_returnPath = QStringLiteral("<%1>").arg(from.mid(start + 1, end - start - 1)); } else { d->m_returnPath = QStringLiteral("<%1>").arg(from); } } void SendJob::setTo(const QStringList &to) { Q_D(SendJob); d->addRecipients(to); } void SendJob::setCc(const QStringList &cc) { Q_D(SendJob); d->addRecipients(cc); } void SendJob::setBcc(const QStringList &bcc) { Q_D(SendJob); d->addRecipients(bcc); } void SendJob::setData(const QByteArray &data) { Q_D(SendJob); d->m_data = data; // A line with a single dot would make SMTP think "end of message", so use two dots in that case, // as per https://tools.ietf.org/html/rfc5321#section-4.5.2 d->m_data.replace("\r\n.", "\r\n.."); } void SendJob::doStart() { Q_D(SendJob); if (!d->prepare()) { setError(KJob::UserDefinedError); setErrorText(i18n("Could not send the message because either the sender or recipient field is missing or invalid")); emitResult(); return; } const int sizeLimit = session()->sizeLimit(); if (sizeLimit > 0 && size() > sizeLimit) { setError(KJob::UserDefinedError); setErrorText(i18n("Could not send the message because it exceeds the maximum allowed size of %1 bytes. (Message size: %2 bytes.)", sizeLimit, size())); emitResult(); return; } d->m_status = SendJobPrivate::SendingReturnPath; sendCommand("MAIL FROM:" + d->m_returnPath.toUtf8()); } void SendJob::handleResponse(const ServerResponse &r) { Q_D(SendJob); // Handle server errors handleErrors(r); switch (d->m_status) { case SendJobPrivate::Idle: // TODO: anything to do here? break; case SendJobPrivate::SendingReturnPath: // Expected response: server agreement if (r.isCode(25)) { d->m_status = SendJobPrivate::SendingRecipients; d->sendNextRecipient(); } break; case SendJobPrivate::SendingRecipients: // Expected response: server agreement if (r.isCode(25)) { if (d->m_recipientsCopy.isEmpty()) { sendCommand("DATA"); d->m_status = SendJobPrivate::SendingData; } else { d->sendNextRecipient(); } } break; case SendJobPrivate::SendingData: // Expected responses: // 354: Go ahead sending data if (r.isCode(354)) { sendCommand(d->m_data); sendCommand("\r\n."); } // 25x: Data received correctly if (r.isCode(25)) { emitResult(); } break; } } void SendJobPrivate::sendNextRecipient() { const bool dsnSupport = m_session->allowsDsn() ? m_dsn : false; // qDebug() << " void SendJobPrivate::sendNextRecipient()" << m_session->allowsDsn() << " dsnSupport " << dsnSupport; q->sendCommand("RCPT TO:<" + m_recipientsCopy.takeFirst().toUtf8() + '>' + (dsnSupport ? " NOTIFY=success,failure" : "")); } void SendJobPrivate::addRecipients(const QStringList &rcpts) { for (const auto &rcpt : rcpts) { if (rcpt.isEmpty()) { continue; } const int start = rcpt.indexOf(QLatin1Char('<')); if (start > -1) { const int end = qMax(start, rcpt.indexOf(QLatin1Char('>'), start)); m_recipients.push_back(rcpt.mid(start + 1, end - start - 1)); } else { m_recipients.push_back(rcpt); } } } bool SendJobPrivate::prepare() { if (m_data.isEmpty()) { qCWarning(KSMTP_LOG) << "A message has to be set before starting a SendJob"; return false; } m_recipientsCopy = m_recipients; if (m_recipients.isEmpty()) { qCWarning(KSMTP_LOG) << "Message has no recipients"; return false; } return true; } int SendJob::size() const { Q_D(const SendJob); return d->m_data.size(); } void SendJob::setDeliveryStatusNotification(bool enabled) { Q_D(SendJob); d->m_dsn = enabled; } #include "moc_sendjob.cpp" 0707010000008B000081A400000000000000000000000166FA912D00000503000000000000000000000000000000000000003700000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sendjob.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "ksmtp_export.h" #include "job.h" namespace KSmtp { class SendJobPrivate; /** * @brief The SendJob class */ class KSMTP_EXPORT SendJob : public Job { Q_OBJECT Q_DECLARE_PRIVATE(SendJob) public: explicit SendJob(Session *session); /** * Set the sender email address */ void setFrom(const QString &from); /** * Add recipients. * */ void setTo(const QStringList &to); /** * Add recipients. */ void setCc(const QStringList &cc); /** * Add recipients. */ void setBcc(const QStringList &bcc); /** * Set the actual message data. */ void setData(const QByteArray &data); /** * Returns size of the encoded message data. */ [[nodiscard]] int size() const; /** * Set Delivery Status Notification. */ void setDeliveryStatusNotification(bool b); protected: void doStart() override; void handleResponse(const ServerResponse &r) override; }; } 0707010000008C000081A400000000000000000000000166FA912D0000027A000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/serverresponse_p.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include <QByteArray> namespace KSmtp { class ServerResponse { public: explicit ServerResponse(int code = 0, const QByteArray &text = QByteArray(), bool multiline = false); [[nodiscard]] int code() const; [[nodiscard]] QByteArray text() const; [[nodiscard]] bool isCode(int other) const; [[nodiscard]] bool isMultiline() const; private: QByteArray m_text; int m_code; bool m_multiline; }; } 0707010000008D000081A400000000000000000000000166FA912D00002BAF000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/session.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "session.h" #include "job.h" #include "ksmtp_debug.h" #include "loginjob.h" #include "sendjob.h" #include "serverresponse_p.h" #include "session_p.h" #include "sessionthread_p.h" #include <QHostAddress> #include <QHostInfo> #include <QPointer> #include <QUrl> using namespace KSmtp; Q_DECLARE_METATYPE(QSsl::SslProtocol) Q_DECLARE_METATYPE(KSslErrorUiData) SessionPrivate::SessionPrivate(Session *session) : QObject(session) , q(session) { qRegisterMetaType<QSsl::SslProtocol>(); qRegisterMetaType<KSslErrorUiData>(); } SessionPrivate::~SessionPrivate() { m_thread->quit(); m_thread->wait(10000); delete m_thread; } void SessionPrivate::handleSslError(const KSslErrorUiData &data) { QPointer<SessionThread> _t = m_thread; const bool ignore = m_uiProxy && m_uiProxy->ignoreSslError(data); if (_t) { _t->handleSslErrorResponse(ignore); } } void SessionPrivate::setAuthenticationMethods(const QList<QByteArray> &authMethods) { for (const QByteArray &method : authMethods) { QString m = QString::fromLatin1(method); if (!m_authModes.contains(m)) { m_authModes.append(m); } } } void SessionPrivate::startHandshake() { QString hostname = m_customHostname; if (hostname.isEmpty()) { // FIXME: QHostInfo::fromName can get a FQDN, but does a DNS lookup hostname = QHostInfo::localHostName(); if (hostname.isEmpty()) { hostname = QStringLiteral("localhost.invalid"); } else if (!hostname.contains(QLatin1Char('.'))) { hostname += QStringLiteral(".localnet"); } } QByteArray cmd; if (!m_ehloRejected) { cmd = "EHLO "; } else { cmd = "HELO "; } setState(Session::Handshake); sendData(cmd + QUrl::toAce(hostname)); } Session::Session(const QString &hostName, quint16 port, QObject *parent) : QObject(parent) , d(new SessionPrivate(this)) { qRegisterMetaType<KSmtp::ServerResponse>("KSmtp::ServerResponse"); QHostAddress ip; QString saneHostName = hostName; if (ip.setAddress(hostName)) { // saneHostName = QStringLiteral("[%1]").arg(hostName); } d->m_thread = new SessionThread(saneHostName, port, this); d->m_thread->start(); connect(d->m_thread, &SessionThread::sslError, d, &SessionPrivate::handleSslError); } Session::~Session() = default; void Session::setUseNetworkProxy(bool useProxy) { d->m_thread->setUseNetworkProxy(useProxy); } void Session::setUiProxy(const SessionUiProxy::Ptr &uiProxy) { d->m_uiProxy = uiProxy; } SessionUiProxy::Ptr Session::uiProxy() const { return d->m_uiProxy; } QString Session::hostName() const { return d->m_thread->hostName(); } quint16 Session::port() const { return d->m_thread->port(); } Session::State Session::state() const { return d->m_state; } Session::EncryptionMode Session::encryptionMode() const { return d->m_encryptionMode; } void Session::setEncryptionMode(Session::EncryptionMode mode) { d->m_encryptionMode = mode; } bool Session::allowsTls() const { return d->m_allowsTls; } bool Session::allowsDsn() const { return d->m_allowsDsn; } QStringList Session::availableAuthModes() const { return d->m_authModes; } int Session::sizeLimit() const { return d->m_size; } void Session::setSocketTimeout(int ms) { bool timerActive = d->m_socketTimer.isActive(); if (timerActive) { d->stopSocketTimer(); } d->m_socketTimerInterval = ms; if (timerActive) { d->startSocketTimer(); } } int Session::socketTimeout() const { return d->m_socketTimerInterval; } void Session::setCustomHostname(const QString &hostname) { d->m_customHostname = hostname; } QString Session::customHostname() const { return d->m_customHostname; } void Session::open() { d->m_sslVersion = QSsl::UnknownProtocol; d->m_thread->setConnectWithTls(d->m_encryptionMode == Session::TLS); QTimer::singleShot(0, d->m_thread, &SessionThread::reconnect); d->startSocketTimer(); } void Session::quit() { if (d->m_state == Session::Disconnected) { return; } d->setState(Quitting); d->sendData("QUIT"); } void SessionPrivate::setState(Session::State s) { if (m_state == s) { return; } m_state = s; Q_EMIT q->stateChanged(m_state); } void SessionPrivate::sendData(const QByteArray &data) { QMetaObject::invokeMethod( m_thread, [this, data] { m_thread->sendData(data); }, Qt::QueuedConnection); } void SessionPrivate::responseReceived(const ServerResponse &r) { qCDebug(KSMTP_LOG) << "S:: [" << r.code() << "]" << (r.isMultiline() ? "-" : " ") << r.text(); if (m_state == Session::Quitting) { m_thread->closeSocket(); return; } if (m_state == Session::Handshake) { if (r.isCode(500) || r.isCode(502)) { if (!m_ehloRejected) { setState(Session::Ready); m_ehloRejected = true; } else { qCWarning(KSMTP_LOG) << "KSmtp::Session: Handshake failed with both EHLO and HELO"; q->quit(); return; } } else if (r.isCode(25)) { if (r.text().startsWith("SIZE ")) { // krazy:exclude=strings m_size = r.text().remove(0, QByteArray("SIZE ").size()).toInt(); } else if (r.text() == "STARTTLS") { m_allowsTls = true; } else if (r.text().startsWith("AUTH ")) { // krazy:exclude=strings setAuthenticationMethods(r.text().remove(0, QByteArray("AUTH ").size()).split(' ')); } else if (r.text() == "DSN") { m_allowsDsn = true; } if (!r.isMultiline()) { if (m_encryptionMode == Session::STARTTLS && m_sslVersion == QSsl::UnknownProtocol) { if (m_allowsTls) { m_starttlsSent = true; sendData(QByteArrayLiteral("STARTTLS")); } else { qCWarning(KSMTP_LOG) << "STARTTLS not supported by the server!"; q->quit(); } } else { setState(Session::NotAuthenticated); startNext(); } } } else if (r.isCode(220) && m_starttlsSent) { // STARTTLS accepted m_starttlsSent = false; startSsl(); } } if (m_state == Session::Ready) { if (r.isCode(22) || m_ehloRejected) { startHandshake(); return; } } if (m_currentJob) { m_currentJob->handleResponse(r); } } void SessionPrivate::socketConnected() { stopSocketTimer(); m_sslVersion = QSsl::UnknownProtocol; setState(Session::Ready); } void SessionPrivate::socketDisconnected() { qCDebug(KSMTP_LOG) << "Socket disconnected"; setState(Session::Disconnected); m_thread->closeSocket(); if (m_currentJob) { m_currentJob->connectionLost(); } else if (!m_queue.isEmpty()) { m_currentJob = m_queue.takeFirst(); m_currentJob->connectionLost(); } auto copy = m_queue; qDeleteAll(copy); m_queue.clear(); } void SessionPrivate::startSsl() { QMetaObject::invokeMethod(m_thread, &SessionThread::startSsl, Qt::QueuedConnection); } QSsl::SslProtocol SessionPrivate::negotiatedEncryption() const { return m_sslVersion; } void SessionPrivate::encryptionNegotiationResult(bool encrypted, QSsl::SslProtocol version) { if (encrypted) { // Get the updated auth methods startHandshake(); } m_sslVersion = version; } void SessionPrivate::addJob(Job *job) { m_queue.append(job); // Q_EMIT q->jobQueueSizeChanged( q->jobQueueSize() ); connect(job, &KJob::result, this, &SessionPrivate::jobDone); connect(job, &KJob::destroyed, this, &SessionPrivate::jobDestroyed); if (m_state >= Session::NotAuthenticated) { startNext(); } else { m_thread->reconnect(); } } void SessionPrivate::startNext() { QTimer::singleShot(0, this, [this]() { doStartNext(); }); } void SessionPrivate::doStartNext() { if (m_queue.isEmpty() || m_jobRunning || m_state == Session::Disconnected) { return; } startSocketTimer(); m_jobRunning = true; m_currentJob = m_queue.dequeue(); m_currentJob->doStart(); // sending can take a while depending on bandwidth - don't fail with timeout // if it takes longer if (qobject_cast<const KSmtp::SendJob *>(m_currentJob)) { stopSocketTimer(); } } void SessionPrivate::jobDone(KJob *job) { Q_UNUSED(job) Q_ASSERT(job == m_currentJob); // If we're in disconnected state it's because we ended up // here because the inactivity timer triggered, so no need to // stop it (it is single shot) if (m_state != Session::Disconnected) { if (!qobject_cast<const KSmtp::SendJob *>(m_currentJob)) { stopSocketTimer(); } } m_jobRunning = false; m_currentJob = nullptr; // Q_EMIT q->jobQueueSizeChanged( q->jobQueueSize() ); startNext(); } void SessionPrivate::jobDestroyed(QObject *job) { m_queue.removeAll(static_cast<Job *>(job)); if (m_currentJob == job) { m_currentJob = nullptr; } } void SessionPrivate::startSocketTimer() { if (m_socketTimerInterval < 0) { return; } Q_ASSERT(!m_socketTimer.isActive()); connect(&m_socketTimer, &QTimer::timeout, this, &SessionPrivate::onSocketTimeout); m_socketTimer.setSingleShot(true); m_socketTimer.start(m_socketTimerInterval); } void SessionPrivate::stopSocketTimer() { if (m_socketTimerInterval < 0) { return; } Q_ASSERT(m_socketTimer.isActive()); m_socketTimer.stop(); disconnect(&m_socketTimer, &QTimer::timeout, this, &SessionPrivate::onSocketTimeout); } void SessionPrivate::onSocketTimeout() { socketDisconnected(); } ServerResponse::ServerResponse(int code, const QByteArray &text, bool multiline) : m_text(text) , m_code(code) , m_multiline(multiline) { } bool ServerResponse::isMultiline() const { return m_multiline; } int ServerResponse::code() const { return m_code; } QByteArray ServerResponse::text() const { return m_text; } bool ServerResponse::isCode(int other) const { int otherCpy = other; int codeLength = 0; if (other == 0) { codeLength = 1; } else { while (otherCpy > 0) { otherCpy /= 10; codeLength++; } } int div = 1; for (int i = 0; i < 3 - codeLength; i++) { div *= 10; } return m_code / div == other; } #include "moc_session_p.cpp" #include "moc_session.cpp" 0707010000008E000081A400000000000000000000000166FA912D00001242000000000000000000000000000000000000003700000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/session.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "ksmtp_export.h" #include "sessionuiproxy.h" #include <QObject> namespace KSmtp { class SessionPrivate; class SessionThread; /** * @brief The Session class */ class KSMTP_EXPORT Session : public QObject { Q_OBJECT public: enum State { Disconnected = 0, /**< The Session is not connected to the server. */ Ready, /**< (internal) */ Handshake, /**< (internal) */ NotAuthenticated, /**< The Session is ready for login. @sa KSmtp::LoginJob */ Authenticated, /**< The Session is ready to send email. @sa KSmtp::SendJob */ Quitting /**< (internal) */ }; Q_ENUM(State) /** Transport encryption for a session. */ enum EncryptionMode { Unencrypted, ///< Use no encryption. TLS, ///< Use TLS encryption on the socket. STARTTLS ///< Use STARTTLS to upgrade an unencrypted connection to encrypted after the initial handshake. }; Q_ENUM(EncryptionMode) /** Creates a new SMTP session to the specified host and port. After creating the session, call setUseNetworkProxy() if necessary and then either open() to open the connection. @sa open() */ explicit Session(const QString &hostName, quint16 port, QObject *parent = nullptr); ~Session() override; void setUiProxy(const SessionUiProxy::Ptr &uiProxy); [[nodiscard]] SessionUiProxy::Ptr uiProxy() const; /** Sets whether the SMTP network connection should use the system proxy settings The default is to not use the proxy. */ void setUseNetworkProxy(bool useProxy); /** Returns the host name that has been provided in the Session's constructor @sa port() */ [[nodiscard]] QString hostName() const; /** Returns the port number that has been provided in the Session's constructor @sa hostName() */ [[nodiscard]] quint16 port() const; [[nodiscard]] State state() const; /** Returns the requested encryption mode for this session. */ [[nodiscard]] EncryptionMode encryptionMode() const; /** Sets the encryption mode for this session. * Has to be called before @c open(). */ void setEncryptionMode(EncryptionMode mode); /** Returns true if the SMTP server has indicated that it allows TLS connections, false otherwise. The session must be at least in the NotAuthenticated state. Before that, allowsTls() always returns false. @sa KSmtp::LoginJob::setUseTls() */ [[nodiscard]] bool allowsTls() const; /** Returns true if the SMTP server has indicated that it allows Delivery Status Notification (DSN) support, false otherwise. */ [[nodiscard]] bool allowsDsn() const; /** @todo: return parsed auth modes, instead of strings. */ [[nodiscard]] QStringList availableAuthModes() const; /** Returns the maximum message size in bytes that the server accepts. You can use SendJob::size() to get the size of the message that you are trying to send @sa KSmtp::SendJob::size() */ [[nodiscard]] int sizeLimit() const; [[nodiscard]] int socketTimeout() const; void setSocketTimeout(int ms); /** * Custom hostname to send in EHLO/HELO command */ void setCustomHostname(const QString &hostname); [[nodiscard]] QString customHostname() const; /** Opens the connection to the server. You should connect to stateChanged() before calling this method, and wait until the session's state is NotAuthenticated (Session is ready for a LoginJob) or Disconnected (connecting to the server failed) Make sure to call @c setEncryptionMode() before. @see setEncryptionMode */ void open(); /** Requests the server to quit the connection. This sends a "QUIT" command to the server and will not close the connection until it receives a response. That means you should not delete this object right after calling close, instead wait for stateChanged() to change to Disconnected. See RFC 821, Chapter 4.1.1, "QUIT". */ void quit(); Q_SIGNALS: void stateChanged(KSmtp::Session::State state); void connectionError(const QString &error); private: friend class SessionPrivate; friend class SessionThread; friend class JobPrivate; SessionPrivate *const d; }; } 0707010000008F000081A400000000000000000000000166FA912D0000082F000000000000000000000000000000000000003900000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/session_p.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "session.h" #include <QObject> #include <QQueue> #include <QStringList> #include <QTimer> #include <QSslSocket> class KJob; namespace KSmtp { class Job; class SessionThread; class ServerResponse; class KSMTP_EXPORT SessionPrivate : public QObject { Q_OBJECT friend class Session; public: explicit SessionPrivate(Session *session); ~SessionPrivate() override; void addJob(Job *job); void sendData(const QByteArray &data); void setState(Session::State s); void startSsl(); [[nodiscard]] QSsl::SslProtocol negotiatedEncryption() const; public Q_SLOTS: void handleSslError(const KSslErrorUiData &data); void socketDisconnected(); void encryptionNegotiationResult(bool encrypted, QSsl::SslProtocol version); void responseReceived(const KSmtp::ServerResponse &response); void socketConnected(); void setAuthenticationMethods(const QList<QByteArray> &authMethods); private Q_SLOTS: void doStartNext(); void jobDone(KJob *job); void jobDestroyed(QObject *job); void onSocketTimeout(); private: void startHandshake(); void startNext(); void startSocketTimer(); void stopSocketTimer(); Session *const q; // Smtp session Session::State m_state = Session::Disconnected; Session::EncryptionMode m_encryptionMode = Session::Unencrypted; SessionThread *m_thread = nullptr; SessionUiProxy::Ptr m_uiProxy; int m_socketTimerInterval = 60000; QTimer m_socketTimer; QSsl::SslProtocol m_sslVersion = QSsl::UnknownProtocol; // Jobs bool m_jobRunning = false; Job *m_currentJob = nullptr; QQueue<Job *> m_queue; // Smtp info bool m_ehloRejected = false; int m_size = 0; bool m_allowsTls = false; bool m_starttlsSent = false; bool m_allowsDsn = false; QStringList m_authModes; QString m_customHostname; }; } 07070100000090000081A400000000000000000000000166FA912D00001D86000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sessionthread.cpp/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #include "ksmtp_debug.h" #include "serverresponse_p.h" #include "session.h" #include "session_p.h" #include "sessionthread_p.h" #include <QCoreApplication> #include <QFile> #include <QNetworkProxy> #include <QSslCipher> #include <QTimer> #include <memory> using namespace KSmtp; SessionThread::SessionThread(const QString &hostName, quint16 port, Session *session) : QThread() , m_parentSession(session) , m_hostName(hostName) , m_port(port) { moveToThread(this); const auto logfile = qgetenv("KSMTP_SESSION_LOG"); if (!logfile.isEmpty()) { static uint sSessionCount = 0; const QString filename = QStringLiteral("%1.%2.%3").arg(QString::fromUtf8(logfile)).arg(qApp->applicationPid()).arg(++sSessionCount); m_logFile = std::make_unique<QFile>(filename); if (!m_logFile->open(QIODevice::WriteOnly | QIODevice::Truncate)) { qCWarning(KSMTP_LOG) << "Failed to open log file" << filename << ":" << m_logFile->errorString(); m_logFile.reset(); } } } SessionThread::~SessionThread() = default; QString SessionThread::hostName() const { return m_hostName; } quint16 SessionThread::port() const { return m_port; } void SessionThread::sendData(const QByteArray &payload) { QMutexLocker locker(&m_mutex); // qCDebug(KSMTP_LOG) << "C:: " << payload; if (m_logFile) { m_logFile->write("C: " + payload + '\n'); m_logFile->flush(); } m_dataQueue.enqueue(payload + "\r\n"); QTimer::singleShot(0, this, &SessionThread::writeDataQueue); } void SessionThread::writeDataQueue() { QMutexLocker locker(&m_mutex); while (!m_dataQueue.isEmpty()) { m_socket->write(m_dataQueue.dequeue()); } } void SessionThread::readResponse() { QMutexLocker locker(&m_mutex); if (!m_socket->bytesAvailable()) { return; } const QByteArray data = m_socket->readLine(); // qCDebug(KSMTP_LOG) << "S:" << data; if (m_logFile) { m_logFile->write("S: " + data); m_logFile->flush(); } const ServerResponse response = parseResponse(data); Q_EMIT responseReceived(response); if (m_socket->bytesAvailable()) { QTimer::singleShot(0, this, &SessionThread::readResponse); } } void SessionThread::closeSocket() { QTimer::singleShot(0, this, &SessionThread::doCloseSocket); } void SessionThread::doCloseSocket() { m_socket->close(); } void SessionThread::reconnect() { QMutexLocker locker(&m_mutex); if (m_socket->state() != QAbstractSocket::ConnectedState && m_socket->state() != QAbstractSocket::ConnectingState) { if (!m_useProxy) { qCDebug(KSMTP_LOG) << "Not using any proxy to connect to the SMTP server."; QNetworkProxy proxy; proxy.setType(QNetworkProxy::NoProxy); m_socket->setProxy(proxy); } else { qCDebug(KSMTP_LOG) << "Using the default system proxy to connect to the SMTP server."; } if (m_useTls) { m_socket->connectToHostEncrypted(hostName(), port()); } else { m_socket->connectToHost(hostName(), port()); } } } void SessionThread::run() { m_socket = std::make_unique<QSslSocket>(); connect(m_socket.get(), &QSslSocket::readyRead, this, &SessionThread::readResponse, Qt::QueuedConnection); connect(m_socket.get(), &QSslSocket::encrypted, this, &SessionThread::sslConnected); connect(m_socket.get(), &QSslSocket::disconnected, m_parentSession->d, &SessionPrivate::socketDisconnected); connect(m_socket.get(), &QSslSocket::connected, m_parentSession->d, &SessionPrivate::socketConnected); connect(m_socket.get(), &QAbstractSocket::errorOccurred, this, [this](QAbstractSocket::SocketError err) { qCWarning(KSMTP_LOG) << "SMTP Socket error:" << err << m_socket->errorString(); Q_EMIT m_parentSession->connectionError(m_socket->errorString()); }); connect(this, &SessionThread::encryptionNegotiationResult, m_parentSession->d, &SessionPrivate::encryptionNegotiationResult); connect(this, &SessionThread::responseReceived, m_parentSession->d, &SessionPrivate::responseReceived); exec(); m_socket.reset(); } void SessionThread::setUseNetworkProxy(bool useProxy) { m_useProxy = useProxy; } void SessionThread::setConnectWithTls(bool useTls) { QMutexLocker locker(&m_mutex); m_useTls = useTls; } ServerResponse SessionThread::parseResponse(const QByteArray &resp) { QByteArray response(resp); // Remove useless CRLF const int indexOfCR = response.indexOf("\r"); const int indexOfLF = response.indexOf("\n"); if (indexOfCR > 0) { response.truncate(indexOfCR); } if (indexOfLF > 0) { response.truncate(indexOfLF); } // Server response code const QByteArray code = response.left(3); bool ok = false; const int returnCode = code.toInt(&ok); if (!ok) { return ServerResponse(); } // RFC821, Appendix E const bool multiline = (response.at(3) == '-'); if (returnCode) { response.remove(0, 4); // Keep the text part } return ServerResponse(returnCode, response, multiline); } void SessionThread::startSsl() { QMutexLocker locker(&m_mutex); m_socket->ignoreSslErrors(); // don't worry, we DO handle the errors ourselves below m_socket->startClientEncryption(); } void SessionThread::sslConnected() { QMutexLocker locker(&m_mutex); QSslCipher cipher = m_socket->sessionCipher(); if (!m_socket->sslHandshakeErrors().isEmpty() || !m_socket->isEncrypted() || cipher.isNull() || cipher.usedBits() == 0) { qCDebug(KSMTP_LOG) << "Initial SSL handshake failed. cipher.isNull() is" << cipher.isNull() << ", cipher.usedBits() is" << cipher.usedBits() << ", the socket says:" << m_socket->errorString() << "and the list of SSL errors contains" << m_socket->sslHandshakeErrors().count() << "items."; KSslErrorUiData errorData(m_socket.get()); Q_EMIT sslError(errorData); } else { qCDebug(KSMTP_LOG) << "TLS negotiation done, the negotiated protocol is" << m_socket->sessionCipher().protocolString(); Q_EMIT encryptionNegotiationResult(true, m_socket->sessionProtocol()); } } void SessionThread::handleSslErrorResponse(bool ignoreError) { QMetaObject::invokeMethod( this, [this, ignoreError] { doHandleSslErrorResponse(ignoreError); }, Qt::QueuedConnection); } void SessionThread::doHandleSslErrorResponse(bool ignoreError) { Q_ASSERT(QThread::currentThread() == thread()); if (!m_socket) { return; } if (ignoreError) { Q_EMIT encryptionNegotiationResult(true, m_socket->sessionProtocol()); } else { const auto sslErrors = m_socket->sslHandshakeErrors(); QStringList errorMsgs; errorMsgs.reserve(sslErrors.size()); std::transform(sslErrors.begin(), sslErrors.end(), std::back_inserter(errorMsgs), std::mem_fn(&QSslError::errorString)); Q_EMIT m_parentSession->connectionError(errorMsgs.join(QLatin1Char('\n'))); m_socket->disconnectFromHost(); } } #include "moc_sessionthread_p.cpp" 07070100000091000081A400000000000000000000000166FA912D000006DE000000000000000000000000000000000000003F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sessionthread_p.h/* SPDX-FileCopyrightText: 2010 BetterInbox <contact@betterinbox.com> SPDX-FileContributor: Christophe Laveault <christophe@betterinbox.com> SPDX-FileContributor: Gregory Schlomoff <gregory.schlomoff@gmail.com> SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include <QMutex> #include <QQueue> #include <QSslSocket> #include <QThread> #include <ksslerroruidata.h> class QFile; namespace KSmtp { class ServerResponse; class Session; class SessionThread : public QThread { Q_OBJECT public: explicit SessionThread(const QString &hostName, quint16 port, Session *session); ~SessionThread() override; [[nodiscard]] QString hostName() const; [[nodiscard]] quint16 port() const; void setUseNetworkProxy(bool useProxy); void setConnectWithTls(bool useTls); void handleSslErrorResponse(bool ignoreError); public Q_SLOTS: void reconnect(); void closeSocket(); void startSsl(); void sendData(const QByteArray &payload); Q_SIGNALS: void encryptionNegotiationResult(bool encrypted, QSsl::SslProtocol protocol); void responseReceived(const KSmtp::ServerResponse &response); void sslError(const KSslErrorUiData &); protected: void run() override; private Q_SLOTS: void sslConnected(); void writeDataQueue(); void readResponse(); void doCloseSocket(); void doHandleSslErrorResponse(bool ignoreError); private: ServerResponse parseResponse(const QByteArray &response); std::unique_ptr<QSslSocket> m_socket; QMutex m_mutex; QQueue<QByteArray> m_dataQueue; std::unique_ptr<QFile> m_logFile; Session *m_parentSession = nullptr; QString m_hostName; quint16 m_port; bool m_useProxy = false; bool m_useTls = false; }; } 07070100000092000081A400000000000000000000000166FA912D000000C9000000000000000000000000000000000000004000000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sessionuiproxy.cpp/* SPDX-FileCopyrightText: 2009 Andras Mantia <amantia@kde.org> SPDX-License-Identifier: LGPL-2.0-or-later */ #include "sessionuiproxy.h" KSmtp::SessionUiProxy::~SessionUiProxy() = default; 07070100000093000081A400000000000000000000000166FA912D000004F9000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/src/sessionuiproxy.h/* SPDX-FileCopyrightText: 2009 Andras Mantia <amantia@kde.org> SPDX-License-Identifier: LGPL-2.0-or-later */ #pragma once #include "ksmtp_export.h" #include "job.h" #include <QSharedPointer> class KSslErrorUiData; namespace KSmtp { /** @short Interface to display communication errors and wait for user feedback. */ class KSMTP_EXPORT SessionUiProxy { public: using Ptr = QSharedPointer<SessionUiProxy>; virtual ~SessionUiProxy(); /** * Show an SSL error and ask the user whether it should be ignored or not. * The recommended KDE UI is the following: * @code * #include <kio/ksslui.h> * class UiProxy: public SessionUiProxy { * public: * bool ignoreSslError(const KSslErrorUiData& errorData) { * if (KIO::SslUi::askIgnoreSslErrors(errorData)) { * return true; * } else { * return false; * } * } * }; * [...] * Session session(server, port); * UiProxy *proxy = new UiProxy(); * session.setUiProxy(proxy); * @endcode * @param errorData contains details about the error. * @return true if the error can be ignored */ virtual bool ignoreSslError(const KSslErrorUiData &errorData) = 0; }; } 07070100000094000041ED00000000000000000000000266FA912D00000000000000000000000000000000000000000000002F00000000ksmtp-VERSIONgit.20240930T135317~29e0375/tests07070100000095000081A400000000000000000000000166FA912D000000B3000000000000000000000000000000000000003E00000000ksmtp-VERSIONgit.20240930T135317~29e0375/tests/CMakeLists.txt# SPDX-FileCopyrightText: none # SPDX-License-Identifier: BSD-3-Clause add_executable(logintest logintest.cpp) target_link_libraries(logintest KPim6SMTP Qt::Core KF6::KIOWidgets) 07070100000096000081A400000000000000000000000166FA912D00000F5D000000000000000000000000000000000000003D00000000ksmtp-VERSIONgit.20240930T135317~29e0375/tests/logintest.cpp/* * SPDX-FileCopyrightText: 2017 Daniel Vrátil <dvratil@kde.org> * * SPDX-License-Identifier: LGPL-2.1-or-later * */ #include "loginjob.h" #include "session.h" #include "sessionuiproxy.h" #include <QApplication> #include <QCommandLineOption> #include <QCommandLineParser> #include <KIO/SslUi> #include <iostream> class SessionUiProxy : public KSmtp::SessionUiProxy { public: bool ignoreSslError(const KSslErrorUiData &errorData) override { return KIO::SslUi::askIgnoreSslErrors(errorData); } }; void login(KSmtp::Session *session, const QString &user, const QString &pass) { auto login = new KSmtp::LoginJob(session); login->setUserName(user); login->setPassword(pass); QObject::connect(login, &KJob::result, login, [](KJob *job) { if (job->error()) { std::cout << "Login error: " << job->errorString().toStdString() << std::endl; qApp->quit(); } else { std::cout << "Login job finished" << std::endl; } }); login->start(); std::cout << "Login job started" << std::endl; } int main(int argc, char **argv) { QApplication app(argc, argv); QCommandLineParser parser; QCommandLineOption hostOption(QStringLiteral("host"), QString(), QStringLiteral("hostname")); QCommandLineOption portOption(QStringLiteral("port"), QString(), QStringLiteral("port")); QCommandLineOption userOption(QStringLiteral("user"), QString(), QStringLiteral("username")); QCommandLineOption passOption(QStringLiteral("pass"), QString(), QStringLiteral("password")); QCommandLineOption sslTlsOption(QStringLiteral("sslTls")); QCommandLineOption startTlsOption(QStringLiteral("starttls")); parser.addOption(hostOption); parser.addOption(portOption); parser.addOption(userOption); parser.addOption(passOption); parser.addOption(sslTlsOption); parser.addOption(startTlsOption); parser.addHelpOption(); parser.process(app); if (!parser.isSet(hostOption) || !parser.isSet(portOption) || !parser.isSet(userOption) || !parser.isSet(passOption)) { parser.showHelp(1); return 1; } KSmtp::Session session(parser.value(hostOption), parser.value(portOption).toUInt()); session.setUiProxy(SessionUiProxy::Ptr(new SessionUiProxy)); if (parser.isSet(sslTlsOption)) { session.setEncryptionMode(KSmtp::Session::TLS); } else if (parser.isSet(startTlsOption)) { session.setEncryptionMode(KSmtp::Session::STARTTLS); } QObject::connect(&session, &KSmtp::Session::stateChanged, &session, [&](KSmtp::Session::State state) { switch (state) { case KSmtp::Session::Disconnected: std::cout << "Session in Disconnected state" << std::endl; break; case KSmtp::Session::Handshake: std::cout << "Session in Handshake state" << std::endl; break; case KSmtp::Session::Ready: std::cout << "Session in Ready state" << std::endl; std::cout << std::endl; login(&session, parser.value(userOption), parser.value(passOption)); break; case KSmtp::Session::Quitting: // Internal (avoid compile warning) break; case KSmtp::Session::NotAuthenticated: { std::cout << "Session in NotAuthenticated state" << std::endl; std::cout << "Available auth modes: "; const auto modes = session.availableAuthModes(); for (const QString &mode : modes) { std::cout << mode.toStdString() << " "; } std::cout << std::endl; } break; case KSmtp::Session::Authenticated: std::cout << "Session entered Authenticated state, we are done" << std::endl; app.quit(); } }); std::cout << "Opening session ..." << std::endl; session.open(); return app.exec(); } 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!610 blocks
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor