Changeset 3193246
- Timestamp:
- 11/20/2024 02:26:33 PM (17 months ago)
- Location:
- mailniaga-smtp
- Files:
-
- 309 added
- 7 edited
-
tags/2.1.0 (added)
-
tags/2.1.0/composer.json (added)
-
tags/2.1.0/composer.lock (added)
-
tags/2.1.0/includes (added)
-
tags/2.1.0/includes/load.php (added)
-
tags/2.1.0/includes/src (added)
-
tags/2.1.0/includes/src/MailniagaActionSchedulerCleaner.php (added)
-
tags/2.1.0/includes/src/MailniagaCheckBalance.php (added)
-
tags/2.1.0/includes/src/MailniagaConnector.php (added)
-
tags/2.1.0/includes/src/MailniagaDatabaseManager.php (added)
-
tags/2.1.0/includes/src/MailniagaEmailLog.php (added)
-
tags/2.1.0/includes/src/MailniagaEmailLogCleaner.php (added)
-
tags/2.1.0/includes/src/MailniagaEmailSender.php (added)
-
tags/2.1.0/includes/src/MailniagaFailedDeliveriesLog.php (added)
-
tags/2.1.0/includes/src/MailniagaSettings.php (added)
-
tags/2.1.0/includes/src/MailniagaUnsubscribeFunnelKit.php (added)
-
tags/2.1.0/includes/src/WebhookHandler.php (added)
-
tags/2.1.0/includes/src/assets (added)
-
tags/2.1.0/includes/src/assets/css (added)
-
tags/2.1.0/includes/src/assets/css/email-log.css (added)
-
tags/2.1.0/includes/src/assets/css/settings-page.css (added)
-
tags/2.1.0/includes/src/assets/js (added)
-
tags/2.1.0/includes/src/assets/js/email-log.js (added)
-
tags/2.1.0/includes/src/assets/js/settings-page.js (added)
-
tags/2.1.0/includes/vendor (added)
-
tags/2.1.0/includes/vendor/autoload.php (added)
-
tags/2.1.0/includes/vendor/composer (added)
-
tags/2.1.0/includes/vendor/composer/ClassLoader.php (added)
-
tags/2.1.0/includes/vendor/composer/InstalledVersions.php (added)
-
tags/2.1.0/includes/vendor/composer/LICENSE (added)
-
tags/2.1.0/includes/vendor/composer/autoload_classmap.php (added)
-
tags/2.1.0/includes/vendor/composer/autoload_files.php (added)
-
tags/2.1.0/includes/vendor/composer/autoload_namespaces.php (added)
-
tags/2.1.0/includes/vendor/composer/autoload_psr4.php (added)
-
tags/2.1.0/includes/vendor/composer/autoload_real.php (added)
-
tags/2.1.0/includes/vendor/composer/autoload_static.php (added)
-
tags/2.1.0/includes/vendor/composer/installed.json (added)
-
tags/2.1.0/includes/vendor/composer/installed.php (added)
-
tags/2.1.0/includes/vendor/composer/platform_check.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/LICENSE (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/README.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/UPGRADING.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/composer.json (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/BodySummarizer.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Client.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/ClientInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/ClientTrait.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/HandlerStack.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/MessageFormatter.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Middleware.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Pool.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/RequestOptions.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/TransferStats.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/Utils.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/functions.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/guzzle/src/functions_include.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/LICENSE (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/README.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/composer.json (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/AggregateException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/CancellationException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Coroutine.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Create.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Each.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/EachPromise.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/FulfilledPromise.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Is.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Promise.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/PromiseInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/PromisorInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/RejectedPromise.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/RejectionException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/TaskQueue.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/TaskQueueInterface.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/promises/src/Utils.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7 (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/LICENSE (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/README.md (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/composer.json (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/AppendStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/BufferStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/CachingStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/DroppingStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Exception (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/FnStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Header.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/HttpFactory.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/InflateStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/LazyOpenStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/LimitStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Message.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/MessageTrait.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/MimeType.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/MultipartStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/NoSeekStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/PumpStream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Query.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Request.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Response.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Rfc7230.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/ServerRequest.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Stream.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/StreamWrapper.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/UploadedFile.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Uri.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/UriComparator.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/UriNormalizer.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/UriResolver.php (added)
-
tags/2.1.0/includes/vendor/guzzlehttp/psr7/src/Utils.php (added)
-
tags/2.1.0/includes/vendor/psr (added)
-
tags/2.1.0/includes/vendor/psr/http-client (added)
-
tags/2.1.0/includes/vendor/psr/http-client/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/psr/http-client/LICENSE (added)
-
tags/2.1.0/includes/vendor/psr/http-client/README.md (added)
-
tags/2.1.0/includes/vendor/psr/http-client/composer.json (added)
-
tags/2.1.0/includes/vendor/psr/http-client/src (added)
-
tags/2.1.0/includes/vendor/psr/http-client/src/ClientExceptionInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-client/src/ClientInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-client/src/NetworkExceptionInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-client/src/RequestExceptionInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/LICENSE (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/README.md (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/composer.json (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/RequestFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/ResponseFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/StreamFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-factory/src/UriFactoryInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message (added)
-
tags/2.1.0/includes/vendor/psr/http-message/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/psr/http-message/LICENSE (added)
-
tags/2.1.0/includes/vendor/psr/http-message/README.md (added)
-
tags/2.1.0/includes/vendor/psr/http-message/composer.json (added)
-
tags/2.1.0/includes/vendor/psr/http-message/docs (added)
-
tags/2.1.0/includes/vendor/psr/http-message/docs/PSR7-Interfaces.md (added)
-
tags/2.1.0/includes/vendor/psr/http-message/docs/PSR7-Usage.md (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/MessageInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/RequestInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/ResponseInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/ServerRequestInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/StreamInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/UploadedFileInterface.php (added)
-
tags/2.1.0/includes/vendor/psr/http-message/src/UriInterface.php (added)
-
tags/2.1.0/includes/vendor/ralouphie (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders/LICENSE (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders/README.md (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders/composer.json (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders/src (added)
-
tags/2.1.0/includes/vendor/ralouphie/getallheaders/src/getallheaders.php (added)
-
tags/2.1.0/includes/vendor/symfony (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts/CHANGELOG.md (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts/LICENSE (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts/README.md (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts/composer.json (added)
-
tags/2.1.0/includes/vendor/symfony/deprecation-contracts/function.php (added)
-
tags/2.1.0/includes/vendor/woocommerce (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/README.md (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/action-scheduler.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/changelog.txt (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionClaim.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ActionFactory.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_AdminView.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_AsyncRequest_QueueRunner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Compatibility.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_DataController.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_DateTime.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Exception.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_FatalErrorMonitor.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_InvalidActionException.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_ListTable.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_LogEntry.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_NullLogEntry.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_OptionLock.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueCleaner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_QueueRunner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_Versions.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_WPCommentCleaner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/ActionScheduler_wcSystemStatus.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Clean_Command.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_QueueRunner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI/Migration_Command.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/WP_CLI/ProgressBar.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Lock.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Logger.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_TimezoneHelper.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/actions (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_Action.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_CanceledAction.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_FinishedAction.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/actions/ActionScheduler_NullAction.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpCommentLogger.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostStatusRegistrar.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostTypeRegistrar.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_TaxonomyRegistrar.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/ActionMigrator.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/BatchFetcher.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/Config.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/Controller.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/DryRun_ActionMigrator.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/DryRun_LogMigrator.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/LogMigrator.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/Runner.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/migration/Scheduler.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CanceledSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CronSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_NullSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_Schedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_SimpleSchedule.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schema (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_LoggerSchema.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Abstract_QueueRunner_Deprecated.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_AdminView_Deprecated.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Schedule_Deprecated.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated/ActionScheduler_Store_Deprecated.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/deprecated/functions.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/functions.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/WP_Async_Request.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_AbstractField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_DayOfMonthField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_DayOfWeekField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_FieldFactory.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_FieldInterface.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_HoursField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_MinutesField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_MonthField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/CronExpression_YearField.php (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/LICENSE (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/lib/cron-expression/README.md (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/license.txt (added)
-
tags/2.1.0/includes/vendor/woocommerce/action-scheduler/readme.txt (added)
-
tags/2.1.0/mailniaga-smtp.php (added)
-
tags/2.1.0/readme.txt (added)
-
trunk/composer.json (added)
-
trunk/composer.lock (added)
-
trunk/includes/src/MailniagaActionSchedulerCleaner.php (added)
-
trunk/includes/src/MailniagaConnector.php (modified) (3 diffs)
-
trunk/includes/src/MailniagaEmailLog.php (modified) (2 diffs)
-
trunk/includes/src/MailniagaEmailSender.php (modified) (10 diffs)
-
trunk/includes/src/assets/css/settings-page.css (modified) (1 diff)
-
trunk/includes/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/mailniaga-smtp.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mailniaga-smtp/trunk/includes/src/MailniagaConnector.php
r3170128 r3193246 13 13 private MailniagaEmailLogCleaner $email_log_cleaner; 14 14 private MailniagaCheckBalance $check_balance; 15 private MailniagaActionSchedulerCleaner $action_scheduler_cleaner; 15 16 16 17 … … 25 26 $this->email_log_cleaner = new MailniagaEmailLogCleaner(); 26 27 $this->check_balance = new MailniagaCheckBalance($this->settings); 28 $this->action_scheduler_cleaner = new MailniagaActionSchedulerCleaner(); 27 29 } 28 30 … … 44 46 $this->email_log_cleaner->register(); 45 47 $this->check_balance->register(); 48 $this->action_scheduler_cleaner->register(); 46 49 47 50 add_action('admin_post_mailniaga_send_test_email', [$this, 'handle_test_email']); -
mailniaga-smtp/trunk/includes/src/MailniagaEmailLog.php
r3170128 r3193246 143 143 <th><?php _e('Subject', 'mailniaga-smtp'); ?></th> 144 144 <th><?php _e('Status', 'mailniaga-smtp'); ?></th> 145 <th><?php _e('Created At', 'mailniaga-smtp'); ?></th> 145 <th><?php _e('Created', 'mailniaga-smtp'); ?></th> 146 <th><?php _e('Updated', 'mailniaga-smtp'); ?></th> 146 147 <th><?php _e('Actions', 'mailniaga-smtp'); ?></th> 147 148 </tr> … … 168 169 <td><?php echo esc_html($email->status); ?></td> 169 170 <td><?php echo esc_html($email->created_at); ?></td> 171 <td><?php echo esc_html($email->updated_at); ?></td> 170 172 <td> 171 173 <a href="#" class="view-details" data-id="<?php echo esc_attr($email->id); ?>"><?php _e('View Details', 'mailniaga-smtp'); ?></a> -
mailniaga-smtp/trunk/includes/src/MailniagaEmailSender.php
r3170128 r3193246 1 1 <?php 2 3 2 namespace Webimpian\MailniagaWPConnector; 4 3 5 4 use GuzzleHttp\Client; 6 use GuzzleHttp\Exception\GuzzleException; 5 use GuzzleHttp\Pool; 6 use GuzzleHttp\Psr7\Request; 7 use GuzzleHttp\Promise; 7 8 8 9 class MailniagaEmailSender { 9 10 private $settings; 10 11 private $client; 12 private $concurrency = 200; 13 private $batch_size = 1000; 11 14 12 15 public function __construct($settings) { … … 14 17 $this->client = new Client([ 15 18 'base_uri' => 'https://api.mailniaga.mx/api/v0/', 16 'timeout' => 99999999999999999, // Reduced timeout for individual requests19 'timeout' => 30, 17 20 ]); 18 21 } … … 20 23 public function register() { 21 24 add_filter('pre_wp_mail', [$this, 'queue_mail'], 10, 2); 22 add_action('init', [$this, 'schedule_queue_processing']); 23 add_action('process_mailniaga_email_queue', [$this, 'process_email_queue']); 25 add_action('init', [$this, 'schedule_actions']); 26 add_action('mailniaga_process_queue', [$this, 'process_email_queue']); 27 add_action('mailniaga_retry_failed', [$this, 'retry_failed_emails']); 28 } 29 30 public function schedule_actions() { 31 if (!as_next_scheduled_action('mailniaga_process_queue')) { 32 as_schedule_recurring_action(time(), 1, 'mailniaga_process_queue'); 33 } 34 35 if (!as_next_scheduled_action('mailniaga_retry_failed')) { 36 as_schedule_recurring_action(time(), 60, 'mailniaga_retry_failed'); // Every 5 minutes 37 } 24 38 } 25 39 … … 58 72 } 59 73 60 public function schedule_queue_processing() {61 if (!as_next_scheduled_action('process_mailniaga_email_queue')) {62 as_schedule_recurring_action(time(), 1, 'process_mailniaga_email_queue');63 //$this->log("Email queue processing scheduled");64 }65 }66 67 74 public function process_email_queue() { 68 75 global $wpdb; … … 71 78 $emails = $wpdb->get_results( 72 79 $wpdb->prepare( 73 "SELECT * FROM $table_name WHERE status = 'queued' ORDER BY created_at ASC LIMIT %d", 74 100 80 "SELECT * FROM $table_name 81 WHERE status = 'queued' 82 ORDER BY created_at ASC 83 LIMIT %d", 84 $this->batch_size 75 85 ) 76 86 ); 77 87 78 //$this->log("Processing " . count($emails) . " emails from queue"); 79 80 foreach ($emails as $email) { 81 $this->send_queued_email($email); 82 } 83 } 84 85 private function send_queued_email($email) { 88 if (empty($emails)) { 89 return; 90 } 91 92 $email_ids = array_map(function($email) { 93 return $email->id; 94 }, $emails); 95 96 $this->mark_emails_processing($email_ids); 97 $this->process_emails_batch($emails); 98 } 99 100 public function retry_failed_emails() { 101 global $wpdb; 102 $table_name = $wpdb->prefix . 'mailniaga_email_queue'; 103 104 $failed_emails = $wpdb->get_results( 105 "SELECT * FROM $table_name 106 WHERE status = 'failed' 107 ORDER BY created_at ASC 108 LIMIT {$this->batch_size}" 109 ); 110 111 if (empty($failed_emails)) { 112 return; 113 } 114 115 $email_ids = array_map(function($email) { 116 return $email->id; 117 }, $failed_emails); 118 119 $this->mark_emails_processing($email_ids); 120 $this->process_emails_batch($failed_emails, true); 121 } 122 123 private function process_emails_batch($emails, $is_retry = false) { 124 $this->log("Starting batch process with " . count($emails) . " emails"); 125 126 $requests = function() use ($emails) { 127 foreach ($emails as $email) { 128 $data = $this->prepare_email_data($email); 129 $this->log("Preparing request for email ID {$email->id}"); 130 131 yield function() use ($data) { 132 return $this->client->requestAsync('POST', 'messages', [ 133 'headers' => [ 134 'Content-Type' => 'application/json', 135 'X-API-Key' => $this->settings['api_key'], 136 'Accept' => 'application/json', 137 ], 138 'json' => $data, 139 'timeout' => 30, 140 'connect_timeout' => 10 141 ]); 142 }; 143 } 144 }; 145 146 $pool = new Pool($this->client, $requests(), [ 147 'concurrency' => $this->concurrency, 148 'fulfilled' => function($response, $index) use ($emails, $is_retry) { 149 try { 150 $email = $emails[$index]; 151 $result = json_decode($response->getBody(), true); 152 //$this->log("Response for email ID {$email->id}: " . print_r($result, true)); 153 154 if ($result && isset($result['status_code']) && $result['status_code'] === 200) { 155 $this->update_email_status($email->id, 'sent'); 156 $this->log(($is_retry ? "Retry successful" : "Sent successfully") . " for email ID: {$email->id}"); 157 } else { 158 $error = $result['message'] ?? 'Unknown error'; 159 $this->update_email_status($email->id, 'failed', $error); 160 $this->log(($is_retry ? "Retry failed" : "Send failed") . " for email ID: {$email->id}. Error: $error", 'error'); 161 } 162 } catch (\Exception $e) { 163 $this->log("Error processing response for index $index: " . $e->getMessage(), 'error'); 164 if (isset($email)) { 165 $this->update_email_status($email->id, 'failed', $e->getMessage()); 166 } 167 } 168 }, 169 'rejected' => function($reason, $index) use ($emails, $is_retry) { 170 try { 171 $email = $emails[$index]; 172 $error_message = $reason instanceof \Exception ? $reason->getMessage() : 'Unknown error'; 173 $this->update_email_status($email->id, 'failed', $error_message); 174 $this->log(($is_retry ? "Retry rejected" : "Send rejected") . " for email ID: {$email->id}. Error: $error_message", 'error'); 175 } catch (\Exception $e) { 176 $this->log("Error processing rejection for index $index: " . $e->getMessage(), 'error'); 177 } 178 }, 179 'options' => [ 180 'timeout' => 30, 181 'connect_timeout' => 10 182 ] 183 ]); 184 185 try { 186 $promise = $pool->promise(); 187 $promise->wait(); 188 $this->log("Batch processing completed"); 189 } catch (\Exception $e) { 190 $this->log("Error in pool promise: " . $e->getMessage(), 'error'); 191 } 192 } 193 194 private function mark_emails_processing($email_ids) { 195 global $wpdb; 196 $table_name = $wpdb->prefix . 'mailniaga_email_queue'; 197 198 $ids = implode(',', array_map('intval', $email_ids)); 199 $wpdb->query("UPDATE $table_name 200 SET status = 'processing', 201 updated_at = '" . current_time('mysql') . "' 202 WHERE id IN ($ids)"); 203 } 204 205 private function prepare_email_data($email): array { 86 206 $to = explode(',', $email->to_email); 87 207 $headers = unserialize($email->headers); … … 90 210 'from' => sprintf('%s <%s>', $email->from_name, $email->from_email), 91 211 'to' => $to, 92 'reply_to' => $headers['reply-to'] ?? '',93 212 'subject' => $email->subject, 94 213 'as_html' => 1, … … 96 215 ]; 97 216 217 if (!empty($headers['reply-to'])) { 218 $data['reply_to'] = $headers['reply-to']; 219 } 220 221 if (!empty($headers['unsubscribe'])) { 222 $data['unsubscribe_link'] = $headers['unsubscribe']; 223 } 224 98 225 if (!empty($headers['content-type']) && strpos($headers['content-type'], 'text/plain') !== false) { 99 226 $data['content_plain'] = $email->message; … … 101 228 } 102 229 103 try { 104 //$this->log("Sending email ID: {$email->id} to: {$email->to_email}"); 105 106 $response = $this->client->request('POST', 'messages', [ 107 'headers' => [ 108 'Content-Type' => 'application/json', 109 'X-API-Key' => $this->settings['api_key'], 110 ], 111 'json' => $data, 112 ]); 113 114 $result = json_decode($response->getBody(), true); 115 116 if ($result['error'] || $result['status_code'] !== 200) { 117 throw new \Exception('Failed to send email: ' . ($result['message'] ?? 'Unknown error')); 118 } 119 120 $this->update_email_status($email->id, 'sent'); 121 //$this->log("Email ID: {$email->id} sent successfully"); 122 } catch (GuzzleException $e) { 123 $this->log("Mailniaga API Error for email ID: {$email->id}: " . $e->getMessage(), 'error'); 124 $this->update_email_status($email->id, 'failed', $e->getMessage()); 125 } catch (\Exception $e) { 126 $this->log("Mailniaga Send Error for email ID: {$email->id}: " . $e->getMessage(), 'error'); 127 $this->update_email_status($email->id, 'failed', $e->getMessage()); 128 } 230 return $data; 129 231 } 130 232 … … 133 235 $table_name = $wpdb->prefix . 'mailniaga_email_queue'; 134 236 135 $result = $wpdb->update( 136 $table_name, 137 [ 138 'status' => $status, 139 'error_message' => $error_message, 140 'updated_at' => current_time('mysql'), 141 ], 142 ['id' => $email_id] 143 ); 144 145 if ($result === false) { 146 $this->log("Failed to update status for email ID: $email_id. DB Error: " . $wpdb->last_error, 'error'); 147 } else { 148 $this->log("Updated status for email ID: $email_id to: $status"); 149 } 237 $data = [ 238 'status' => $status, 239 'updated_at' => current_time('mysql'), 240 ]; 241 242 if ($error_message !== null) { 243 $data['error_message'] = $error_message; 244 } 245 246 $wpdb->update($table_name, $data, ['id' => $email_id]); 150 247 } 151 248 … … 227 324 } 228 325 229 private function get_last_error() {230 if (function_exists('error_get_last')) {231 $error = error_get_last();232 if ($error !== null) {233 return $error['message'];234 }235 }236 return 'Unknown error';237 }238 239 326 private function log($message, $level = 'info') { 240 $log_message = "[Mailniaga WP Connector] [$level] $message"; 241 error_log($log_message); 327 error_log("[Mailniaga WP Connector] [$level] $message"); 242 328 } 243 329 } -
mailniaga-smtp/trunk/includes/src/assets/css/settings-page.css
r3170128 r3193246 117 117 color: #666; 118 118 margin-top: 5px; 119 } 120 121 .datetime-wrapper { 122 display: inline-block; 123 margin-right: 10px; 124 } 125 126 .date-picker { 127 width: 100px; 128 margin-right: 5px; 129 } 130 131 .time-picker { 132 width: 100px; 119 133 } 120 134 -
mailniaga-smtp/trunk/includes/vendor/composer/installed.php
r3170128 r3193246 4 4 'pretty_version' => 'dev-main', 5 5 'version' => 'dev-main', 6 'reference' => ' 10d2719c6c3fc6712bf58442ed6e357bd593b98d',6 'reference' => 'e251f00736e1eeef80ca80b14ff2882f1be9d7e9', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../../', … … 104 104 'pretty_version' => 'dev-main', 105 105 'version' => 'dev-main', 106 'reference' => ' 10d2719c6c3fc6712bf58442ed6e357bd593b98d',106 'reference' => 'e251f00736e1eeef80ca80b14ff2882f1be9d7e9', 107 107 'type' => 'wordpress-plugin', 108 108 'install_path' => __DIR__ . '/../../../', -
mailniaga-smtp/trunk/mailniaga-smtp.php
r3170128 r3193246 13 13 * Plugin Name: Mail Niaga SMTP 14 14 * Plugin URI: https://mailniaga.com 15 * Version: 2. 0.015 * Version: 2.1.0 16 16 * Description: Streamline your WordPress email delivery with Mail Niaga API integration. Boost email deliverability, track performance, and ensure reliable SMTP service for all your website's outgoing emails. 17 17 * Author: Web Impian 18 18 * Author URI: https://webimpian.com 19 19 * Requires at least: 5.6 20 * Tested up to: 6. 6.121 * Requires PHP: 7.420 * Tested up to: 6.7 21 * Requires PHP: 8.1 22 22 * License: GPLv3 23 23 * License URI: https://www.gnu.org/licenses/gpl-3.0.txt -
mailniaga-smtp/trunk/readme.txt
r3170132 r3193246 1 1 === MailNiaga SMTP === 2 2 Contributors: webimpian 3 Tags: SMTP, email, mailniaga, email queue, email log3 Tags: SMTP, email, wp_mail, mailniaga, api, email queue, email log 4 4 Requires at least: 5.6 5 Tested up to: 6. 6.16 Requires PHP: 7.47 Stable tag: 2. 0.05 Tested up to: 6.7 6 Requires PHP: 8.1 7 Stable tag: 2.1.0 8 8 License: GPLv3 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.txt 10 10 11 Streamline WordPress email with Mail Niaga SMTP & API. Boost deliverability, manage queues, and trackperformance.11 Streamline your WordPress email delivery with Mail Niaga SMTP & API integration. Boost email deliverability, manage email queues, and track email performance. 12 12 13 13 == Description == 14 14 15 Mail Niaga SMTP integrates WordPress with Mail Niaga's services, improving email deliverability and tracking for reliable outgoing emails. 15 Mail Niaga SMTP is a powerful WordPress plugin that integrates your website with Mail Niaga's SMTP and API services. This plugin enhances your email deliverability, provides comprehensive tracking capabilities, and ensures a reliable email service for all your outgoing emails. 16 17 Mail Niaga is one of the products from Web Impian Sdn Bhd, a leading technology company in Malaysia. By using this plugin, you're leveraging a robust email solution backed by a reputable tech firm. 16 18 17 19 == How it works == 18 20 19 This plugin connects to Mail Niaga's endpoint to secure email processing for your WordPress site. 20 21 It seamlessly integrates with the WordPress core wp_mail() function to ensure all your site's emails are sent through Mail Niaga's reliable SMTP servers or API. 22 23 With the new email queue system, it can handle large volumes of emails efficiently, making it perfect for email blasts and high-traffic websites. 21 This plugin connects to Mail Niaga's endpoint to secure email processing for your WordPress site. It seamlessly integrates with the WordPress core wp_mail() function to ensure all your site's emails are sent through Mail Niaga's reliable SMTP servers or API. With the new email queue system, it can handle large volumes of emails efficiently, making it perfect for email blasts and high-traffic websites. 24 22 25 23 Please visit our website [https://mailniaga.com/](https://mailniaga.com/) for terms of use and privacy policy, or email to support@mailniaga.com for any inquiries. … … 76 74 = What is the Email Queue system? = 77 75 78 The Email Queue system allows you to manage large email sending operations efficiently. 79 80 It's particularly useful for email blasts or high-traffic websites that need to send a large number of emails without overwhelming the server. 76 The Email Queue system allows you to manage large email sending operations efficiently. It's particularly useful for email blasts or high-traffic websites that need to send a large number of emails without overwhelming the server. 81 77 82 78 = How long are email logs kept? = … … 97 93 98 94 == Changelog == 95 96 = 2.1.0 = 97 * Improve the queue speed email 98 * Fix a few bug 99 99 100 100 101 = 2.0.0 =
Note: See TracChangeset
for help on using the changeset viewer.