+ +
+ + + + ++ +
+
+
+
+
+
diff --git a/wp-content/mu-plugins/the-world-site-config/configs/global/global-plugins.php b/wp-content/mu-plugins/the-world-site-config/configs/global/global-plugins.php
index a060ab841..cd9e15894 100644
--- a/wp-content/mu-plugins/the-world-site-config/configs/global/global-plugins.php
+++ b/wp-content/mu-plugins/the-world-site-config/configs/global/global-plugins.php
@@ -53,6 +53,7 @@
'svg-block/svg-block.php',
'wp-graphql/wp-graphql.php',
'wp-graphql-acf/wp-graphql-acf.php',
+ 'wp-mail-smtp/wp_mail_smtp.php',
'add-wpgraphql-seo/wp-graphql-yoast-seo.php',
'custom-post-type-permalinks/custom-post-type-permalinks.php',
'faustwp/faustwp.php',
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/admin-bar.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/admin-bar.min.css
new file mode 100644
index 000000000..892001d7b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/admin-bar.min.css
@@ -0,0 +1 @@
+#wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter,#wpadminbar .wp-mail-smtp-admin-bar-menu-error{display:inline-block !important;vertical-align:top !important;box-sizing:border-box !important;margin:7px 0 0 2px !important;padding:0 5px !important;min-width:18px !important;height:18px !important;border-radius:9px !important;background-color:#d63638 !important;color:#fff !important;font-size:11px !important;line-height:1.6 !important;text-align:center !important}#wpadminbar .wp-mail-smtp-admin-bar-menu-notification-counter span,#wpadminbar .wp-mail-smtp-admin-bar-menu-error span{line-height:1 !important;font-size:11px !important}body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg{background-position-x:10px;background-position-y:8px}@media screen and (max-width: 782px){body.wp-admin #adminmenu #toplevel_page_wp-mail-smtp .wp-menu-image.svg{background-position-x:9px}}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/admin-notifications.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/admin-notifications.min.css
new file mode 100644
index 000000000..dc1225e21
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/admin-notifications.min.css
@@ -0,0 +1 @@
+#wp-mail-smtp-notifications{position:relative;background:#fff 0 0 no-repeat padding-box;box-shadow:0 2px 4px rgba(0,0,0,.05);border-radius:6px;opacity:1;min-height:48px;margin:0 0 14px 0}#wp-mail-smtp-notifications *{box-sizing:border-box}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-header{display:flex;align-items:center;padding:8px 16px;border-bottom:1px solid rgba(204,208,212,.5)}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-header .wp-mail-smtp-notifications-bell{position:relative;top:2px;margin-right:10px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-header .wp-mail-smtp-notifications-title{font-style:normal;font-weight:500;font-size:14px;line-height:17px;color:#23282d}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-body{position:relative}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages{padding:16px 100px 16px 16px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-message{display:none}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-message.current{display:block}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-title{font-weight:600;font-size:17px;line-height:17px;margin:0;color:#2c3337}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-content{font-weight:normal;font-size:14px;line-height:18px;margin:8px 0 41px 0;color:#50575e}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-content p{font-size:inherit;line-height:inherit;margin:0 0 5px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons{margin:-30px 80px 0 0}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons a{margin:0 10px 0 0;padding:8px 10px;line-height:13px;font-size:13px;min-height:unset}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons .button-secondary{border:1px solid #0071a1}#wp-mail-smtp-notifications .dismiss{position:absolute;top:15px;right:16px;width:16px;height:16px;color:#a0a5aa;font-size:16px;cursor:pointer;text-align:center;vertical-align:middle;line-height:16px}#wp-mail-smtp-notifications .dismiss:hover{color:#d63638}#wp-mail-smtp-notifications .dismiss i{width:100%;height:100%;font-size:inherit}#wp-mail-smtp-notifications .navigation{position:absolute;bottom:20px;right:16px;width:63px;height:30px}#wp-mail-smtp-notifications .navigation a{display:block;width:30px;height:30px;border:1px solid #7e8993;border-radius:3px;font-size:16px;line-height:1.625;text-align:center;cursor:pointer;background-color:#fff;color:#41454a}#wp-mail-smtp-notifications .navigation a:hover{background-color:#f1f1f1}#wp-mail-smtp-notifications .navigation a .dashicons{margin-top:8px;font-size:12px}#wp-mail-smtp-notifications .navigation .prev{float:left}#wp-mail-smtp-notifications .navigation .next{float:right}#wp-mail-smtp-notifications .navigation .disabled{border-color:#ddd;color:#a0a5aa;cursor:default}#wp-mail-smtp-notifications .navigation .disabled:hover{background-color:#fff}@media screen and (max-width: 768px){#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages{padding:15px 50px 20px 16px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-title{margin:0 30px 0 0;line-height:22px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-content{font-size:16px;line-height:22px}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons{margin:-30px 80px 0 0}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons a{margin:0;display:table}#wp-mail-smtp-notifications .wp-mail-smtp-notifications-messages .wp-mail-smtp-notifications-buttons .button-secondary{margin-top:6px}}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/admin-site-health.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/admin-site-health.min.css
new file mode 100644
index 000000000..1b1397842
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/admin-site-health.min.css
@@ -0,0 +1 @@
+#health-check-accordion-block-wp_mail_smtp_email_domain_check>p:first-child{margin-top:0}#wp-mail-smtp-domain-check-details h2{color:#2c3338;font-weight:600;font-size:13px;margin:0 0 15px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item{padding:10px 0 0;border-top:1px solid #e4e4e4;display:flex}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item:last-child{border-bottom:1px solid #e4e4e4}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-icon{width:18px;height:16px;margin-right:10px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content h3{text-transform:uppercase;font-weight:500;font-size:14px;line-height:17px;margin:0 0 4px 0;color:#2c3337}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p{margin:0 0 10px 0;color:#50575e}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css
new file mode 100644
index 000000000..e465b4c83
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css
@@ -0,0 +1 @@
+#dashboard-widgets .meta-box-sortables .postbox:last-child .wp-mail-smtp-dash-widget-settings-menu{top:auto;bottom:50px}@media(min-width: 800px){#dashboard-widgets .meta-box-sortables .postbox:last-child .wp-mail-smtp-dash-widget-settings-menu{bottom:40px}}#wp_mail_smtp_reports_widget_pro .inside,#wp_mail_smtp_reports_widget_lite .inside{margin:0;padding:0}.wp-mail-smtp-dash-widget button:focus{outline:none}.wp-mail-smtp-dash-widget-block{position:relative;padding:0 12px;margin-top:12px}.wp-mail-smtp-dash-widget-block h3{display:inline-block;line-height:2}.wp-mail-smtp-dash-widget-block p{margin-top:0;margin-bottom:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-block-container{position:relative}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-block{height:291px;border-bottom:1px solid #eee;padding:0 12px 12px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{display:flex;align-items:center;justify-content:space-between;margin-top:0;padding:13px;background-color:#fafafa}@media(max-width: 980px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px 4px}}@media(max-width: 960px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px}}@media(max-width: 856px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px 2px}}@media(max-width: 799px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px}}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{flex-direction:column;align-items:normal}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings>div{display:flex}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings select{width:100%;margin:0 0 10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-timespan{width:calc(100% - 38px)}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{vertical-align:middle}@media(max-width: 1150px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}@media(min-width: 1500px)and (max-width: 1630px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}@media(min-width: 1801px)and (max-width: 2080px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:6px}@media(max-width: 830px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:2px}}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:0}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{display:inline-block;position:relative;vertical-align:top;margin-left:6px}@media(max-width: 830px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{margin-left:2px}}@media(max-width: 799px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{margin-left:6px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button{background:#fafafa;color:#787c82;border-color:#787c82;padding:1px 6px 0;margin-bottom:0;line-height:1;display:flex;align-items:center;justify-content:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:hover,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:active,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:focus{color:#2271b1;border-color:#2271b1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:hover svg path,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:active svg path,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:focus svg path{fill:#2271b1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button.open svg path{transform:rotate(90deg)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg{display:inline-block;width:19px;height:19px}@media(max-width: 782px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg{padding:5px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg path{fill:#787c82;transition:transform .2s;transform-origin:center center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu{display:none;position:absolute;background-color:#fff;width:160px;border-radius:3px;box-shadow:0px 5px 15px rgba(0,0,0,.15);padding:10px;z-index:9999;right:0;top:50px}@media(min-width: 800px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu{top:40px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color{border-bottom:1px solid #eee}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style h4,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color h4{text-transform:uppercase !important;color:#3c434a !important;font-size:11px !important;font-weight:500 !important;line-height:13px !important;margin:0 0 10px !important}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item{display:flex;align-items:center;color:#3c434a;font-size:13px;line-height:16px;margin:0 0 13px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item:last-child,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item:last-child{margin:0 0 10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item input[type=radio],.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item input[type=radio]{margin-right:5px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item label,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item label{vertical-align:top;margin-top:-3px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color{margin-top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu-save{margin-top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block{margin-top:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table{width:calc(100% + 24px);margin:0 -12px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell{padding:10px 12px;border-right:1px solid #eee;border-top:1px solid #eee;color:#3c434a;font-size:14px;width:50%;line-height:17px}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell{display:block;width:100%}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--2:not(:first-child){border-right:none}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3{width:33.33%}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3{width:100%}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3:last-child{border-right:none}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell-container{display:flex;align-items:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell-container img{width:16px;margin-right:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block .wp-mail-smtp-dash-widget-overlay{background-position-y:50%}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block{display:flex;padding:12px 7px 12px 12px;border-top:1px solid #eee;color:#787c82;font-size:13px;line-height:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block b{color:#3c434a}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .sep{display:inline-block;margin:0 3px;color:#ddd}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .sep-vertical{color:#ddd}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block p{margin:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-recommended-plugin{display:inline-block;width:calc(100% - 24px)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-recommended-plugin span{display:inline-block}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block{display:inline-block;border:0;color:gray;opacity:.3;vertical-align:baseline;cursor:pointer;background:none;padding:0 2px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block:hover{opacity:1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block .dashicons{font-size:16px;height:16px;width:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education{align-items:center;border-left:4px solid #d63638;border-top:1px solid #eee;display:flex;gap:10px;margin-top:0;padding:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-error-icon{display:flex;height:44px;width:40px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-error-icon img{height:35px;width:35px;margin:auto}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content{padding-right:14px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p{color:#1d2327;font-size:14px;line-height:20px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p a{color:#2271b1;font-weight:500}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p strong{font-weight:500}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education .wp-mail-smtp-dash-widget-dismiss-email-alert-block{background:none;border:0;cursor:pointer;position:absolute;right:6px;top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education .wp-mail-smtp-dash-widget-dismiss-email-alert-block .dashicons{color:#a0a5aa;font-size:16px;height:17px;width:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-error{text-align:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart{position:absolute;left:0;top:0;height:100%;width:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,0);background:-moz-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(100%, rgb(255, 255, 255)));background:-webkit-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-o-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-ms-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:radial-gradient(ellipse at center, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal{position:absolute;top:calc(50% - 2em);left:50%;transform:translate(-50%, -50%);padding:1.5em 2em 2em 2em;box-shadow:0 0 25px 10px rgba(0,0,0,.08);border-radius:3px;background-color:#fff;text-align:center;width:20em}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal h2,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal h2{padding:0;margin-bottom:5px;font-size:18px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal p,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal p{line-height:1.3}.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-email-stats{padding-top:16px;padding-bottom:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled{padding:21px 25px 30px;text-align:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled .wp-mail-smtp-dash-widget-block-logo{width:75px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled h2{font-size:16px;line-height:20px;font-weight:500;padding:10px 0 0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled p{font-size:14px;line-height:20px;margin:7px 0 19px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled a.button:first-of-type:not(:only-of-type){margin-right:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-overlay{width:100%;position:absolute;top:0;right:0;bottom:0;left:0;background:url(../images/wp-spinner.gif) no-repeat center calc(50% - 12px);background-color:#fff;z-index:10}.wp-mail-smtp-dash-widget i.wp-mail-smtp-dash-widget-loader{background-image:url(../images/wp-spinner.gif);background-repeat:no-repeat;background-position:center;background-size:cover}.wp-mail-smtp-dash-widget .hidden{display:none !important}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-block-container #wp-mail-smtp-dash-widget-chart{opacity:.35}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade{background:none;display:flex;align-items:center;justify-content:center}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade h2{font-size:20px;line-height:20px;font-weight:500;color:#3c434a;margin-bottom:15px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade p{font-size:14px;line-height:18px;color:#787c82;margin-bottom:15px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade p:last-child{margin-bottom:0}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade a.button.button-hero{font-weight:500;font-size:14px;line-height:20px;padding:9px 15px;min-height:40px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal{position:relative;top:inherit;left:inherit;transform:none;width:24em;padding:2.3em;box-shadow:0 5px 25px rgba(0,0,0,.15);border-radius:6px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-dismiss-chart-upgrade{position:absolute;width:16px;height:17px;right:5px;top:5px;color:#a0a5aa;text-decoration:none}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-dismiss-chart-upgrade .dashicons{width:16px;height:17px;font-style:normal;font-weight:normal;font-size:16px;line-height:17px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-settings-menu input[type=radio]:checked::before{background-color:#a0a5aa}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-settings-menu *{cursor:not-allowed}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block{margin-top:0;padding-top:10px;padding-bottom:10px;border-top:1px solid #eee;font-size:13px;line-height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block>div{padding:10px;border-radius:4px;background:#f0f6fc}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting{display:flex;align-items:center}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label{display:flex;margin:0 10px 0 0;color:#3c434a}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label input,#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label i{margin:0 10px 0 0}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label i{display:none;width:16px;height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label b{font-weight:500}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting a{white-space:nowrap;margin-right:10px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting .dashicons-dismiss{margin-left:auto;width:16px;height:16px;font-size:16px;color:#a0a5aa;cursor:pointer}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting .dashicons-dismiss:hover{color:#2271b1}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-applied{display:flex}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-applied .wp-mail-smtp-dashicons-yes-alt-green{margin-right:10px;width:16px;height:16px;background-image:url("../images/dash-widget/yes-green.svg")}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer{padding:12px;margin-top:0;border-top:1px solid #eee}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer p{font-size:13px;line-height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer--hide{display:none}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css b/wp-content/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css
new file mode 100644
index 000000000..57f3e9d28
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css
@@ -0,0 +1,299 @@
+/* General styles. */
+
+#outlook a {
+ padding: 0;
+}
+
+.ExternalClass {
+ width: 100%;
+}
+
+.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {
+ line-height: 100%;
+}
+
+#backgroundTable {
+ margin: 0;
+ padding: 0;
+ width: 100% !important;
+ line-height: 100% !important;
+}
+
+/* Prevent blue links in subject. */
+.stats-subject-heading a {
+ color: inherit !important;
+ text-decoration: none !important;
+}
+
+/* Mobile styles. */
+
+@media only screen and (max-width: 599px) {
+ table.body .container {
+ width: 94% !important;
+ max-width: 600px !important;
+ }
+
+ .header img {
+ width: 240px !important;
+ height: auto !important;
+ }
+
+ .content {
+ padding: 30px !important;
+ }
+
+ .main-heading {
+ font-size: 16px !important;
+ line-height: 20px !important;
+ }
+
+ .main-description {
+ margin-bottom: 20px !important;
+ }
+
+ .stats-totals-wrapper.two .stats-totals-item-wrapper {
+ width: 50% !important;
+ }
+
+ .stats-totals-wrapper.three .stats-totals-item-wrapper {
+ width: 33.3% !important;
+ }
+
+ .stats-totals-wrapper.four .stats-totals-item-wrapper {
+ width: 25% !important;
+ }
+
+ .stats-totals-wrapper {
+ border-collapse: separate !important;
+ border: 1px solid #DDDDDD !important;
+ border-radius: 4px !important;
+ }
+
+ .stats-total-item {
+ width: 100% !important;
+ min-width: 100% !important;
+ }
+
+ .stats-total-item-inner {
+ border: none !important;
+ }
+
+ .stats-total-item-icon-wrapper {
+ height: 24px !important;
+ }
+
+ .stats-total-item-icon {
+ width: 24px !important;
+ height: 24px !important;
+ }
+
+ .stats-totals-wrapper.three .stats-total-item-title,
+ .stats-totals-wrapper.four .stats-total-item-title {
+ display: none !important;
+ }
+
+ .stats-total-item-value {
+ font-size: 18px !important;
+ line-height: 22px !important;
+ }
+
+ .stats-total-item-percent {
+ font-size: 12px !important;
+ line-height: 14px !important;
+ }
+
+ .stats-total-item-percent img {
+ width: 9px !important;
+ height: 9px !important;
+ }
+
+ .stats-heading th {
+ display: block !important;
+ width: 100% !important;
+ min-width: 100% !important;
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ text-align: center !important;
+ }
+
+ .stats-heading .first-col {
+ padding-top: 20px !important;
+ padding-bottom: 5px !important;
+ }
+
+ .stats-heading .second-col {
+ padding-top: 0 !important;
+ padding-bottom: 20px !important;
+ }
+
+ .stats-heading h2 {
+ text-align: center !important;
+ font-size: 15px !important;
+ line-height: 18px !important;
+ }
+
+ .stats-heading a {
+ font-size: 13px !important;
+ line-height: 16px !important;
+ }
+
+ .stats-subject-heading {
+ text-align: center !important;
+ }
+
+ .stats-subject-row {
+ text-align: center !important;
+ }
+
+ .stats-subject-column.total,
+ .stats-subject-column.sent,
+ .stats-subject-column.confirmed,
+ .stats-subject-column.unconfirmed,
+ .stats-subject-column.unsent {
+ max-width: 64px !important;
+ }
+
+ .stats-subject-column.opened,
+ .stats-subject-column.clicked {
+ max-width: 111px !important;
+ }
+
+ .spacer-40 {
+ line-height: 20px !important;
+ height: 20px !important;
+ }
+
+ .upgrade-heading {
+ font-size: 18px !important;
+ line-height: 22px !important;
+ }
+
+ .upgrade-text {
+ font-size: 14px !important;
+ line-height: 20px !important;
+ }
+}
+
+@media only screen and (max-width: 360px) {
+ .content {
+ padding: 20px !important;
+ }
+
+ .stats-subject-column.total,
+ .stats-subject-column.sent,
+ .stats-subject-column.confirmed,
+ .stats-subject-column.unconfirmed,
+ .stats-subject-column.unsent {
+ max-width: 61px !important;
+ }
+}
+
+/* Dark Mode. */
+
+@media (prefers-color-scheme: dark) {
+ .dark-body-bg {
+ background: #1C1E20 !important;
+ }
+
+ .dark-content-bg {
+ background: #23282C !important;
+ }
+
+ .dark-bg {
+ background: #202326 !important;
+ }
+
+ .dark-white-color {
+ color: #ffffff !important;
+ }
+
+ .dark-img {
+ display: block !important;
+ width: auto !important;
+ overflow: visible !important;
+ float: none !important;
+ max-height: inherit !important;
+ max-width: inherit !important;
+ line-height: auto !important;
+ margin-top: 0px !important;
+ visibility: inherit !important;
+ }
+
+ .light-img {
+ display: none;
+ display: none !important;
+ }
+
+ .stats-total-item-inner,
+ .stats-heading {
+ border-color: #395360 !important;
+ }
+
+ .stats-subject-column-value,
+ .stats-total-item-percent,
+ .footer {
+ color: #8C8F94 !important;
+ }
+
+ .stats-subject-column-value span {
+ color: #4A5057 !important;
+ }
+
+ .upgrade-text {
+ color: #8C8F94 !important;
+ }
+}
+
+/* Dark Mode Outlook. */
+
+[data-ogsc] .dark-body-bg {
+ background: #1C1E20 !important;
+}
+
+[data-ogsc] .dark-content-bg {
+ background: #23282C !important;
+}
+
+[data-ogsc] .dark-bg {
+ background: #202326 !important;
+}
+
+[data-ogsc] .dark-white-color {
+ color: #ffffff !important;
+}
+
+[data-ogsc] .dark-img {
+ display: block !important;
+ width: auto !important;
+ overflow: visible !important;
+ float: none !important;
+ max-height: inherit !important;
+ max-width: inherit !important;
+ line-height: auto !important;
+ margin-top: 0px !important;
+ visibility: inherit !important;
+}
+
+[data-ogsc] .light-img {
+ display: none;
+ display: none !important;
+}
+
+[data-ogsc] .stats-total-item-inner,
+[data-ogsc] .stats-heading {
+ border-color: #395360 !important;
+}
+
+[data-ogsc] .stats-subject-column-value,
+[data-ogsc] .stats-total-item-percent,
+[data-ogsc] .footer {
+ color: #8C8F94 !important;
+}
+
+[data-ogsc] .stats-subject-column-value span {
+ color: #4A5057 !important;
+}
+
+[data-ogsc] .upgrade-text {
+ color: #8C8F94 !important;
+}
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/smtp-about.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-about.min.css
new file mode 100644
index 000000000..b2326f5f8
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-about.min.css
@@ -0,0 +1 @@
+.wp-mail-smtp-page-about{padding:0 !important}.wp-mail-smtp-page-about *,.wp-mail-smtp-page-about *::before,.wp-mail-smtp-page-about *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins{padding:0 10px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container{margin-left:-20px;margin-right:-20px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{padding:0 10px;float:left;width:33.333333%;margin-bottom:20px}@media(max-width: 1249px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{width:50%}}@media(max-width: 781px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{width:100%;margin-bottom:20px}}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container h5{font-size:17px;font-weight:600}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item{background-color:#fff;border:1px solid #ddd;border-radius:3px;margin:0}@media(max-width: 781px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item{margin:0 0}}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item img{border:1px solid #eee;float:left;max-width:75px;padding:10px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item img[src*=-mi]{padding:13px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item h5{margin:0 0 10px 100px;font-size:16px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item p{margin:0 0 0 100px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .details{padding:20px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions{background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;position:relative}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg{background-color:#f7f7f7;position:absolute;text-align:center;font-weight:600;top:0;left:0;height:100%;width:100%;z-index:99;padding:20px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-ms-align-items:center;align-items:center;justify-content:center}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg.success{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg.error{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status{float:left;padding-top:8px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-inactive{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-download{color:#666}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-active{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button{float:right}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button{cursor:pointer;width:140px;text-align:center;display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;-webkit-appearance:none;border-radius:3px;border:1px solid #ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;font-weight:normal}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button:focus,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.loading{background:#fafafa;border-color:#999;color:#23282d}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button .fa{margin-right:8px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button .fa.fa-spinner{margin-right:0}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary:focus{background:#008ec2;border-color:#006799;color:#fff}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary .fa-spinner{color:#fff}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary{color:#50575e;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary:focus{background:#fafafa;border-color:#999;color:#23282d}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-active .fa{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-inactive .fa{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-download .fa{color:#999}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.loading .fa{color:#666}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.disabled{cursor:default}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #e5e6e6;line-height:2}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h1,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h2,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h3,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h4,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h5{margin-top:0;padding-top:0;line-height:1.6}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h2{font-size:24px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h3{font-size:18px;margin-bottom:30px;color:#23282c}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p{font-size:16px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p{margin-bottom:20px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p.bigger{font-size:18px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p.smaller{font-size:14px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p:last-child{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section hr{margin:30px 0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure{margin:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure img{width:100%}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure figcaption{font-size:14px;color:#646970;margin-top:5px;text-align:center;line-height:initial}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-40{padding-left:15px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-40{width:100%;padding-left:0;padding-top:20px}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-60{padding-right:15px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-60{width:100%;padding-right:0}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-plain{margin-top:0;margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-plain li{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-features li .fa{color:#00a32a;margin:0 8px 0 0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .fa-star{color:gold}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .no-margin{margin:0 !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .no-padding{padding:0 !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .centered{text-align:center !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero{padding:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra{padding:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra table{width:100%}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra .wp-mail-smtp-admin-column-50{float:none;width:100%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main{background-color:#fafafa;border-bottom:1px solid #e5e6e6}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main.no-border{border-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main p{color:#666}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero h3.call-to-action{margin-bottom:-10px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero span.price-off{color:#00a32a}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-squashed{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-squashed:not(:last-of-type){border-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post h2{margin-bottom:-10px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post h3{margin-bottom:15px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post p:last-of-type{margin-bottom:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20{padding-right:20px;width:auto}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20 img{width:270px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20{width:20%}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20 img{width:auto;max-width:100%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-80{padding-left:20px;width:calc(100% - 20px - 270px)}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-80{width:80%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link{padding:10px 15px;background-color:#df7739;color:#fff;border-radius:3px;text-decoration:none;margin-top:15px;font-size:14px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link:hover{background-color:#b85a1b}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link .fa{color:#edba9e;vertical-align:middle;margin-left:8px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table{border-collapse:collapse}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr td{border-bottom:1px solid #e5e6e6;border-right:1px solid #e5e6e6;padding:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr td:last-of-type{border-right:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr:last-child td{border-bottom:none}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p{background-repeat:no-repeat;background-size:15px auto;background-position:0 6px;margin:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-full{padding-left:30px;background-image:url(../images/about/icon-full.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-none{padding-left:30px;background-image:url(../images/about/icon-none.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-partial{padding-left:30px;background-position:-3px 0;background-size:23px auto;background-image:url(../images/about/icon-partial.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main{padding:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main h3{padding:30px 30px 30px 60px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main .wp-mail-smtp-admin-column-33:first-child h3{padding:30px}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css
new file mode 100644
index 000000000..6d39c9633
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css
@@ -0,0 +1 @@
+#wpcontent{padding-left:0 !important;position:relative}@media(max-width: 600px){#wpcontent{padding-top:46px}}@media(max-width: 600px){#wpbody{padding-top:0}}@-webkit-keyframes wp-mail-smtp-fade-in-stop-out{0%,100%{opacity:0}35%{opacity:1}65%{opacity:1}}@keyframes wp-mail-smtp-fade-in-stop-out{0%,100%{opacity:0}35%{opacity:1}65%{opacity:1}}body.wp-mail-smtp-admin-page-body div.jconfirm *,body.wp-mail-smtp-admin-page-body div.jconfirm *::before,body.wp-mail-smtp-admin-page-body div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-bg{background-color:rgba(114,119,124,.75);opacity:1}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box{padding:30px;border-radius:6px;box-shadow:0 3px 6px rgba(0,0,0,.15);border-top-width:4px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,.4);top:8px;right:8px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,.8)}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c{margin:0 0 15px 0;padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin:0 0 30px;-webkit-transition:none;transition:none;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty,body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i:empty{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{display:block;color:#2c3337;font-weight:500;font-size:24px;line-height:29px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content-pane{display:block;margin-bottom:30px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{margin-bottom:0;overflow:inherit}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content{font-size:16px;color:#2c3337;line-height:1.4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p{margin:0 0 20px;font-size:16px;line-height:1.5}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p.large{font-size:18px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p.small{font-size:14px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-debug-event-preview p{font-size:14px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-btn{font-weight:600;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px;outline:none;display:inline-block;font-size:14px;line-height:1.4;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;background-image:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-btn.with-loader{padding:12px 12px 7px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons{padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button{transition:.2s;box-shadow:none;margin:0 10px 0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button:hover{box-shadow:inset 0 0 0 100px rgba(0,0,0,.1)}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-confirm{color:#fff;outline:none;border:1px solid #e27730;background-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-cancel{color:#777;outline:none;background:#f8f8f8;border:1px solid #ccc}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button,body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-default{color:#666}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-hide{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-block{display:block;text-align:center;width:100%;margin:0 0 10px 0 !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-normal-case{text-transform:none !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-green{border-color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-green div.jconfirm-buttons button.btn-confirm{background-color:#00a32a;border-color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-orange{border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-orange div.jconfirm-buttons button.btn-confirm{background-color:#e27730;border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-red{border-color:#d63638}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-red div.jconfirm-buttons button.btn-confirm{background-color:#d63638;border-color:#d63638}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-blue{border-color:#3582c4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-blue div.jconfirm-buttons button.btn-confirm{background-color:#3582c4;border-color:#3582c4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading{border-top-color:#fff !important;height:160px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading .jconfirm-title-c{display:block !important;position:relative;z-index:4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading .jconfirm-title-c .jconfirm-icon-c{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading:before{z-index:2}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading:after{content:"";position:absolute;left:50%;top:68%;margin-left:-20px;height:40px;width:40px;border:solid 6px rgba(0,0,0,0);border-bottom-color:#e27730;opacity:1;z-index:3}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal{padding:30px 30px 15px;border-top:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c{margin:0 0 26px 0;padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c .jconfirm-icon-c{margin-bottom:20px;color:#c4c4c4 !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c .jconfirm-icon-c svg{height:35px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-content-pane{margin-bottom:25px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-buttons button.btn-confirm{background-color:#e27730;border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note{text-align:center;margin:45px 0 0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note p{background-color:#fcf9e8;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note p:after{content:url(../images/font-awesome/check-circle-solid-green.svg);width:40px;height:40px;background-color:#fff;border-radius:50%;padding:5px 6px;position:absolute;top:-20px;right:50%;margin-right:-18px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note span{font-weight:600;color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note a{color:#aaa;display:block;margin-top:12px}@media screen and (max-width: 1023px){#wp-mail-smtp-notice-bar{display:none !important}}#wp-mail-smtp-notice-bar{max-height:35px;position:relative;margin-bottom:-3px;transition:all .3s ease-out;overflow:hidden}#wp-mail-smtp-notice-bar.out{max-height:3px}#wp-mail-smtp-notice-bar .wp-mail-smtp-notice-bar-container{background-color:#ddd;border-top:3px solid #e27730;color:#50575e;text-align:center;padding:7px}#wp-mail-smtp-notice-bar a{color:#e27730}#wp-mail-smtp-notice-bar a:hover{color:#b85a1b}#wp-mail-smtp-notice-bar .dismiss{position:absolute;top:0;right:0;border:none;padding:5px;margin-top:4px;background:0 0;color:#72777c;cursor:pointer}#wp-mail-smtp-notice-bar .dismiss:before{background:0 0;color:#72777c;content:"";display:block;font:normal 20px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased}#screen-meta-links .screen-meta-toggle{position:absolute;right:20px;top:auto}#wp-mail-smtp .wp-mail-smtp-product-education__row{border-bottom:1px solid #e4e4e4;padding:25px 0 5px;font-size:14px;line-height:1.3;max-width:1005px}#wp-mail-smtp .wp-mail-smtp-product-education__row>*:last-child{border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-product-education__row--inactive{opacity:.5;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-product-education__row--full-width{max-width:unset}#wp-mail-smtp .wp-mail-smtp-product-education__row--no-border{border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-product-education__row--no-padding{padding:0 !important}#wp-mail-smtp .wp-mail-smtp-product-education__row:first-of-type{padding-top:10px}#wp-mail-smtp .wp-mail-smtp-product-education__row:last-of-type+.wp-mail-smtp-btn-upgrade{margin-top:25px}#wp-mail-smtp .wp-mail-smtp-product-education__heading{display:flex;align-items:center;margin-top:0;margin-bottom:10px;font-size:20px;line-height:24px;color:#2c3337}#wp-mail-smtp .wp-mail-smtp-product-education__heading:after{content:"";margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}#wp-mail-smtp .wp-mail-smtp-product-education__description{margin-top:0;margin-bottom:20px;color:#50575e;font-size:14px;line-height:1.5em}#wp-mail-smtp .wp-mail-smtp-product-education__upgrade-btn--top{margin-bottom:20px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots{display:flex;flex-wrap:wrap}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-product-education__screenshots{flex-direction:column}}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div{display:flex;flex-direction:column;align-items:center;margin:0 25px 20px 0}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div{margin-right:0;max-width:unset !important}}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div:last-child{margin-right:0}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a{position:relative;margin-bottom:10px;background:#fff;border:5px solid #fff;box-sizing:border-box;border-radius:4px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a:after{content:"";position:absolute;opacity:0;height:100%;width:100%;top:0;left:0;background-color:rgba(68,68,68,.15);background-image:url("../../assets/images/icons/zoom.svg");background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a:hover:after{opacity:1}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div img{display:block;max-width:100%;height:auto}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div span{font-size:14px;line-height:18px;text-align:center;color:#50575e}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots--two>div{max-width:487px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots--three>div{max-width:316px}#wp-mail-smtp .wp-mail-smtp-product-education__list>h4{margin-top:0;margin-bottom:20px;font-size:16px;line-height:20px;color:#2c3337}#wp-mail-smtp .wp-mail-smtp-product-education__list>div{display:flex;flex-wrap:wrap}#wp-mail-smtp .wp-mail-smtp-product-education__list ul{width:290px;margin:0 40px 20px 0}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li{display:flex;align-items:center;font-size:14px;line-height:20px;margin-bottom:0;color:#50575e}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li+li{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li:before{content:url("../../assets/images/icons/check-solid.svg");width:16px;margin-right:10px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section{margin-bottom:20px;cursor:not-allowed}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section:last-of-type{margin-bottom:20px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section h5{clear:both;margin:0 0 10px 0;color:#2c3337;font-size:16px;font-weight:600}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section label{clear:both;float:left;margin:3px 0 3px 0}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-date-selector{width:200px;cursor:pointer}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-search-box-field{width:200px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-search-box-term{width:300px}#wp-mail-smtp #wp-mail-smtp-email-controls-product-education .wp-mail-smtp-product-education__row--inactive{padding-top:20px;padding-bottom:0}#wp-mail-smtp #wp-mail-smtp-email-controls-product-education .wp-mail-smtp-setting-row:last-child{border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu h2{display:inline-block;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .badge{margin:0 0 2px 7px;vertical-align:middle;width:40px;height:17px}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite{color:#9a9a9a}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite p.desc{color:#bababa}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite input[type=checkbox]:disabled{border-color:#aaa}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-no-setting{margin-top:30px}.wp-mail-smtp-lite #wp-mail-smtp .wp-mail-smtp-page-reports .wp-mail-smtp-page-title .page-title{position:relative}.wp-mail-smtp-lite #wp-mail-smtp .wp-mail-smtp-page-reports .wp-mail-smtp-page-title .page-title:after{content:"";display:inline-block;margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}.wp-mail-smtp-lite #wp-mail-smtp #wp-mail-smtp-setting-row-gmail-one_click_setup_enabled-lite .wp-mail-smtp-toggle::after,.wp-mail-smtp-lite #wp-mail-smtp #wp-mail-smtp-setting-row-misc-rate_limit-lite .wp-mail-smtp-toggle::after{content:"";margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}.wp-mail-smtp-loading{animation:.65s linear infinite wp-mail-smtp-loading-spin}.wp-mail-smtp-loading-md{width:32px;height:32px}.wp-mail-smtp-loading-sm{width:16px;height:16px}.wp-mail-smtp-loading-spin{position:relative;color:rgba(0,0,0,0) !important;pointer-events:none}.wp-mail-smtp-loading-spin:after{position:absolute;box-sizing:border-box;animation:.65s linear infinite wp-mail-smtp-loading-spin;border:2px solid #fff;border-radius:50%;border-right-color:rgba(0,0,0,0) !important;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;top:50%;left:50%;width:16px;height:16px;margin-top:-8px;margin-left:-8px}@keyframes wp-mail-smtp-loading-spin{0%{transform:rotateZ(270deg)}100%{transform:rotateZ(630deg)}}#wp-mail-smtp-flyout{position:fixed;z-index:99999;transition:all .2s ease-in-out;right:40px;bottom:40px;opacity:1}@media(max-width: 959px){#wp-mail-smtp-flyout{display:none}}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head{display:block}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:focus{box-shadow:none}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head figure{margin:0;border-radius:50%;border:3px solid #e27730;overflow:hidden;box-shadow:0 2px 20px rgba(0,0,0,.15);background-color:#fff;transition:all .2s ease-in-out}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head figure img{display:block;width:54px;height:54px;transition:all .2s ease-in-out}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:hover figure{box-shadow:0 2px 30px rgba(0,0,0,.2)}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head .wp-mail-smtp-flyout-label{right:calc(100% + 15px);opacity:0;transform:translateY(-50%) scale(0);margin-right:-50px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:hover .wp-mail-smtp-flyout-label{opacity:1;transform:translateY(-50%) scale(1);margin-right:0}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-label{position:absolute;display:block;top:50%;right:calc(100% + 15px);transform:translateY(-50%);-moz-transform:translateY(-50%);-webkit-transform:translateY(-50%);color:#fff;background-color:#a7aaad;font-size:12px;white-space:nowrap;padding:6px 10px;height:auto !important;line-height:initial;transition:all .2s ease-out;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item{position:absolute;display:flex;left:10px;width:40px;height:40px;opacity:0;visibility:hidden;transition:all .2s ease-in-out;transform:scale(0);border-radius:50%;box-shadow:0px 2px 10px rgba(0,0,0,.15);background-color:#738e9e}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item img{margin:auto}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-0{bottom:75px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-1{bottom:130px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-2{bottom:185px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-3{bottom:240px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-4{bottom:295px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item:hover{background-color:#395360}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item:hover .wp-mail-smtp-flyout-label{background-color:#787c82}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item{opacity:1;visibility:visible;transform:scale(1)}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-head .wp-mail-smtp-flyout-label{display:none}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-head figure img{transform:rotate(-15deg) scale(1.17)}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-0{transition:transform .2s 0ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-1{transition:transform .2s 35ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-2{transition:transform .2s 70ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-3{transition:transform .2s 105ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-4{transition:transform .2s 140ms,background-color .2s}#wp-mail-smtp-flyout.out{opacity:0;visibility:hidden}.wp-mail-smtp-tooltip{position:relative;display:inline-block;text-decoration:underline;text-decoration-style:dotted;cursor:help;color:#50575e;margin-top:15px !important}.wp-mail-smtp-tooltip-text{visibility:hidden;position:absolute;z-index:9999;width:360px;background-color:#2d4f60;color:#fff;text-align:center;padding:16px 20px;font-size:14px;border-radius:5px;bottom:100%;left:50%;margin-left:-180px}.wp-mail-smtp-tooltip-text::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#2d4f60 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.wp-mail-smtp-tooltip:hover .wp-mail-smtp-tooltip-text{visibility:visible}#wp-mail-smtp .wp-mail-smtp-conditional button{cursor:pointer}#wp-mail-smtp .wp-mail-smtp-conditional table{width:100%;max-width:740px;padding:0;margin:0;border-collapse:collapse;border-spacing:0;font-size:13px}#wp-mail-smtp .wp-mail-smtp-conditional table td{padding:0 10px 20px 0}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__row{display:flex;flex-direction:column}}#wp-mail-smtp .wp-mail-smtp-conditional__row input,#wp-mail-smtp .wp-mail-smtp-conditional__row select{width:100% !important;max-width:100%;margin:0;text-overflow:ellipsis}#wp-mail-smtp .wp-mail-smtp-conditional__property-col{width:23%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__property-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__operator-col{width:23%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__operator-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__value-col{width:42%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__value-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__value :disabled{background-color:#f1f1f1;cursor:not-allowed}#wp-mail-smtp .wp-mail-smtp-conditional__actions{display:flex;align-items:center;padding-right:0}#wp-mail-smtp .wp-mail-smtp-conditional__delete-rule{background-color:rgba(0,0,0,0);border:none;color:#999;margin:0 0 0 10px;padding:0;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-conditional__delete-rule:hover{color:#d63638}#wp-mail-smtp .wp-mail-smtp-conditional__group-delimiter{margin:0 0 20px;font-size:14px;font-style:italic;font-weight:400;line-height:17px;color:#646970}.wp-mail-smtp-toggle{vertical-align:middle;display:inline-flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wp-mail-smtp-toggle__switch{position:relative;width:27px;height:17px;flex-shrink:0;cursor:pointer;background-color:#ccc;border-radius:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wp-mail-smtp-toggle__switch:before{position:absolute;content:"";height:13px;width:13px;left:2px;top:2px;background-color:#fff;border-radius:50%;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wp-mail-smtp-toggle__label{display:none;margin-left:10px;font-weight:400;font-size:13px;line-height:15px;color:#50575e;text-transform:uppercase}.wp-mail-smtp-toggle__label--static{display:block;text-transform:none}.wp-mail-smtp-toggle input[type=checkbox]{position:absolute;top:auto;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;white-space:nowrap}.wp-mail-smtp-toggle input[type=checkbox]:not(:checked):hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:not(:checked):focus+.wp-mail-smtp-toggle__switch{box-shadow:0 0 0 1px #fff,0 0 0 3px #999;background-color:#999}.wp-mail-smtp-toggle input[type=checkbox]:not(:checked)~.wp-mail-smtp-toggle__label--unchecked{display:block}.wp-mail-smtp-toggle input[type=checkbox]:checked+.wp-mail-smtp-toggle__switch{background-color:#00a32a}.wp-mail-smtp-toggle input[type=checkbox]:checked+.wp-mail-smtp-toggle__switch:before{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.wp-mail-smtp-toggle input[type=checkbox]:checked:hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:checked:focus+.wp-mail-smtp-toggle__switch{box-shadow:0 0 0 1px #fff,0 0 0 3px #00a32a}.wp-mail-smtp-toggle input[type=checkbox]:checked~.wp-mail-smtp-toggle__label--checked{display:block}.wp-mail-smtp-toggle input[type=checkbox]:disabled:hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:disabled:focus+.wp-mail-smtp-toggle__switch{box-shadow:none}.wp-mail-smtp-toggle input[type=checkbox]:disabled~*{opacity:.5;cursor:default}.wp-mail-smtp-admin-page-body #wpbody-content{padding-bottom:200px}@media(max-width: 782px){.wp-mail-smtp-admin-page-body #wpbody-content{padding-bottom:0 !important}}.wp-mail-smtp-admin-page-body #wpfooter a{color:#2171b1 !important}.wp-mail-smtp-admin-page-body #wpfooter a:hover,.wp-mail-smtp-admin-page-body #wpfooter a:active{color:#135e96 !important}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:normal;color:#646970;padding:30px 0;margin-bottom:20px}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion p{font-weight:600}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links,.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social{display:flex;justify-content:center;align-items:center}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links{margin:10px 0;color:#646970}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links a{color:#04558a}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links a:hover{color:#04558a}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social{gap:10px;margin:0}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li{margin-bottom:0}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li path{color:#646970}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li:hover path{fill:#50575e}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social a{display:block;height:16px}.wp-mail-smtp-admin-page-body #wpfooter #footer-left{color:#50575e;font-size:13px;font-style:normal;font-weight:400;line-height:normal}.wp-mail-smtp-admin-page-body #wpfooter #footer-left strong{font-weight:600}#screen-meta-links,#screen-meta{display:none}#wp-mail-smtp-header-temp{position:absolute;margin:0;top:-1px;left:20px;right:0;z-index:99}#wp-mail-smtp-header{border-top:3px solid #e27730;padding:24px 20px}#wp-mail-smtp-header img{display:block;margin:0;max-width:242px}@media(max-width: 782px){#wp-mail-smtp-header img{max-width:200px}}.wp-mail-smtp-page{color:#2c3337}.wp-mail-smtp-page a{color:#2171b1}.wp-mail-smtp-page a:hover,.wp-mail-smtp-page a:active{color:#135e96}#wp-mail-smtp{margin:0}#wp-mail-smtp .wp-mail-smtp-hide{display:none}#wp-mail-smtp .wp-mail-smtp-page-title{min-height:58px;background-color:#fff;font-size:14px;margin:0 0 20px 0;padding:0 20px}#wp-mail-smtp .wp-mail-smtp-page-title a.tab{border-bottom:3px solid #fff;box-shadow:none;color:#666;display:inline-block;margin-right:30px;padding:20px 0 17px 0;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-title a.tab.active{border-color:#e27730}#wp-mail-smtp .wp-mail-smtp-page-title a.tab:hover{border-color:#999}#wp-mail-smtp .wp-mail-smtp-page-title a.action{color:#fff;font-weight:600;margin:14px 0 14px 10px;line-height:28px;min-height:30px;vertical-align:top}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-page-title a.action{margin-left:0}}#wp-mail-smtp .wp-mail-smtp-page-title .page-title{background-color:#fff;display:inline-block;font-size:23px;margin:0;padding:20px 20px 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content{padding:0 20px}#wp-mail-smtp .wp-mail-smtp-page-content *,#wp-mail-smtp .wp-mail-smtp-page-content *::before,#wp-mail-smtp .wp-mail-smtp-page-content *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-clear:before{content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-clear:after{clear:both;content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row{border-bottom:1px solid #e4e4e4;padding:30px 0;font-size:14px;line-height:1.3}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row:first-of-type{padding-top:10px !important}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row{padding:20px 0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.inactive{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-setting-mid-row-sep{background:#e4e4e4;height:1px;border:0;margin:15px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading{padding:20px 0 10px;border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.no-desc h2,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.no-desc h4{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.wp-mail-smtp-section-heading--has-divider{padding:20px 0 30px;border-bottom:1px solid #e4e4e4}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading .wp-mail-smtp-setting-field{margin:0;max-width:1005px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading .desc{font-style:normal}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]{float:left;margin:1px 0 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]+label{margin:0 0 0 8px;vertical-align:baseline}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox .desc{margin:0 0 0 30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]+label+.desc{margin:8px 0 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-text .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-password .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-number .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-email .wp-mail-smtp-setting-label{padding-top:8px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-select .wp-mail-smtp-setting-label{padding-top:8px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-radio .wp-mail-smtp-setting-field input[type=radio]{margin:-3px 10px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-radio .wp-mail-smtp-setting-field label{margin-right:30px;display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-no-border{border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-no-padding{padding:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer{padding-bottom:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer{display:inline-block;width:140px;margin-right:12px;margin-bottom:12px;position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image{background:#fff;text-align:center;border:2px solid #e5e5e5;border-radius:4px;cursor:pointer;height:76px;position:relative;margin-bottom:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image.is-recommended{background-image:url(../images/recommended.svg);background-repeat:no-repeat;background-size:60%;background-position:top right -2px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image img{max-width:80%;max-height:40px;display:block;position:relative;top:50%;left:50%;transform:translate(-50%, -50%);opacity:.6;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.wp-mail-smtp-mailer-smtp .wp-mail-smtp-mailer-image img{max-height:30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.active .wp-mail-smtp-mailer-image{border-color:#e27730}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.active .wp-mail-smtp-mailer-image img{opacity:1}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer:hover .wp-mail-smtp-mailer-image{border-color:#ccc}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer:hover .wp-mail-smtp-mailer-image img{opacity:1}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert{padding-top:20px;padding-bottom:25px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row{border:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading{margin-bottom:25px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading h3{margin-bottom:10px;font-weight:500;font-size:18px;line-height:22px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading .notice{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading .notice p{margin:6.5px 0;font-size:13px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row{padding:0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row+.wp-mail-smtp-setting-row{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-label label{font-weight:500}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .dashicons-trash{position:relative;top:6px;color:#a7aaad;cursor:pointer;transition:.2s}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .dashicons-trash:hover{color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-twilio_sms .wp-mail-smtp-setting-row-alert-connection-options{position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-twilio_sms .wp-mail-smtp-setting-row-alert-connection-options+.wp-mail-smtp-setting-row-alert-connection-options:before{content:"";display:block;max-width:605px;height:1px;margin-bottom:20px;background-color:#dcdcde}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h2,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h4{color:#2c3337;font-size:20px;font-weight:600;margin:0 0 6px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h2{margin-bottom:15px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h3{color:#2c3337;font-size:24px;font-weight:600;margin:0 0 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h5{color:#2c3337;font-size:16px;font-weight:600;margin:0 0 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.5em}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p:first-of-type{margin:8px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.desc{margin:10px 0 0;font-style:italic;color:#50575e}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.desc+.desc{font-style:normal}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.buttonned{margin-top:30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice{margin:5px 0 15px;box-sizing:border-box;background:#fff;border-left:4px solid rgba(0,0,0,0);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-error{border-color:#d63638;margin-bottom:5px;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-info{border-color:#2171b1;margin-bottom:5px;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-edu-notice{border-color:#809eb0;line-height:1.5em;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice a.wp-mail-smtp-mailer-notice-dismiss{float:right;color:#999da1;margin:0 0 10px 10px;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice a.wp-mail-smtp-mailer-notice-dismiss:hover{color:#666a6e}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row ul{margin:8px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row ul.list li{margin-left:20px;list-style-type:disc}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list th{padding:5px 5px 5px 0;text-align:left}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.email{padding-right:2em}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.status{width:100px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a{border-bottom:1px solid;display:inline-block;margin-right:5px;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]{color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:hover,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:active,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:hover,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:active,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:focus{color:#8a1c1d}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{background-color:#fff;border:1px solid #8d8f95;border-radius:4px;box-shadow:none;color:#2c3337;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:36px;line-height:1.3}@media(max-width: 959px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{width:300px}}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{width:100%;max-width:unset;margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select~.wp-mail-smtp-btn{margin-top:8px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select[readonly]{background-color:#f9f9f9}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select.small-text{width:75px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select:focus{border:1px solid #016aab;box-shadow:0 0 0 1px #016aab;outline:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select:disabled{opacity:.6}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=checkbox]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=radio]:focus{border:1px solid #016aab;box-shadow:0 0 0 1px #016aab;outline:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-dashicons-yes-alt-green.wp-mail-smtp-animate{-webkit-animation:wp-mail-smtp-fade-in-stop-out 1s linear;animation:wp-mail-smtp-fade-in-stop-out 1s linear}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-dashicons-yes-alt-green.wp-mail-smtp-success{color:#00a32a}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group{border-bottom:1px solid #e4e4e4;padding:0 0 30px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group{padding:0 0 20px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group:first-of-type{padding-top:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group .wp-mail-smtp-setting-row{border:none;padding:30px 0 0 !important}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group .wp-mail-smtp-setting-row{padding:20px 0 0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label{display:block;float:left;width:205px;padding:0 20px 0 0}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label{float:none;width:100%;padding-bottom:15px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label label{display:block;font-weight:600}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field{display:block;margin:0 0 0 205px;max-width:800px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field{margin:0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field hr{margin:20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-field-row{display:flex;flex-wrap:wrap}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-field-row>.wp-mail-smtp-btn+.wp-mail-smtp-btn{margin-left:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-submit{margin:0;padding:25px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-submit .help-text{margin-left:10px;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option .wp-mail-smtp-setting-row.section-heading{padding:20px 0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option blockquote{background:#e5e5e5;border-radius:4px;color:#666;font-size:14px;margin:20px 0;padding:15px;max-width:1005px;width:100%}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row{display:flex;align-items:center}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row{flex-direction:column;align-items:flex-start}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row__info{margin-left:30px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row__info{margin-left:0;margin-top:10px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice{margin-top:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice:first-child{margin-top:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice:last-child{margin-bottom:0}#wp-mail-smtp .wp-mail-smtp-page-content.wp-mail-smtp-page-general p{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-success{border-left-color:#00a32a}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-warning{border-left-color:#ffb900}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-error{border-left-color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-info{border-left-color:#00a0d2}#wp-mail-smtp .wp-mail-smtp-page-content .notice p,#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline p,#wp-mail-smtp .wp-mail-smtp-page-content .notice p:first-of-type,#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline p:first-of-type{margin:.5em 0;padding:2px}#wp-mail-smtp .wp-mail-smtp-page-content pre{white-space:pre-line}#wp-mail-smtp .wp-mail-smtp-page-content.active{display:block}#wp-mail-smtp .wp-mail-smtp-page-content .connected-as{margin-left:30px}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-page-content .connected-as{display:block;margin-left:0;margin-top:8px}}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner{background-color:#fff;padding:25px 20px;border:1px solid #dadada;margin:10px 0 0 0;position:relative}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .wp-mail-smtp-pro-banner-dismiss{position:absolute;right:10px;top:10px}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .wp-mail-smtp-pro-banner-dismiss button{background:none;border:none;color:#a9a9a9;cursor:pointer;margin:0;padding:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner h2{color:#2c3337;margin-top:0;font-size:16px;font-weight:600}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner p{font-size:14px;color:#50575e;margin-bottom:1.1em}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner p:last-of-type{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits{margin:0 0 16px 0;overflow:auto;max-width:1000px}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits ul{margin:0;padding:0;width:50%;float:left}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits ul{width:100%;float:none}}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits ul li{margin:0;padding:0 0 2px 16px;color:#50575e;font-size:14px;position:relative}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits ul li:before{content:"+";position:absolute;top:-1px;left:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .benefits ul li.arrow-right:before{content:"→"}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner a{color:#e27730}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner a:hover,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner a:active,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner a:focus{color:#b85a1b}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .stars{text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .stars .dashicons{width:16px;height:16px;font-size:16px;vertical-align:text-top}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner .price-off{color:#00a32a;font-weight:600}#wp-mail-smtp .wp-mail-smtp-admin-columns>div[class*=-column-]{float:left}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-20{width:20%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-33{width:33.33333%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-40{width:40%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-50{width:50%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-60{width:60%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-80{width:80%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-last{float:right !important}#wp-mail-smtp .wp-mail-smtp-admin-columns:after{content:"";display:table;clear:both}#wp-mail-smtp .notice blockquote{margin-left:0;padding:2px}#wp-mail-smtp .notice blockquote pre{margin:0;white-space:pre-line}#wp-mail-smtp #wp-mail-smtp-reset-filter{clear:both;margin:20px 0;padding:10px;font-size:15px;text-align:center;background:#fff;border:1px solid #ccd0d4;box-shadow:0 1px 1px rgba(0,0,0,.04)}#wp-mail-smtp #wp-mail-smtp-reset-filter a{text-decoration:none}#wp-mail-smtp #wp-mail-smtp-reset-filter .reset{cursor:pointer;color:#a6a6a6;font-size:15px;line-height:18px;width:18px;height:18px}#wp-mail-smtp #wp-mail-smtp-reset-filter .reset:focus,#wp-mail-smtp #wp-mail-smtp-reset-filter .reset:hover{color:#d63638}@media(min-width: 783px){#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#event{width:130px}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#type{width:80px}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#initiator{width:20%}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#created_at{width:200px}}#wp-mail-smtp .wp-mail-smtp-tab-misc #wp-mail-smtp-setting-row-rate_limit_periods input[type=number]{width:100px}#wp-mail-smtp .wp-mail-smtp-tab-misc #wp-mail-smtp-setting-row-uninstall .wp-mail-smtp-danger{font-weight:600;color:#d63638}@media(max-width: 782px){#wp-mail-smtp .wp-mail-smtp-filter-date{display:flex !important;flex-direction:column;align-items:flex-start;float:none;width:100%;padding-right:0;margin-bottom:10px;max-width:600px}}#wp-mail-smtp .wp-mail-smtp-filter-date__control{float:left;margin:0 5px 0 0;min-height:30px;background-color:#fff;vertical-align:middle;max-width:210px}@media(max-width: 782px){#wp-mail-smtp .wp-mail-smtp-filter-date__control{flex-grow:1;width:100%;max-width:none;min-height:40px;margin-right:0;margin-bottom:5px}}#wp-mail-smtp .wp-mail-smtp-filter-date__btn{margin:0;vertical-align:top}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn{display:inline-flex;align-items:center;background-color:#4285f4;border-radius:2px;box-shadow:0 2px 4px 0 rgba(0,0,0,.25);transition:all 300ms ease-in-out;text-decoration:none;cursor:pointer;color:#fff}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn:hover{box-shadow:0 0 3px 3px rgba(66,133,244,.3)}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn:active{background:#3367d6}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn--disabled{pointer-events:none;background-color:#d4d3d3;box-shadow:none;color:#7f7f7f}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__border,#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__bg{fill:#d4d3d3}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__symbol{fill:#7f7f7f}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn__icon{overflow:hidden;border-radius:2px}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn__icon svg{display:block;margin:-3px}#wp-mail-smtp .wp-mail-smtp-google-sign-in-btn__text{font-size:14px;font-weight:600;margin:0 10px}.wp-mail-smtp-btn{border:0;border-radius:3px;cursor:pointer;display:inline-block;margin:0;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;text-shadow:none;box-shadow:none;outline:none}.wp-mail-smtp-btn .dashicons{font-size:16px;width:16px;height:16px}.wp-mail-smtp-btn+.wp-mail-smtp-btn{margin-left:16px}.wp-mail-smtp-btn:disabled{opacity:.5;cursor:not-allowed}.wp-mail-smtp-btn.wp-mail-smtp-btn-md{font-size:14px;font-weight:500;padding:9px 15px;min-height:36px;line-height:16px;border-width:1px;border-style:solid}.wp-mail-smtp-btn.wp-mail-smtp-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}.wp-mail-smtp-btn.wp-mail-smtp-btn-upgrade,.wp-mail-smtp-btn.wp-mail-smtp-btn-cta{font-size:16px;line-height:20px;font-weight:500;padding:14px 30px}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange{background-color:#e27730;border-color:#e27730;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:focus{background-color:#b85a1b;border-color:#b85a1b;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #b85a1b}.wp-mail-smtp-btn.wp-mail-smtp-btn-red{background-color:#d63638;border-color:#d63638;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-red:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-red:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-red:focus{background-color:#b32d2e;border-color:#b32d2e;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-red:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #b32d2e}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey{background-color:#f8f8f8;border-color:#999;color:#555}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:focus{background-color:#eee;border-color:#555;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey{background-color:#f5f5f5;border-color:#ccc;color:#666}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:focus{background-color:#eee;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish{background-color:#738e9e;border-color:#738e9e;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:focus{background-color:#395360;border-color:#395360;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #395360}a.wp-mail-smtp-btn.wp-mail-smtp-btn-md{line-height:16px}#wp-mail-smtp-domain-check-details h2{color:#2c3337;font-size:20px;line-height:24px;font-weight:600;margin:28px 0 23px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item{padding:25px 0;border-top:1px solid #e4e4e4;display:flex}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item:last-child{padding-bottom:0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-icon{width:18px;height:16px;margin-right:10px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content h3{text-transform:uppercase;font-weight:500;font-size:14px;line-height:17px;color:#2c3337;margin:0 0 4px 0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p{color:#50575e;font-size:14px;line-height:20px;margin:0 0 10px 0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p:last-of-type{margin-bottom:0}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-setting-row.section-heading{margin-bottom:22px}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-test-email-resend{padding-top:22px;margin-top:22px;border-top:1px solid #e4e4e4}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-test-email-resend a{font-size:14px;outline:none;box-shadow:none}.wp-mail-smtp-tab-tools-test #email-test-success{margin-top:30px;text-align:center}.wp-mail-smtp-tab-tools-test #email-test-success svg{display:block;max-width:500px;width:100%;height:auto;margin:0 auto 22px}.wp-mail-smtp-tab-tools-test #email-test-success h2{margin-top:0;margin-bottom:10px;font-weight:500;font-size:24px;line-height:29px;color:#2c3337}.wp-mail-smtp-tab-tools-test #email-test-success p{margin-top:0;font-size:16px;line-height:24px;color:#50575e}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-setting-row.section-heading{margin-bottom:0}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-btn{min-width:95px}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-loading{display:none;margin-bottom:-2px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug{margin-top:25px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug h2{margin:20px 0 10px;color:#2c3337;font-size:16px;line-height:20px;font-weight:600}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug p{margin:10px 0;color:#50575e;font-size:14px;line-height:20px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul{list-style-type:disc}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol{margin:10px 0 10px 15px;color:#50575e;font-size:14px;line-height:20px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li{margin:0 0 8px 0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li:last-of-type,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li:last-of-type{margin:0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li ul,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li ul{list-style-type:disc}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .dashicons-star-filled{color:#e27730;width:16px;height:16px;font-size:16px;vertical-align:text-top}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .price-off{color:#00a32a;font-weight:600}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-button-container{margin-bottom:22px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-toggle{float:left;margin-right:10px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy{min-width:122px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy .error-log-copy-back{display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy-copied .error-log-copy-front{display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy-copied .error-log-copy-back{display:inline}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log{padding-top:10px;padding-bottom:10px;display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log.error-log-selection{display:block !important;opacity:0;height:0;padding:0;margin:0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log pre{margin:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content .wrap,.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content .subsubsub{margin:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content>h1{color:#2c3337;font-size:20px;font-weight:600;margin:0 0 15px 0;padding:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content>p{font-size:14px}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content h1.wp-heading-inline,.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content span.subtitle{display:none}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content hr.wp-header-end{visibility:hidden;margin:-2px 0 0}.wp-mail-smtp-admin-page-body .lity{z-index:999999999;padding:20px}.wp-mail-smtp-admin-page-body .lity-close{margin:10px}.wp-mail-smtp-admin-page-body .lity-content{max-width:80vw;max-height:80vh}.wp-mail-smtp-admin-page-body .lity-content img{max-height:80vh !important;max-width:80vw !important}.wp-mail-smtp-debug-event-preview{text-align:left}.wp-mail-smtp-debug-event-preview h4{margin:15px 0;font-size:18px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-subtitle{margin-bottom:30px;text-align:center}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-subtitle span{color:#50575e;font-size:16px;line-height:22px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row{padding:20px 0;border-top:1px solid #ddd;display:flex;justify-content:flex-start;align-items:flex-start;font-size:16px;line-height:22px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-label{width:60px;margin-right:30px;font-weight:500}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-value{width:calc(100% - 90px)}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-initiator{display:inline-block;margin-bottom:5px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-code{color:#50575e}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row:last-child{border-bottom:1px solid #ddd}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-content>div{word-break:break-word}[class^=wp-mail-smtp-dashicons]{display:inline-block;width:20px;height:20px}.wp-mail-smtp-dashicons-yes-alt-green{background-image:url("../images/icons/dashicons/dashicons-yes-alt-green.svg")}.wp-mail-smtp-dashicons-pdf-gray{background-image:url("../images/icons/dashicons/dashicons-pdf-grey.svg")}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css
new file mode 100644
index 000000000..7e256a571
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css
@@ -0,0 +1 @@
+#wp-mail-smtp .wp-mail-smtp-smart-routing-header{padding-bottom:0 !important;border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-header__heading{display:flex;align-items:center}#wp-mail-smtp .wp-mail-smtp-smart-routing-header__heading>a{margin-left:15px;font-weight:600;font-size:14px;line-height:22px}#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top{max-width:1000px;margin:10px 0 0 !important;border:1px solid #bbb}#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top--no-connections~.wp-mail-smtp-setting-row,#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top--no-connections~.wp-mail-smtp-submit{opacity:.5;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-smart-routing-toggle .wp-mail-smtp-toggle__label{font-weight:500;font-size:14px;text-transform:capitalize}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes{max-width:1000px;margin-bottom:30px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route{background:#fff;box-shadow:0px 2px 4px rgba(0,0,0,.07);border-radius:6px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route+.wp-mail-smtp-smart-routing-route{margin-top:30px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header{display:flex;align-items:center;padding:20px;border-bottom:1px solid #f1f1f1}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header{flex-direction:column;align-items:flex-start}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>span{margin-right:10px;font-size:14px;line-height:17px;font-style:italic;color:#646970}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>span{margin-right:0;margin-top:10px}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>select{margin-right:10px !important}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>select{margin-right:0;margin-top:10px !important}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__connection{max-width:273px;width:100%}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__connection--invalid{border-color:#d63638 !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__actions{display:flex;align-items:center;margin-left:auto}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__actions{order:-1}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order{margin-right:23px;white-space:nowrap}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn{background-color:rgba(0,0,0,0);border:none;padding:0;vertical-align:middle;cursor:pointer}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn--down{margin-left:13px;transform:rotate(-180deg)}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn img{display:block}#wp-mail-smtp .wp-mail-smtp-smart-routing-route:first-child .wp-mail-smtp-smart-routing-route__order-btn--up,#wp-mail-smtp .wp-mail-smtp-smart-routing-route:last-child .wp-mail-smtp-smart-routing-route__order-btn--down{opacity:.25;cursor:not-allowed;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete{background-color:rgba(0,0,0,0);border:none;color:#999;padding:0;vertical-align:middle;cursor:pointer}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete:hover:not(:disabled){color:#d63638}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete:disabled{opacity:.25;cursor:not-allowed}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__main{padding:20px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__notice{margin-top:0 !important;margin-bottom:20px !important;border:1px solid #bbb}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__notice p{margin:6px 0 !important;font-size:13px !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-route .wp-mail-smtp-btn-grey{font-weight:500}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note{display:flex;align-items:center;margin-bottom:5px;font-size:14px;line-height:20px;color:#646970}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note img{margin-right:10px}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note p{margin:0 !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a{color:inherit}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a:hover,#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a:active{color:#555}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css
new file mode 100644
index 000000000..8920a67e0
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css
@@ -0,0 +1,13 @@
+.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*
+ /*rtl:begin:ignore*/left:0/*
+ /*rtl:end:ignore*/}/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*
+ /*rtl:begin:ignore*/right:0/*
+ /*rtl:end:ignore*/}/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css
new file mode 100644
index 000000000..b66d20545
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css
@@ -0,0 +1,9 @@
+/*!
+ * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/)
+ * Author: boniface pereira
+ * Website: www.craftpip.com
+ * Contact: hey@craftpip.com
+ *
+ * Copyright 2013-2019 jquery-confirm
+ * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)
+ */@-webkit-keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body[class*=jconfirm-no-scroll-]{overflow:hidden!important}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .4s;transition:opacity .4s}.jconfirm .jconfirm-bg.jconfirm-bg-h{opacity:0!important}.jconfirm .jconfirm-scrollpane{-webkit-perspective:500px;perspective:500px;-webkit-perspective-origin:center;perspective-origin:center;display:table;width:100%;height:100%}.jconfirm .jconfirm-row{display:table-row;width:100%}.jconfirm .jconfirm-cell{display:table-cell;vertical-align:middle}.jconfirm .jconfirm-holder{max-height:100%;padding:50px 0}.jconfirm .jconfirm-box-container{-webkit-transition:-webkit-transform;transition:-webkit-transform;transition:transform;transition:transform,-webkit-transform}.jconfirm .jconfirm-box-container.jconfirm-no-transition{-webkit-transition:none!important;transition:none!important}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}@-webkit-keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@-webkit-keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@-webkit-keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@-webkit-keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@-webkit-keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@-webkit-keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.jconfirm .jconfirm-box.jconfirm-type-animated{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jconfirm .jconfirm-box.jconfirm-type-blue{border-top:solid 7px #3498db;-webkit-animation-name:type-blue;animation-name:type-blue}.jconfirm .jconfirm-box.jconfirm-type-green{border-top:solid 7px #2ecc71;-webkit-animation-name:type-green;animation-name:type-green}.jconfirm .jconfirm-box.jconfirm-type-red{border-top:solid 7px #e74c3c;-webkit-animation-name:type-red;animation-name:type-red}.jconfirm .jconfirm-box.jconfirm-type-orange{border-top:solid 7px #f1c40f;-webkit-animation-name:type-orange;animation-name:type-orange}.jconfirm .jconfirm-box.jconfirm-type-purple{border-top:solid 7px #9b59b6;-webkit-animation-name:type-purple;animation-name:type-purple}.jconfirm .jconfirm-box.jconfirm-type-dark{border-top:solid 7px #34495e;-webkit-animation-name:type-dark;animation-name:type-dark}.jconfirm .jconfirm-box.loading{height:120px}.jconfirm .jconfirm-box.loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.jconfirm .jconfirm-box.loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;-webkit-animation:jconfirm-spin 1s infinite linear;animation:jconfirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.jconfirm .jconfirm-box div.jconfirm-closeIcon{height:20px;width:20px;position:absolute;top:10px;right:10px;cursor:pointer;opacity:.6;text-align:center;font-size:27px!important;line-height:14px!important;display:none;z-index:1}.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.jconfirm-title-c{display:block;font-size:22px;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;padding-bottom:15px}.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand{cursor:move}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{font-size:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i{vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-content-pane{margin-bottom:15px;height:auto;-webkit-transition:height .4s ease-in;transition:height .4s ease-in;display:inline-block;width:100%;position:relative;overflow-x:hidden;overflow-y:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll{overflow-y:hidden}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar{width:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-track{background:rgba(0,0,0,0.1)}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img{max-width:100%;height:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty{display:none}.jconfirm .jconfirm-box .jconfirm-buttons{padding-bottom:11px}.jconfirm .jconfirm-box .jconfirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c!important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db!important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71!important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6!important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f!important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e!important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}@keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:all;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{-webkit-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{-webkit-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{-webkit-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{-webkit-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{-webkit-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{-webkit-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{-webkit-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{-webkit-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{-webkit-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;-webkit-box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:scale(0);transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transform:scale(1);transform:scale(1)}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css
new file mode 100644
index 000000000..aa2517668
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css
@@ -0,0 +1,3 @@
+/*! Lity - v2.4.1 - 2020-04-26
+* http://sorgalla.com/lity/
+* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */.lity{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;white-space:nowrap;background:#0b0b0b;background:rgba(0,0,0,0.9);outline:none !important;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity.lity-opened{opacity:1}.lity.lity-closed{opacity:0}.lity *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lity-wrap{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;outline:none !important}.lity-wrap:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.lity-loader{z-index:9991;color:#fff;position:absolute;top:50%;margin-top:-0.8em;width:100%;text-align:center;font-size:14px;font-family:Arial,Helvetica,sans-serif;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity-loading .lity-loader{opacity:1}.lity-container{z-index:9992;position:relative;text-align:left;vertical-align:middle;display:inline-block;white-space:normal;max-width:100%;max-height:100%;outline:none !important}.lity-content{z-index:9993;width:100%;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;-o-transition:-o-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease, -o-transform .3s ease}.lity-loading .lity-content,.lity-closed .lity-content{-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.lity-content:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6)}.lity-close{z-index:9994;width:35px;height:35px;position:fixed;right:0;top:0;-webkit-appearance:none;cursor:pointer;text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close::-moz-focus-inner{border:0;padding:0}.lity-close:hover,.lity-close:focus,.lity-close:active,.lity-close:visited{text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close:active{top:1px}.lity-image img{max-width:100%;display:block;line-height:0;border:0}.lity-iframe .lity-container,.lity-youtube .lity-container,.lity-vimeo .lity-container,.lity-facebookvideo .lity-container,.lity-googlemaps .lity-container{width:100%;max-width:964px}.lity-iframe-container{width:100%;height:0;padding-top:56.25%;overflow:auto;pointer-events:auto;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-overflow-scrolling:touch}.lity-iframe-container iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}.lity-hide{display:none}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png
new file mode 100644
index 000000000..cbd0d3ccd
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png
new file mode 100644
index 000000000..3add72c3b
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/edd.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/edd.png
new file mode 100644
index 000000000..cc33aa202
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/edd.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-full.svg b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-full.svg
new file mode 100644
index 000000000..6d5d611bc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-full.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-none.svg b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-none.svg
new file mode 100644
index 000000000..43efd278d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-none.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg
new file mode 100644
index 000000000..fde33ea36
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png
new file mode 100644
index 000000000..7785f677b
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png
new file mode 100644
index 000000000..c85adc9fc
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png
new file mode 100644
index 000000000..613d6ee44
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-om.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-om.png
new file mode 100644
index 000000000..11004c555
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-om.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png
new file mode 100644
index 000000000..15ce746e2
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png
new file mode 100644
index 000000000..7a0756976
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png
new file mode 100644
index 000000000..615191f99
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png
new file mode 100644
index 000000000..eb0d41910
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png
new file mode 100644
index 000000000..3d4532e62
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png
new file mode 100644
index 000000000..9262097eb
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png
new file mode 100644
index 000000000..1b20fc628
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png
new file mode 100644
index 000000000..cb762d636
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png
new file mode 100644
index 000000000..456134aa0
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png
new file mode 100644
index 000000000..ef1490bbc
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/searchwp.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/searchwp.png
new file mode 100644
index 000000000..4e8a2f595
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/searchwp.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png
new file mode 100644
index 000000000..6d0ae5417
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/team.jpg b/wp-content/plugins/wp-mail-smtp/assets/images/about/team.jpg
new file mode 100644
index 000000000..eab09d5f8
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/team.jpg differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png b/wp-content/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png
new file mode 100644
index 000000000..b75252605
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png
new file mode 100644
index 000000000..c77705b36
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png
new file mode 100644
index 000000000..72346b890
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png
new file mode 100644
index 000000000..f740babff
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png
new file mode 100644
index 000000000..96caf312d
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg
new file mode 100644
index 000000000..12fe2e93e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg
new file mode 100644
index 000000000..549704933
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg
new file mode 100644
index 000000000..af291253f
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg
new file mode 100644
index 000000000..ff843f1f1
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg
new file mode 100644
index 000000000..aaa1d5a98
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg
new file mode 100644
index 000000000..ab90d5dcd
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg
new file mode 100644
index 000000000..af291253f
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg
new file mode 100644
index 000000000..b4bc09125
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg
new file mode 100644
index 000000000..aaa1d5a98
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg
new file mode 100644
index 000000000..57f1302c0
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png
new file mode 100644
index 000000000..4a878e971
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png
new file mode 100644
index 000000000..48c4aeb9a
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png
new file mode 100644
index 000000000..320510c80
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png
new file mode 100644
index 000000000..d0e3bf1ea
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png
new file mode 100644
index 000000000..d2cf6996b
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png
new file mode 100644
index 000000000..0daa8def0
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email/icon-check.png b/wp-content/plugins/wp-mail-smtp/assets/images/email/icon-check.png
new file mode 100644
index 000000000..02e61da0c
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email/icon-check.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg b/wp-content/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg
new file mode 100644
index 000000000..783f52ee6
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email/signature.png b/wp-content/plugins/wp-mail-smtp/assets/images/email/signature.png
new file mode 100644
index 000000000..f8fff3125
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email/signature.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png b/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png
new file mode 100644
index 000000000..9ce76ad09
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png b/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png
new file mode 100644
index 000000000..6a452531b
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg
new file mode 100644
index 000000000..74095298f
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg
new file mode 100644
index 000000000..21aa971d7
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg
new file mode 100644
index 000000000..42a28840d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg
new file mode 100644
index 000000000..6d9e8a03c
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg
new file mode 100644
index 000000000..85bf4f007
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg
new file mode 100644
index 000000000..6be582779
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg
new file mode 100644
index 000000000..e59ade4bc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg
new file mode 100644
index 000000000..26e742d72
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg
new file mode 100644
index 000000000..8c9c15544
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg
new file mode 100644
index 000000000..198fb6148
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg
new file mode 100644
index 000000000..cfe6b880b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg
new file mode 100644
index 000000000..230004ae3
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg
new file mode 100644
index 000000000..02d7f56b9
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg
new file mode 100644
index 000000000..c9bd25ca4
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/error.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/error.svg
new file mode 100644
index 000000000..b084cd74d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg
new file mode 100644
index 000000000..c0f266703
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg
new file mode 100644
index 000000000..46fb1eb05
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/success.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/success.svg
new file mode 100644
index 000000000..9bed367e1
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/success.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/warning.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/warning.svg
new file mode 100644
index 000000000..abc20f851
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/icons/zoom.svg b/wp-content/plugins/wp-mail-smtp/assets/images/icons/zoom.svg
new file mode 100644
index 000000000..1389afdb4
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/icons/zoom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg
new file mode 100644
index 000000000..5519045f9
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg
new file mode 100644
index 000000000..ae6fe144e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading.svg b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading.svg
new file mode 100644
index 000000000..84178328e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/loaders/loading.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg b/wp-content/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg
new file mode 100644
index 000000000..db8375b8b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logo.svg b/wp-content/plugins/wp-mail-smtp/assets/images/logo.svg
new file mode 100644
index 000000000..1295c8133
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png b/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png
new file mode 100644
index 000000000..459b016b2
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive.png b/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive.png
new file mode 100644
index 000000000..a3b024d3e
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/logs/archive.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png b/wp-content/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png
new file mode 100644
index 000000000..231c421c5
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/logs/single.png b/wp-content/plugins/wp-mail-smtp/assets/images/logs/single.png
new file mode 100644
index 000000000..215c956e4
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/logs/single.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/menu-icon.svg b/wp-content/plugins/wp-mail-smtp/assets/images/menu-icon.svg
new file mode 100644
index 000000000..a646b1a07
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/menu-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/pattie.svg b/wp-content/plugins/wp-mail-smtp/assets/images/pattie.svg
new file mode 100644
index 000000000..2966ee321
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/pattie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg b/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg
new file mode 100644
index 000000000..99e058acf
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge.svg b/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge.svg
new file mode 100644
index 000000000..4e1ced244
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/pro-badge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/aws.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/aws.svg
new file mode 100644
index 000000000..0338816b5
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/aws.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/brevo.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/brevo.svg
new file mode 100644
index 000000000..473cf40aa
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/brevo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/google.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/google.svg
new file mode 100644
index 000000000..22150fc5e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/google.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg
new file mode 100644
index 000000000..d4b4e24a1
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg
new file mode 100644
index 000000000..1033de4cb
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png b/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png
new file mode 100644
index 000000000..6f67bcda6
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost.png b/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost.png
new file mode 100644
index 000000000..2ef200294
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/providers/pepipost.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/php.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/php.svg
new file mode 100644
index 000000000..e036c2a4b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/postmark.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/postmark.svg
new file mode 100644
index 000000000..720dc8b4c
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/postmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg
new file mode 100644
index 000000000..194e8bcbd
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg
new file mode 100644
index 000000000..59f141311
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg
new file mode 100644
index 000000000..64b9351d5
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp.svg
new file mode 100644
index 000000000..770be9b60
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg
new file mode 100644
index 000000000..993a60439
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg
new file mode 100644
index 000000000..8039da5dc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/providers/zoho.svg b/wp-content/plugins/wp-mail-smtp/assets/images/providers/zoho.svg
new file mode 100644
index 000000000..0bd65b4fe
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/providers/zoho.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/recommended.svg b/wp-content/plugins/wp-mail-smtp/assets/images/recommended.svg
new file mode 100644
index 000000000..a2c68d934
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/images/recommended.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png
new file mode 100644
index 000000000..f9bec5cb0
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png
new file mode 100644
index 000000000..b3638dc88
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png
new file mode 100644
index 000000000..45179aa9f
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png
new file mode 100644
index 000000000..1eaa6751e
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png
new file mode 100644
index 000000000..737017592
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png
new file mode 100644
index 000000000..e12acc1cd
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png
new file mode 100644
index 000000000..22911743d
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png
new file mode 100644
index 000000000..9f68a8a9f
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png
new file mode 100644
index 000000000..ad96fa2fb
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png
new file mode 100644
index 000000000..13e704a04
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png
new file mode 100644
index 000000000..bf10c533e
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png
new file mode 100644
index 000000000..8d135f118
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/reports/icon-note.png b/wp-content/plugins/wp-mail-smtp/assets/images/reports/icon-note.png
new file mode 100644
index 000000000..f3f324276
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/reports/icon-note.png differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/images/wp-spinner.gif b/wp-content/plugins/wp-mail-smtp/assets/images/wp-spinner.gif
new file mode 100644
index 000000000..f4087c969
Binary files /dev/null and b/wp-content/plugins/wp-mail-smtp/assets/images/wp-spinner.gif differ
diff --git a/wp-content/plugins/wp-mail-smtp/assets/js/connect.js b/wp-content/plugins/wp-mail-smtp/assets/js/connect.js
new file mode 100644
index 000000000..938c2782b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/js/connect.js
@@ -0,0 +1,178 @@
+/* globals wp_mail_smtp_connect */
+
+/**
+ * Connect functionality - Upgrade plugin from Lite to Pro version.
+ *
+ * @since 2.6.0
+ */
+
+'use strict';
+
+var WPMailSMTPConnect = window.WPMailSMTPConnect || ( function( document, window, $ ) {
+
+ /**
+ * Elements reference.
+ *
+ * @since 2.6.0
+ *
+ * @type {object}
+ */
+ var el = {
+ $connectBtn: $( '#wp-mail-smtp-setting-upgrade-license-button' ),
+ $connectKey: $( '#wp-mail-smtp-setting-upgrade-license-key' )
+ };
+
+ /**
+ * Public functions and properties.
+ *
+ * @since 2.6.0
+ *
+ * @type {object}
+ */
+ var app = {
+
+ /**
+ * Start the engine.
+ *
+ * @since 2.6.0
+ */
+ init: function() {
+
+ $( app.ready );
+ },
+
+ /**
+ * Document ready.
+ *
+ * @since 2.6.0
+ */
+ ready: function() {
+
+ app.events();
+ },
+
+ /**
+ * Register JS events.
+ *
+ * @since 2.6.0
+ */
+ events: function() {
+
+ app.connectBtnClick();
+ },
+
+ /**
+ * Register connect button event.
+ *
+ * @since 2.6.0
+ */
+ connectBtnClick: function() {
+
+ el.$connectBtn.on( 'click', function() {
+ app.gotoUpgradeUrl();
+ } );
+ },
+
+ /**
+ * Get the alert arguments in case of Pro already installed.
+ *
+ * @since 2.6.0
+ *
+ * @param {object} res Ajax query result object.
+ *
+ * @returns {object} Alert arguments.
+ */
+ proAlreadyInstalled: function( res ) {
+
+ return {
+ title: wp_mail_smtp_connect.text.almost_done,
+ content: res.data.message,
+ icon: '">"+t.status+" "+t.statusText+" "+t.responseText,icon:'">' + successText + '' );
+ $plugin.find( 'span.status-label' )
+ .removeClass( 'status-active status-inactive status-download' )
+ .addClass( cssClass )
+ .removeClass( 'button button-primary button-secondary disabled' )
+ .text( statusText );
+ $btn
+ .removeClass( 'status-active status-inactive status-download' )
+ .removeClass( 'button button-primary button-secondary disabled' )
+ .addClass( cssClass ).html( buttonText );
+ } else {
+ isInstallSuccessful = false;
+
+ if (
+ res.hasOwnProperty( 'data' ) &&
+ res.data.hasOwnProperty( 0 ) &&
+ res.data[ 0 ].hasOwnProperty( 'code' )
+ ) {
+
+ // Specific server-returned error.
+ $plugin.find( '.actions' ).append( ' The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues. Please consider selecting and configuring one of the other mailers. -1&&t%1==0&&t ${this.$wpms.education.upgrade_text.replace("%mailer%",t.label)} ${this.$wpms.education.upgrade_button} ${this.$wpms.education.upgrade_bonus} ${this.$wpms.education.upgrade_doc} ${e} ${t.join(", ")} ${(0,l.__)("These features are available as part of WP Mail SMTP Pro plan.","wp-mail-smtp")} ${(0,l.gB)((0,l.__)("%1$sBonus:%2$s You can upgrade to the Pro plan and %3$ssave %5$s today%4$s, automatically applied at checkout.","wp-mail-smtp"),"","",'',"","$50")} ${this.text_one_click_setup_upgrade_content} ${this.$wpms.education.upgrade_button} ${this.$wpms.education.upgrade_bonus} ${this.$wpms.education.upgrade_doc} ${p} ${a} ${(0,l.__)("Return to Plugin Settings","wp-mail-smtp")} The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues. Please consider selecting and configuring one of the other mailers. ' .
+ sprintf(
+ wp_kses( /* Translators: %s - discount value $50. */
+ __( 'Bonus: WP Mail SMTP users get %s off regular price,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %2$s',
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/suggest-a-mailer/', 'Suggest a Mailer' ) ),
+ esc_html__( 'Suggest a Mailer', 'wp-mail-smtp' )
+ );
+ ?>
+
+ get_initiator_file_path() ),
+ esc_html( $this->get_initiator_file_line() )
+ );
+ ?>
+
+
+
+
+
+ 'search-submit' ] ); ?>
+
+
+
+
+
+
+
+ WPForms, the largest WordPress resource site, WPBeginner, the most popular lead-generation software, OptinMonster, the best WordPress analytics plugin, MonsterInsights, and more.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://wpforms.com/?utm_source=wpmailsmtpplugin&utm_medium=pluginaboutpage&utm_campaign=aboutwpmailsmtp',
+ 'https://www.wpbeginner.com/?utm_source=wpmailsmtpplugin&utm_medium=pluginaboutpage&utm_campaign=aboutwpmailsmtp',
+ 'https://optinmonster.com/?utm_source=wpmailsmtpplugin&utm_medium=pluginaboutpage&utm_campaign=aboutwpmailsmtp',
+ 'https://www.monsterinsights.com/?utm_source=wpmailsmtpplugin&utm_medium=pluginaboutpage&utm_campaign=aboutwpmailsmtp',
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://awesomemotive.com/', [ 'medium' => 'pluginaboutpage', 'content' => 'aboutwpmailsmtp' ] ) )
+ );
+ ?>
+
+
+
+
+
+ Action Scheduler
+
+
+
+
+
+
+
+
+
+
+ create the missing DB tables by clicking on this link. If this issue persists, please contact our support and provide the error message below:', 'wp-mail-smtp' ),
+ esc_url( $create_missing_tables_url ),
+ esc_url( $contact_support_url )
+ ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ );
+ echo '
+ Learn More', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ esc_url(
+ wp_mail_smtp()->get_utm_url(
+ 'https://wpmailsmtp.com/docs/a-complete-guide-to-miscellaneous-settings/#email-rate-limiting',
+ [
+ 'medium' => 'misc-settings',
+ 'content' => 'Email Rate Limiting - support article',
+ ]
+ )
+ )
+ );
+ ?>
+ 🙂
+ upgrading to PRO.', 'wp-mail-smtp' ),
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'class' => array(),
+ 'target' => array(),
+ 'rel' => array(),
+ ),
+ 'strong' => array(),
+ )
+ ),
+ esc_url( wp_mail_smtp()->get_upgrade_link( 'general-license-key' ) )
+ );
+ ?>
+
+ %s off, automatically applied at checkout!', 'wp-mail-smtp' ),
+ array(
+ 'strong' => array(),
+ 'br' => array(),
+ )
+ ),
+ '$50'
+ );
+ ?>
+
+
+
+
+
+
+ Upgrade to WP Mail SMTP Pro!', 'wp-mail-smtp' ),
+ esc_url( $upgrade_link_url )
+ ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ );
+ ?>
+
+ additional connection, you can select it here.', 'wp-mail-smtp' ),
+ add_query_arg(
+ [
+ 'tab' => 'connections',
+ ],
+ wp_mail_smtp()->get_admin()->get_admin_page_url()
+ )
+ ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ );
+ ?>
+
+
+
+
+
+
+
+
+
+ Congrats, test email was sent successfully!
+
+ Thank you for trying out WP Mail SMTP. We're on a mission to make sure that your emails actually get delivered.
+
+ If you find this free plugin useful, please consider giving WP Mail SMTP Pro a try!
+
+
+
+ Jared Atchison
+ Email Logging with Email Resending
+ WP Mail SMTP users get $50 off, automatically applied at checkout
+
+ submit a support ticket.', 'wp-mail-smtp' ),
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'rel' => array(),
+ 'target' => array(),
+ ),
+ )
+ ),
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/account/support/', [ 'medium' => 'email-test', 'content' => 'submit a support ticket' ] ) )
+ );
+ ?>
+
+
+
+ upgrade to WP Mail SMTP Pro. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com.', 'wp-mail-smtp' ),
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'target' => array(),
+ 'rel' => array(),
+ ),
+ )
+ ),
+ esc_url( wp_mail_smtp()->get_upgrade_link( 'email-test-fail' ) )
+ )
+ ?>
+
+
+
+ %s off regular pricing, automatically applied at checkout!', 'wp-mail-smtp' ),
+ array(
+ 'span' => array(
+ 'class' => array(),
+ ),
+ )
+ ),
+ '$50'
+ );
+ ?>
+
+ limited support on the WordPress.org support forums. You can create a support thread there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider upgrading to WP Mail SMTP Pro to access our priority support ticket system.', 'wp-mail-smtp' ),
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'rel' => array(),
+ 'target' => array(),
+ ),
+ )
+ ),
+ 'https://wordpress.org/support/topic/wp-mail-smtp-support-policy/',
+ 'https://wordpress.org/support/plugin/wp-mail-smtp/',
+ esc_url( wp_mail_smtp()->get_upgrade_link( 'email-test-fail' ) )
+ );
+ ?>
+
+
+
+
+
+ ', $current['text'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
+
+ ', $pro['text'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
+
+ %s off regular price, automatically applied at checkout.', 'wp-mail-smtp' ),
+ [
+ 'span' => [
+ 'class' => [],
+ ],
+ ]
+ ),
+ '$50'
+ );
+ ?>
+
+ EMAILING DISABLED: The %s is currently blocking all emails from being sent.', 'wp-mail-smtp' ),
+ esc_html( 'WP Mail SMTP v' . WPMS_PLUGIN_VER )
+ );
+
+ if ( Options::init()->is_const_defined( 'general', 'do_not_send' ) ) {
+ $notices[] = sprintf(
+ /* translators: %1$s - constant name; %2$s - constant value. */
+ __( 'To send emails, change the value of the %1$s constant to %2$s.', 'wp-mail-smtp' ),
+ '
+ Heads up! The last email your site attempted to send was unsuccessful.', 'wp-mail-smtp' ),
+ [
+ 'strong' => [],
+ ]
+ );
+ ?>
+
+ get_admin()->is_admin_page() ) {
+ printf(
+ wp_kses( /* translators: %s - plugin admin page URL. */
+ __( 'Please review your WP Mail SMTP settings in plugin admin area.' ) . ' ',
+ array(
+ 'a' => array(
+ 'href' => array(),
+ ),
+ )
+ ),
+ esc_url( wp_mail_smtp()->get_admin()->get_admin_page_url() )
+ );
+ }
+
+ printf(
+ wp_kses( /* translators: %s - URL to the debug events page. */
+ __( 'For more details please try running an Email Test or reading the latest error event.' ),
+ [
+ 'a' => [
+ 'href' => [],
+ ],
+ ]
+ ),
+ esc_url( DebugEvents::get_page_url() )
+ );
+ ?>
+ %2$s
+
+
+
+
+
+
+
+
+ Follow these instructions.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,H.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),H.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!H.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),Ue=Be,Ye=qe;Ye.positioners=Ue;var Ge=H.valueOrDefault;function Xe(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?H.merge(e[t][a],[Re.getScaleDefaults(r),o]):H.merge(e[t][a],o)}else H._merger(t,e,n,i)}})}function Ke(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||Object.create(null),r=n[t];"scales"===t?e[t]=Xe(a,r):"scale"===t?e[t]=H.merge(a,[Re.getScaleDefaults(r.type),r]):H._merger(t,e,n,i)}})}function Ze(t){var e=t.options;H.each(t.scales,(function(e){pe.removeBox(t,e)})),e=Ke(N.global,N[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function $e(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(H.findIndex(t,a)>=0);return i}function Je(t){return"top"===t||"bottom"===t}function Qe(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}N._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var tn=function(t,e){return this.construct(t,e),this};H.extend(tn.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||Object.create(null)).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Ke(N.global,N[t.type],t.options||{}),t}(e);var i=Oe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=H.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,tn.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),H.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return H.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(H.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:H.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",H.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;H.each(e.xAxes,(function(t,n){t.id||(t.id=$e(e.xAxes,"x-axis-",n))})),H.each(e.yAxes,(function(t,n){t.id||(t.id=$e(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),H.each(i,(function(e){var i=e.options,r=i.id,o=Ge(i.type,e.dtype);Je(i.position)!==Je(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Re.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),H.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Re.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=H.options._parseFont(n),s=Bn(n.fontColor,N.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",H.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:H.noop}),Kn=Vn;Xn._defaults=Kn;var Zn=H._deprecated,$n=H.options.resolve,Jn=H.valueOrDefault,Qn=Number.MIN_SAFE_INTEGER||-9007199254740991,ti=Number.MAX_SAFE_INTEGER||9007199254740991,ei={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ni=Object.keys(ei);function ii(t,e){return t-e}function ai(t){return H.valueOrDefault(t.time.min,t.ticks.min)}function ri(t){return H.valueOrDefault(t.time.max,t.ticks.max)}function oi(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||N.global.defaultColor,o&&s&&r.length&&(H.canvas.clipArea(u,t.chartArea),ki(u,r,o,a,s,i._loop),H.canvas.unclipArea(u)))}},Mi=H.rtl.getRtlAdapter,Si=H.noop,Ci=H.valueOrDefault;function Pi(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}N._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;ewp-config.php
file.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsInputText.vue:36
+ __( 'Copy input value', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsInputText.vue:37
+ __( 'Copied!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsInputText.vue:63
+ __( 'The value entered does not match the required format', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepCheckConfiguration.vue:10
+ __( 'Checking Mailer Configuration', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepCheckConfiguration.vue:11
+ __( 'We\'re running some tests in the background to make sure everything is set up properly.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepCheckConfiguration.vue:12
+ __( 'Checking mailer configuration image', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationFailure.vue:11
+ __( 'Whoops, looks like things aren’t configured properly.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationFailure.vue:12
+ __( 'We just tried to send a test email, but something prevented that from working. To see more details about the issue we detected, as well as our suggestions to fix it, please start troubleshooting.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationFailure.vue:13
+ __( 'Start Troubleshooting', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationFailure.vue:14
+ __( 'Send us Feedback', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationFailure.vue:15
+ __( 'Finish Setup', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:12
+ __( 'Import data from your current plugins', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:13
+ __( 'We have detected other SMTP plugins installed on your website. Select which plugin\'s data you would like to import to WP Mail SMTP.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:14
+ __( 'Import Data and Continue', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:17
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:15
+ __( 'Skip this Step', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:20
+ __( 'Easy WP SMTP', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:27
+ __( 'FluentSMTP', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:34
+ __( 'Post SMTP Mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:41
+ __( 'SMTP Mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepImport.vue:48
+ __( 'WP SMTP', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:14
+ __( 'Help Improve WP Mail SMTP + Smart Recommendations', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:15
+ __( 'Get helpful suggestions from WP Mail SMTP on how to optimize your email deliverability and grow your business.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:19
+ __( 'Your Email Address', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:20
+ __( 'Your email is needed, so you can receive recommendations.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:21
+ __( 'Help make WP Mail SMTP better for everyone', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:22
+ __( 'Yes, count me in', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepHelpImprove.vue:23
+ __( 'By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Postmark.vue:13
+ __( 'Server API Token', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Postmark.vue:14
+ __( 'Message Stream ID', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Postmark.vue:16
+ /* Translators: Link to the Postmark API settings. */
+ __( '%1$sFollow this link%2$s to get a Server API Token for Postmark.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Postmark.vue:18
+ /* Translators: Link to the Postmark Message Stream ID settings. */
+ __( 'Message Stream ID is optional. By default outbound (Default Transactional Stream) will be used. More information can be found in our %1$sPostmark documentation%2$s.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Postmark.vue:27
+ __( 'Read how to set up Postmark', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:13
+ __( 'Configure Email Logs', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:14
+ __( 'Enable these powerful logging features for more control of your WordPress emails.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:17
+ __( 'Store the content for all sent emails', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:18
+ __( 'This option must be enabled if you\'d like to be able to resend emails. Please be aware that all email content will be stored in your WordPress database. This may include sensitive data, passwords, and personal details.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:19
+ __( 'Save file attachments sent from WordPress', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:20
+ __( 'All file attachments sent from your site will be saved to the WordPress Uploads folder. Please note that this may reduce available disk space on your server.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:21
+ __( 'Track when an email is opened', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:22
+ __( 'See which emails were opened by the recipients. Email open tracking works with emails that are sent in HTML format.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:23
+ __( 'Track when a link in an email is clicked', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigureEmailLogs.vue:24
+ __( 'See which links were clicked in emails sent from your WordPress site. Click tracking works with emails that are sent in HTML format.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Zoho.vue:17
+ __( 'The data center location used by your Zoho account.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:17
+ __( 'Client ID', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:18
+ __( 'Client Secret', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Outlook.vue:17
+ __( 'Redirect URI', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:20
+ __( 'Authorization', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Zoho.vue:26
+ __( 'Read how to set up Zoho Mail', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendlayer.vue:15
+ /* Translators: Link to the SendLayer API settings. */
+ __( '%1$sFollow this link%2$s to get an API Key for SendLayer.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendlayer.vue:24
+ __( 'Get Started with SendLayer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendlayer.vue:25
+ __( 'Read how to set up SendLayer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:14
+ __( 'Sender Name', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:16
+ /* Translators: Link to the SMTP.com API settings. */
+ __( '%1$sFollow this link%2$s to get an API Key for SMTP.com.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:18
+ /* Translators: Link to the SMTP.com Senders/Channel settings. */
+ __( '%1$sFollow this link%2$s to get a Sender Name for SMTP.com.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:27
+ __( 'Get Started with SMTP.com', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:28
+ __( 'Read how to set up SMTP.com', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:29
+ __( 'Transparency and Disclosure', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SmtpCom.vue:31
+ __( 'We believe in full transparency. The SMTP.com links above are tracking links as part of our partnership with SMTP (j2 Global). We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:100
+ __( 'How was your WP Mail SMTP setup experience?', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:101
+ __( 'Our goal is to make your SMTP setup as simple and straightforward as possible. We\'d love to know how this process went for you!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:13
+ __( 'Congrats, you’ve successfully set up WP Mail SMTP!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:14
+ __( 'Here’s what to do next:', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:15
+ __( 'Check out our other free WordPress plugins:', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:16
+ __( 'Upgrade to Unlock Powerful SMTP Features', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:17
+ __( 'Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is used by over 3,000,000 websites.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:21
+ __( 'Upgrade to Pro Today', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:22
+ __( 'Send a Test Email', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:186
+ /* Translators: Different bold styles and discount value (%5$s). */
+ __( '%1$sBonus:%2$s You can upgrade to the Pro plan and %3$ssave %5$s today%4$s, automatically applied at checkout.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:27
+ __( 'Star icon', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:42
+ __( 'Thanks for the feedback!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:45
+ /* Translators: %1$s and %2$s are HTML bold tags; %3$s is a new line HTML tag; %4$s are 5 golden star icons in HTML. */
+ __( 'Help us spread the word %1$sby giving WP Mail SMTP a 5-star rating %3$s(%4$s) on WordPress.org%2$s. Thanks for your support and we look forward to bringing you more awesome features.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:50
+ __( 'Rate on WordPress.org', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:63
+ __( 'What could we do to improve?', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:64
+ __( 'We\'re sorry things didn\'t go smoothly for you, and want to keep improving. Please let us know any specific parts of this process that you think could be better. We really appreciate any details you\'re willing to share!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:68
+ __( 'Yes, I give WP Mail SMTP permission to contact me for any follow up questions.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepConfigurationSuccess.vue:76
+ __( 'Submit Feedback', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:16
+ /* Translators: Link to the Sendinblue API settings. */
+ __( '%1$sFollow this link%2$s to get an API Key for Sendinblue.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:18
+ /* Translators: Link to the Sendinblue doc page on wpmailsmtp.com. */
+ __( 'Please input the sending domain/subdomain you configured in your Sendinblue dashboard. More information can be found in our %1$sSendinblue documentation%2$s', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:27
+ __( 'Get Started with Sendinblue', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:28
+ __( 'Read how to set up Sendinblue', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:31
+ __( 'We believe in full transparency. The Sendinblue links above are tracking links as part of our partnership with Sendinblue. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:15
+ __( 'SMTP Host', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:16
+ __( 'Encryption', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:17
+ __( 'SMTP Port', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:18
+ __( 'Auto TLS', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:19
+ __( 'Enable Auto TLS', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:20
+ __( 'By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:21
+ __( 'Authentication', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:22
+ __( 'Enable Authentication', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:23
+ __( 'SMTP Username', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:24
+ __( 'SMTP Password', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:31
+ __( 'For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:37
+ __( 'None', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:42
+ __( 'SSL', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Smtp.vue:47
+ __( 'TLS', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:16
+ __( 'Access Key ID', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:17
+ __( 'Secret Access Key', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:19
+ __( 'SES Identities', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:20
+ __( 'Please select the Amazon SES API region which is the closest to where your website is hosted. This can help to decrease network latency between your site and Amazon SES, which will speed up email sending.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:29
+ __( 'Read how to set up Amazon SES', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:30
+ __( 'Amazon SES requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out ', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:31
+ __( 'WPBeginner\'s tutorial on how to set up SSL', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/AmazonSES.vue:32
+ __( 'If you\'d prefer not to set up SSL, or need an SMTP solution in the meantime, please go back and select a different mailer option.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:13
+ __( 'Choose Your SMTP Mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:147
+ __( 'Mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:15
+ /* Translators: Link to the SMTP Mailer docs page. */
+ __( 'Which mailer would you like to use to send emails? Not sure which mailer to choose? Check out our %1$scomplete mailer guide%2$s for details on each option.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:157
+ __( 'I Understand, Continue', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:158
+ __( 'Choose a Different Mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:18
+ __( 'Recommended Mailers', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:19
+ __( 'Your mailer is already configured in a WP Mail SMTP constant, so the options below have been disabled. To change your mailer, please edit or remove the WPMS_MAILER
constant in your wp-config.php
file.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:202
+ __( 'is a PRO Feature', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepChooseMailer.vue:71
+ __( 'Microsoft 365 / Outlook', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:105
+ __( 'Successful Upgrade!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:105
+ __( 'Upgrade Failed!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:13
+ __( 'Enter your WP Mail SMTP License Key', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:15
+ /* Translators: %1$s and %2$s are bold tags. */
+ __( 'You\'re currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:16
+ __( 'Continue', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:181
+ __( 'Would you like to purchase the following features now?', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:182
+ __( 'These features are available as part of WP Mail SMTP Pro plan.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:197
+ __( 'Purchase Now', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:198
+ __( 'I\'ll do it later', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:20
+ /* Translators: Link to the WPMailSMTP.com pricing page. */
+ __( 'To unlock selected features, %1$sUpgrade to Pro%2$s and enter your license key below.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:24
+ __( 'Enhanced Weekly Email Summary', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:26
+ /* Translators: bold HTML tags. */
+ __( 'Already purchased? Enter your license key below to connect with %1$sWP Mail SMTP Pro%2$s!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:27
+ __( 'Enter your license key below to unlock plugin updates!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:44
+ __( 'Verify License Key', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:28
+ __( 'Connect', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:45
+ __( 'The License Key format is incorrect. Please enter a valid key and try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:30
+ __( 'Your license was successfully verified! You are ready for the next step.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepLicense.vue:38
+ __( 'Pro badge', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:43
+ __( 'License key input', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:42
+ __( 'Paste your license key here', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:141
+ __( 'Successful Verification!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:151
+ __( 'Verification Error!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:19
+ __( 'Authorized Redirect URI', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:29
+ __( 'Select which email address you would like to send your emails from.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:29
+ __( 'Read how to set up the Gmail mailer', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SparkPost.vue:17
+ /* Translators: Link to the SparkPost documentation. */
+ __( 'Select your SparkPost account region. %1$sMore information%2$s on SparkPost.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SparkPost.vue:26
+ __( 'Read how to set up SparkPost', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SparkPost.vue:55
+ /* Translators: Link to the SparkPost Account API section. */
+ __( '%1$sFollow this link%2$s to get an API Key for SparkPost.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Outlook.vue:15
+ __( 'Application ID', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Outlook.vue:16
+ __( 'Application Password', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Outlook.vue:19
+ __( 'Read how to set up Microsoft Outlook / 365', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Outlook.vue:20
+ __( 'Outlook / 365 requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out ', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsInputNumber.vue:38
+ /* Translators: Minimum and maximum number that can be used. */
+ __( 'Please enter a value between %1$s and %2$s', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsInputNumber.vue:39
+ __( 'Value has to be a round number', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:114
+ __( 'There was an error while processing the authentication request. Please try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:120
+ __( 'There was an error while processing the authentication request. Please recheck your Client ID and Client Secret and try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:128
+ __( 'There was an error while processing the authentication request. The nonce is invalid. Please try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:132
+ __( 'There was an error while processing the authentication request. The authorization code is missing. Please try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:135
+ __( 'There was an error while processing the authentication request. Please recheck your Region, Client ID and Client Secret and try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:138
+ __( 'You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:144
+ __( 'You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:147
+ __( 'You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:153
+ __( 'Successful Authorization', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:153
+ __( 'Authorization Error!', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:23
+ /* Translators: name of the oAuth provider (Google, Microsoft, ...). */
+ __( 'Connect to %s', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:25
+ __( 'Before continuing, you\'ll need to allow this plugin to send emails using your %s account.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:26
+ __( 'Remove OAuth Connection', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:28
+ /* Translators: link to the Google documentation page. */
+ __( 'If you want to use a different From Email address you can setup a Google email alias. %1$sFollow these instructions%2$s, then select the alias in the From Email section below.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:30
+ /* Translators: name of the oAuth provider (Google, Microsoft, ...). */
+ __( 'Removing this OAuth connection will give you the ability to redo the OAuth connection or connect to different %s account.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:31
+ __( 'Connected as', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:109
+ __( 'There was an error while processing the authentication request. The state key is invalid. Please try again.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:23
+ __( 'Please enter a domain', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:24
+ __( 'Please enter a valid email address', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:28
+ __( 'Enter the domain name to verify it on Amazon SES and generate the required DNS CNAME records.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:29
+ __( 'Enter a valid email address. A verification email will be sent to the email address you entered.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:33
+ /* Translators: Email address. */
+ __( 'Please check the inbox of %s for a confirmation email.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:36
+ __( 'Verify Email', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:41
+ __( 'No registered domains or emails.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:42
+ __( 'You will not be able to send emails until you verify at least one domain or email address for the selected Amazon SES Region.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:43
+ __( 'View DNS', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:44
+ __( 'Resend', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:45
+ __( 'Here are the domains and email addresses that have been verified and can be used as the From Email.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:46
+ __( 'Verify SES Identity', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:47
+ __( 'Add New SES Identity', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:48
+ __( 'Name', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:49
+ __( 'Value', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:51
+ /* Translators: Link to Amazon SES documentation. */
+ __( 'Please add these CNAME records to your domain\'s DNS settings. For information on how to add CNAME DNS records, please refer to the %1$sAmazon SES documentation%2$s.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:56
+ __( 'Verify Domain', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsAmazonSESIdentities.vue:60
+ __( 'Verify Email Address', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/plugins/components/PluginItem.vue:23
+ __( 'Install', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/plugins/components/PluginItem.vue:26
+ __( 'Installed', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/plugins/components/PluginItem.vue:30
+ __( 'Activated', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/misc/SpinLoader.vue:19
+ __( 'Loading', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepPluginFeatures.vue:24
+ __( 'WordPress SEO Toolkit', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepPluginFeatures.vue:25
+ __( 'Improve your website\'s SEO ranking with our toolkit.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepPluginFeatures.vue:187
+ __( 'The following plugin will be installed for free:', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendgrid.vue:30
+ __( 'Read how to set up SendGrid', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:16
+ /* Translators: Link to the Sendinblue API settings. */
+ __( '%1$sFollow this link%2$s to get an API Key for Brevo.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:18
+ /* Translators: Link to the Sendinblue doc page on wpmailsmtp.com. */
+ __( 'Please input the sending domain/subdomain you configured in your Brevo dashboard. More information can be found in our %1$sBrevo documentation%2$s', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:27
+ __( 'Get Started with Brevo', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:28
+ __( 'Read how to set up Brevo', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Sendinblue.vue:31
+ __( 'We believe in full transparency. The Brevo links above are tracking links as part of our partnership with Brevo. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Mailgun.vue:14
+ __( 'Mailgun API Key', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Mailgun.vue:18
+ /* Translators: Link to the Mailgun API settings. */
+ __( '%1$sFollow this link%2$s to get a Mailgun API Key. Generate a key in the "Mailgun API Keys" section.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepPluginFeatures.vue:25
+ __( 'Improve your SEO rankings with the All in One SEO plugin.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:15
+ __( 'One-Click Setup', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:16
+ __( 'Provides a quick and easy way to connect to Google that doesn\'t require creating your own app.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:30
+ __( 'Enabled', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:31
+ __( 'Disabled', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:24
+ __( 'Sign in with Google', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:123
+ __( 'There was an error while processing the authentication request.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:142
+ __( 'Now you can continue mailer configuration.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:40
+ __( 'Gmail mailer requires a valid Easy WP SMTP Pro license. Please activate your license key.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:40
+ __( 'One-Click Setup for Google Mailer requires an active license. Emails are currently not being sent.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:40
+ __( 'One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this one-click setup.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:40
+ __( 'One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this one-click setup, please.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:41
+ __( 'One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this One-Click Setup, please.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:147
+ __( 'You have successfully connected your site with your Gmail account. This site will now send emails via your Gmail account.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/settings/components/input/SettingsOAuthConnection.vue:141
+ __( 'You have successfully connected your site with your Gmail account. Now you can start sending emails through Gmail.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:28
+ __( 'The email address that emails are sent from. You can use only connected email address or ', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:28
+ __( 'The email address that emails are sent from. You can use only connected email address or his alias.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:28
+ __( 'The email address that emails are sent from. The email address that emails are sent from. You can use only the connected email address or its alias.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:28
+ __( 'The email address that emails are sent from. You can use only the connected email address or its alias.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:32
+ __( 'One-Click Setup for Google Mailer
is a Pro Feature', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/Gmail.vue:33
+ __( 'We\'re sorry, One-Click Setup for Google Mailer is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/WizardStepPluginFeatures.vue:23
+ __( 'Install the WPForms plugin and create beautiful contact forms with just a few clicks.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SMTP2GO.vue:15
+ /* Translators: Link to the SMTP2GO API settings. */
+ __( 'Generate an API key on the Sending → API Keys page in your %1$scontrol panel%2$s.', 'wp-mail-smtp' ),
+
+ // Reference: src/modules/setup-wizard/components/steps/configure-mailer/SMTP2GO.vue:24
+ __( 'Read how to set up SMTP2GO', 'wp-mail-smtp' )
+);
+/* THIS IS THE END OF THE GENERATED FILE */
diff --git a/wp-content/plugins/wp-mail-smtp/assets/languages/wp-mail-smtp.pot b/wp-content/plugins/wp-mail-smtp/assets/languages/wp-mail-smtp.pot
new file mode 100644
index 000000000..17804790d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/languages/wp-mail-smtp.pot
@@ -0,0 +1,5191 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: WP Mail SMTP 4.1.1\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
+"Last-Translator: FULL NAME wp_mail()
function to use Gmail/Mailgun/SendGrid/SMTP instead of the default mail()
and creates an options page to manage the settings."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:5
+msgid "Error Message:"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:8
+#: src/Admin/Pages/DebugEventsTab.php:152
+#: src/Connect.php:58
+msgid "OK"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:11
+#: src/Admin/Area.php:521
+#: src/Admin/Pages/DebugEventsTab.php:153
+msgid "Heads up!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:14
+msgid "Please fill out all the required fields to continue."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:17
+msgid "Settings Updated"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:20
+msgid "Could Not Save Changes"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:23
+msgid "Return to Mailer Settings"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:26
+msgid "Whoops, we found an issue!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:29
+msgid "It looks like something went wrong..."
+msgstr ""
+
+#. Translators: Current PHP version and recommended PHP version.
+#: assets/languages/wp-mail-smtp-vue.php:33
+msgid "WP Mail SMTP has detected that your site is running an outdated, insecure version of PHP (%1$s), which could be putting your site at risk for being hacked. WordPress stopped supporting your PHP version in April, 2019. Updating to the recommended version (PHP %2$s) only takes a few minutes and will make your website significantly faster and more secure."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:36
+msgid "Yikes! PHP Update Required"
+msgstr ""
+
+#. Translators: Current PHP version and recommended PHP version.
+#: assets/languages/wp-mail-smtp-vue.php:40
+msgid "WP Mail SMTP has detected that your site is running an outdated, insecure version of PHP (%1$s). Some mailers require at least PHP version 5.6. Updating to the recommended version (PHP %2$s) only takes a few minutes and will make your website significantly faster and more secure."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:43
+msgid "Yikes! WordPress Update Required"
+msgstr ""
+
+#. Translators: Current WordPress version.
+#: assets/languages/wp-mail-smtp-vue.php:47
+msgid "WP Mail SMTP has detected that your site is running an outdated version of WordPress (%s). WP Mail SMTP requires at least WordPress version 4.9."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:50
+msgid "Return to Plugin Settings"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:53
+msgid "It looks like we can't load oAuth redirect."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:56
+msgid "It looks like we can't load existing settings."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:60
+msgid "It looks like we can't load oAuth connected data."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:63
+msgid "It looks like we can't remove oAuth connection."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:66
+msgid "It looks like we can't retrieve the Amazon SES Identities."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:70
+msgid "It looks like we can't register the Amazon SES Identity."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:73
+msgid "It looks like we can't perform the mailer configuration check."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:76
+msgid "It looks like we can't send the feedback."
+msgstr ""
+
+#. Translators: Error status and error text.
+#: assets/languages/wp-mail-smtp-vue.php:82
+msgid "%1$s, %2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:86
+msgid "You appear to be offline."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:89
+msgid "It looks like we can't save the settings."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:92
+msgid "Network error encountered. Settings not saved."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:95
+msgid "It looks like we can't import the plugin settings."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:98
+msgid "Network error encountered. SMTP plugin import failed!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:101
+msgid "It looks like we can't load authentication details."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:104
+msgid "It looks like we can't remove OAuth connection."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:107
+msgid "It looks like we can't load the settings."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:110
+msgid "It looks like we can't retrieve Amazon SES Identities."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:113
+msgid "Can't retrieve Amazon SES Identities."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:116
+msgid "Can't register the Amazon SES Identity"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:119
+msgid "It looks like the plugin installation failed!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:122
+msgid "It looks like we can't install the plugin."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:125
+msgid "You appear to be offline. Plugin not installed."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:128
+msgid "Can't fetch plugins information."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:131
+msgid "It looks like we can't fetch plugins information."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:134
+msgid "You appear to be offline. Plugin information not retrieved."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:137
+msgid "Welcome to the WP Mail SMTP Setup Wizard!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:140
+msgid "We’ll guide you through each step needed to get WP Mail SMTP fully set up on your site."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:143
+msgid "Let's Get Started"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:146
+#: src/Admin/SetupWizard.php:294
+msgid "Go back to the Dashboard"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:149
+msgid "Which email features do you want to enable?"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:152
+msgid "Make sure you're getting the most out of WP Mail SMTP. Just check all of the features you'd like to use, and we'll go ahead and enable those for you."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:156
+msgid "Save and Continue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:161
+msgid "Previous Step"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:164
+msgid "The following plugin will be installed for free: WPForms"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:167
+msgid "Improved Email Deliverability"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:170
+msgid "Ensure your emails are sent successfully and reliably."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:173
+msgid "Email Error Tracking"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:176
+msgid "Easily spot errors causing delivery issues."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:179
+msgid "Smart Contact Form"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:182
+msgid "Create beautiful contact forms with just a few clicks."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:185
+msgid "Detailed Email Logs"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:188
+msgid "Keep records of every email that's sent out from your website."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:191
+msgid "Instant Email Alerts"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:194
+msgid "Get notifications via email, SMS, Slack, or webhook when emails fail to send."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:197
+msgid "Complete Email Reports"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:200
+msgid "See the delivery status, track opens and clicks, and create deliverability graphs."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:203
+msgid "Weekly Email Summary"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:206
+msgid "Get statistics about emails you've sent."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:209
+msgid "Manage Default Notifications"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:212
+msgid "Control which email notifications your WordPress site sends."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:215
+msgid "Multisite Network Settings"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:218
+msgid "Save time with powerful WordPress Multisite controls."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:221
+msgid "Private API Key"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:224
+#: src/Providers/Mailgun/Options.php:97
+msgid "Domain Name"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:228
+#: src/Providers/Mailgun/Options.php:122
+#: src/Providers/SparkPost/Options.php:122
+msgid "Region"
+msgstr ""
+
+#. Translators: Link to the Mailgun API settings.
+#: assets/languages/wp-mail-smtp-vue.php:232
+msgid "%1$sFollow this link%2$s to get a Private API Key from Mailgun."
+msgstr ""
+
+#. Translators: Link to the Mailgun Domain settings.
+#: assets/languages/wp-mail-smtp-vue.php:236
+msgid "%1$sFollow this link%2$s to get a Domain Name from Mailgun."
+msgstr ""
+
+#. Translators: Link to the Mailgun documentation.
+#: assets/languages/wp-mail-smtp-vue.php:240
+msgid "Define which endpoint you want to use for sending messages. If you are operating under EU laws, you may be required to use EU region. %1$sMore information%2$s on Mailgun.com."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:245
+#: src/Admin/ConnectionSettings.php:127
+#: src/Admin/Pages/ExportTab.php:111
+msgid "From Name"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:250
+#: src/Admin/ConnectionSettings.php:146
+msgid "Force From Name"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:255
+#: src/Admin/ConnectionSettings.php:70
+#: src/Admin/Pages/SmartRoutingTab.php:180
+#: src/Admin/Pages/SmartRoutingTab.php:210
+msgid "From Email"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:260
+#: src/Admin/ConnectionSettings.php:95
+msgid "Force From Email"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:265
+msgid "If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:270
+msgid "If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:275
+#: src/Admin/ConnectionSettings.php:139
+msgid "The name that emails are sent from."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:279
+#: src/Admin/ConnectionSettings.php:82
+msgid "The email address that emails are sent from."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:282
+msgid "Read how to set up Mailgun"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:285
+#: src/Providers/Mailgun/Options.php:132
+#: src/Providers/SparkPost/Options.php:132
+msgid "US"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:288
+#: src/Providers/Mailgun/Options.php:141
+#: src/Providers/SparkPost/Options.php:141
+msgid "EU"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:291
+msgid "Close and exit the Setup Wizard"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:294
+#: src/Providers/PepipostAPI/Options.php:96
+#: src/Providers/Sendgrid/Options.php:67
+#: src/Providers/Sendinblue/Options.php:111
+#: src/Providers/Sendlayer/Options.php:101
+#: src/Providers/SMTP2GO/Options.php:93
+#: src/Providers/SMTPcom/Options.php:106
+#: src/Providers/SparkPost/Options.php:87
+msgid "API Key"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:297
+#: src/Providers/Sendgrid/Options.php:107
+#: src/Providers/Sendinblue/Options.php:143
+msgid "Sending Domain"
+msgstr ""
+
+#. Translators: Link to the Sendgrid API settings.
+#: assets/languages/wp-mail-smtp-vue.php:301
+msgid "%1$sFollow this link%2$s to get an API Key for Sendgrid."
+msgstr ""
+
+#. Translators: italic styling.
+#: assets/languages/wp-mail-smtp-vue.php:305
+msgid "To send emails you will need only a %1$sMail Send%2$s access level for this API key."
+msgstr ""
+
+#. Translators: Link to the Sendgrid doc page on wpmailsmtp.com.
+#: assets/languages/wp-mail-smtp-vue.php:309
+msgid "Please input the sending domain/subdomain you configured in your SendGrid dashboard. More information can be found in our %1$sSendGrid documentation%2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:312
+msgid "Read how to set up Sendgrid"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:315
+#: src/Admin/SetupWizard.php:477
+msgid "WP Mail SMTP logo"
+msgstr ""
+
+#. Translators: %1$s - the number of current step, %2$s - number of all steps.
+#: assets/languages/wp-mail-smtp-vue.php:319
+msgid "Step %1$s of %2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:322
+msgid "Configure Mailer Settings"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:325
+msgid "Below, we'll show you all of the settings required to set up this mailer."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:332
+msgid "This setting is already configured with the WP Mail SMTP constant. To change it, please edit or remove the constant in your
wp-config.php
file."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:335
+msgid "Copy input value"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:338
+msgid "Copied!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:341
+msgid "The value entered does not match the required format"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:344
+msgid "Checking Mailer Configuration"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:347
+msgid "We're running some tests in the background to make sure everything is set up properly."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:350
+msgid "Checking mailer configuration image"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:353
+msgid "Whoops, looks like things aren’t configured properly."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:356
+msgid "We just tried to send a test email, but something prevented that from working. To see more details about the issue we detected, as well as our suggestions to fix it, please start troubleshooting."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:359
+msgid "Start Troubleshooting"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:362
+msgid "Send us Feedback"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:365
+msgid "Finish Setup"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:368
+msgid "Import data from your current plugins"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:371
+msgid "We have detected other SMTP plugins installed on your website. Select which plugin's data you would like to import to WP Mail SMTP."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:374
+msgid "Import Data and Continue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:378
+msgid "Skip this Step"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:381
+msgid "Easy WP SMTP"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:384
+msgid "FluentSMTP"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:387
+msgid "Post SMTP Mailer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:390
+msgid "SMTP Mailer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:393
+msgid "WP SMTP"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:396
+msgid "Help Improve WP Mail SMTP + Smart Recommendations"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:399
+msgid "Get helpful suggestions from WP Mail SMTP on how to optimize your email deliverability and grow your business."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:402
+msgid "Your Email Address"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:405
+msgid "Your email is needed, so you can receive recommendations."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:408
+msgid "Help make WP Mail SMTP better for everyone"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:411
+msgid "Yes, count me in"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:414
+#: src/Admin/Pages/MiscTab.php:254
+msgid "By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:417
+#: src/Providers/Postmark/Options.php:89
+msgid "Server API Token"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:420
+#: src/Providers/Postmark/Options.php:118
+msgid "Message Stream ID"
+msgstr ""
+
+#. Translators: Link to the Postmark API settings.
+#: assets/languages/wp-mail-smtp-vue.php:424
+msgid "%1$sFollow this link%2$s to get a Server API Token for Postmark."
+msgstr ""
+
+#. Translators: Link to the Postmark Message Stream ID settings.
+#: assets/languages/wp-mail-smtp-vue.php:428
+msgid "Message Stream ID is optional. By default outbound (Default Transactional Stream) will be used. More information can be found in our %1$sPostmark documentation%2$s."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:431
+msgid "Read how to set up Postmark"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:434
+msgid "Configure Email Logs"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:437
+msgid "Enable these powerful logging features for more control of your WordPress emails."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:440
+msgid "Store the content for all sent emails"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:443
+msgid "This option must be enabled if you'd like to be able to resend emails. Please be aware that all email content will be stored in your WordPress database. This may include sensitive data, passwords, and personal details."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:446
+msgid "Save file attachments sent from WordPress"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:449
+msgid "All file attachments sent from your site will be saved to the WordPress Uploads folder. Please note that this may reduce available disk space on your server."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:452
+msgid "Track when an email is opened"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:455
+msgid "See which emails were opened by the recipients. Email open tracking works with emails that are sent in HTML format."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:458
+msgid "Track when a link in an email is clicked"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:461
+msgid "See which links were clicked in emails sent from your WordPress site. Click tracking works with emails that are sent in HTML format."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:464
+msgid "The data center location used by your Zoho account."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:467
+#: src/Providers/Gmail/Options.php:113
+msgid "Client ID"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:470
+#: src/Providers/Gmail/Options.php:128
+msgid "Client Secret"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:473
+msgid "Redirect URI"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:476
+#: src/Providers/Gmail/Options.php:172
+msgid "Authorization"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:479
+msgid "Read how to set up Zoho Mail"
+msgstr ""
+
+#. Translators: Link to the SendLayer API settings.
+#: assets/languages/wp-mail-smtp-vue.php:483
+msgid "%1$sFollow this link%2$s to get an API Key for SendLayer."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:486
+#: src/Providers/Sendlayer/Options.php:64
+msgid "Get Started with SendLayer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:489
+msgid "Read how to set up SendLayer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:492
+#: src/Providers/SMTPcom/Options.php:137
+msgid "Sender Name"
+msgstr ""
+
+#. Translators: Link to the SMTP.com API settings.
+#: assets/languages/wp-mail-smtp-vue.php:496
+msgid "%1$sFollow this link%2$s to get an API Key for SMTP.com."
+msgstr ""
+
+#. Translators: Link to the SMTP.com Senders/Channel settings.
+#: assets/languages/wp-mail-smtp-vue.php:500
+msgid "%1$sFollow this link%2$s to get a Sender Name for SMTP.com."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:503
+#: src/Providers/SMTPcom/Options.php:68
+msgid "Get Started with SMTP.com"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:506
+msgid "Read how to set up SMTP.com"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:509
+#: src/Providers/Sendinblue/Options.php:67
+#: src/Providers/SMTPcom/Options.php:73
+msgid "Transparency and Disclosure"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:512
+#: src/Providers/SMTPcom/Options.php:75
+msgid "We believe in full transparency. The SMTP.com links above are tracking links as part of our partnership with SMTP (j2 Global). We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:515
+msgid "How was your WP Mail SMTP setup experience?"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:518
+msgid "Our goal is to make your SMTP setup as simple and straightforward as possible. We'd love to know how this process went for you!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:521
+msgid "Congrats, you’ve successfully set up WP Mail SMTP!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:524
+msgid "Here’s what to do next:"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:527
+msgid "Check out our other free WordPress plugins:"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:530
+msgid "Upgrade to Unlock Powerful SMTP Features"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:533
+msgid "Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is used by over 3,000,000 websites."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:536
+msgid "Upgrade to Pro Today"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:539
+#: src/Admin/Pages/TestTab.php:253
+#: src/SiteHealth.php:352
+msgid "Send a Test Email"
+msgstr ""
+
+#. Translators: Different bold styles and discount value (%5$s).
+#: assets/languages/wp-mail-smtp-vue.php:543
+msgid "%1$sBonus:%2$s You can upgrade to the Pro plan and %3$ssave %5$s today%4$s, automatically applied at checkout."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:546
+msgid "Star icon"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:549
+msgid "Thanks for the feedback!"
+msgstr ""
+
+#. Translators: %1$s and %2$s are HTML bold tags; %3$s is a new line HTML tag; %4$s are 5 golden star icons in HTML.
+#: assets/languages/wp-mail-smtp-vue.php:553
+msgid "Help us spread the word %1$sby giving WP Mail SMTP a 5-star rating %3$s(%4$s) on WordPress.org%2$s. Thanks for your support and we look forward to bringing you more awesome features."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:556
+msgid "Rate on WordPress.org"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:559
+msgid "What could we do to improve?"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:562
+msgid "We're sorry things didn't go smoothly for you, and want to keep improving. Please let us know any specific parts of this process that you think could be better. We really appreciate any details you're willing to share!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:565
+msgid "Yes, I give WP Mail SMTP permission to contact me for any follow up questions."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:568
+msgid "Submit Feedback"
+msgstr ""
+
+#. Translators: Link to the Sendinblue API settings.
+#: assets/languages/wp-mail-smtp-vue.php:572
+msgid "%1$sFollow this link%2$s to get an API Key for Sendinblue."
+msgstr ""
+
+#. Translators: Link to the Sendinblue doc page on wpmailsmtp.com.
+#: assets/languages/wp-mail-smtp-vue.php:576
+msgid "Please input the sending domain/subdomain you configured in your Sendinblue dashboard. More information can be found in our %1$sSendinblue documentation%2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:579
+msgid "Get Started with Sendinblue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:582
+msgid "Read how to set up Sendinblue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:585
+msgid "We believe in full transparency. The Sendinblue links above are tracking links as part of our partnership with Sendinblue. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:588
+#: src/Providers/OptionsAbstract.php:227
+msgid "SMTP Host"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:591
+#: src/Providers/OptionsAbstract.php:241
+msgid "Encryption"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:594
+#: src/Providers/OptionsAbstract.php:281
+msgid "SMTP Port"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:597
+#: src/Providers/OptionsAbstract.php:295
+msgid "Auto TLS"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:600
+msgid "Enable Auto TLS"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:603
+#: src/Providers/OptionsAbstract.php:309
+msgid "By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:606
+#: src/Providers/OptionsAbstract.php:317
+msgid "Authentication"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:609
+#: src/Admin/Pages/TestTab.php:860
+msgid "Enable Authentication"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:612
+#: src/Providers/OptionsAbstract.php:336
+msgid "SMTP Username"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:615
+#: src/Providers/OptionsAbstract.php:350
+msgid "SMTP Password"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:618
+#: src/Providers/OptionsAbstract.php:273
+msgid "For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:621
+#: src/Admin/Pages/SettingsTab.php:371
+#: src/Providers/OptionsAbstract.php:251
+msgid "None"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:624
+#: src/Providers/OptionsAbstract.php:260
+msgid "SSL"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:627
+#: src/Providers/OptionsAbstract.php:269
+msgid "TLS"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:630
+msgid "Access Key ID"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:633
+msgid "Secret Access Key"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:636
+msgid "SES Identities"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:639
+msgid "Please select the Amazon SES API region which is the closest to where your website is hosted. This can help to decrease network latency between your site and Amazon SES, which will speed up email sending."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:642
+msgid "Read how to set up Amazon SES"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:645
+msgid "Amazon SES requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out "
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:648
+msgid "WPBeginner's tutorial on how to set up SSL"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:651
+msgid "If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please go back and select a different mailer option."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:654
+msgid "Choose Your SMTP Mailer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:657
+#: src/Admin/ConnectionSettings.php:202
+#: src/Admin/Pages/ExportTab.php:125
+msgid "Mailer"
+msgstr ""
+
+#. Translators: Link to the SMTP Mailer docs page.
+#: assets/languages/wp-mail-smtp-vue.php:661
+msgid "Which mailer would you like to use to send emails? Not sure which mailer to choose? Check out our %1$scomplete mailer guide%2$s for details on each option."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:664
+msgid "I Understand, Continue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:667
+msgid "Choose a Different Mailer"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:670
+msgid "Recommended Mailers"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:673
+msgid "Your mailer is already configured in a WP Mail SMTP constant, so the options below have been disabled. To change your mailer, please edit or remove the WPMS_MAILER
constant in your wp-config.php
file."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:676
+msgid "is a PRO Feature"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:679
+msgid "Microsoft 365 / Outlook"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:682
+msgid "Successful Upgrade!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:685
+msgid "Upgrade Failed!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:688
+msgid "Enter your WP Mail SMTP License Key"
+msgstr ""
+
+#. Translators: %1$s and %2$s are bold tags.
+#: assets/languages/wp-mail-smtp-vue.php:692
+msgid "You're currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:695
+msgid "Continue"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:698
+msgid "Would you like to purchase the following features now?"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:701
+msgid "These features are available as part of WP Mail SMTP Pro plan."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:704
+msgid "Purchase Now"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:707
+msgid "I'll do it later"
+msgstr ""
+
+#. Translators: Link to the WPMailSMTP.com pricing page.
+#: assets/languages/wp-mail-smtp-vue.php:711
+msgid "To unlock selected features, %1$sUpgrade to Pro%2$s and enter your license key below."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:714
+msgid "Enhanced Weekly Email Summary"
+msgstr ""
+
+#. Translators: bold HTML tags.
+#: assets/languages/wp-mail-smtp-vue.php:718
+msgid "Already purchased? Enter your license key below to connect with %1$sWP Mail SMTP Pro%2$s!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:721
+msgid "Enter your license key below to unlock plugin updates!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:724
+msgid "Verify License Key"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:727
+#: src/Admin/Pages/SettingsTab.php:187
+msgid "Connect"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:730
+msgid "The License Key format is incorrect. Please enter a valid key and try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:733
+msgid "Your license was successfully verified! You are ready for the next step."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:736
+msgid "Pro badge"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:739
+msgid "License key input"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:742
+msgid "Paste your license key here"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:745
+msgid "Successful Verification!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:748
+msgid "Verification Error!"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:751
+msgid "Authorized Redirect URI"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:754
+msgid "Select which email address you would like to send your emails from."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:757
+msgid "Read how to set up the Gmail mailer"
+msgstr ""
+
+#. Translators: Link to the SparkPost documentation.
+#: assets/languages/wp-mail-smtp-vue.php:761
+msgid "Select your SparkPost account region. %1$sMore information%2$s on SparkPost."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:764
+msgid "Read how to set up SparkPost"
+msgstr ""
+
+#. Translators: Link to the SparkPost Account API section.
+#: assets/languages/wp-mail-smtp-vue.php:768
+msgid "%1$sFollow this link%2$s to get an API Key for SparkPost."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:771
+msgid "Application ID"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:774
+msgid "Application Password"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:777
+msgid "Read how to set up Microsoft Outlook / 365"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:780
+msgid "Outlook / 365 requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out "
+msgstr ""
+
+#. Translators: Minimum and maximum number that can be used.
+#: assets/languages/wp-mail-smtp-vue.php:784
+msgid "Please enter a value between %1$s and %2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:787
+msgid "Value has to be a round number"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:790
+#: src/Admin/Area.php:167
+msgid "There was an error while processing the authentication request. Please try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:793
+msgid "There was an error while processing the authentication request. Please recheck your Client ID and Client Secret and try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:796
+#: src/Admin/Area.php:153
+msgid "There was an error while processing the authentication request. The nonce is invalid. Please try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:799
+msgid "There was an error while processing the authentication request. The authorization code is missing. Please try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:802
+msgid "There was an error while processing the authentication request. Please recheck your Region, Client ID and Client Secret and try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:805
+#: src/Admin/Area.php:190
+msgid "You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:808
+msgid "You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:811
+msgid "You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:814
+msgid "Successful Authorization"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:817
+msgid "Authorization Error!"
+msgstr ""
+
+#. Translators: name of the oAuth provider (Google, Microsoft, ...).
+#: assets/languages/wp-mail-smtp-vue.php:821
+msgid "Connect to %s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:824
+msgid "Before continuing, you'll need to allow this plugin to send emails using your %s account."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:827
+#: src/Providers/Gmail/Options.php:209
+msgid "Remove OAuth Connection"
+msgstr ""
+
+#. Translators: link to the Google documentation page.
+#: assets/languages/wp-mail-smtp-vue.php:831
+msgid "If you want to use a different From Email address you can setup a Google email alias. %1$sFollow these instructions%2$s, then select the alias in the From Email section below."
+msgstr ""
+
+#. Translators: name of the oAuth provider (Google, Microsoft, ...).
+#: assets/languages/wp-mail-smtp-vue.php:835
+msgid "Removing this OAuth connection will give you the ability to redo the OAuth connection or connect to different %s account."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:838
+msgid "Connected as"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:841
+#: src/Admin/Area.php:146
+msgid "There was an error while processing the authentication request. The state key is invalid. Please try again."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:844
+msgid "Please enter a domain"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:847
+msgid "Please enter a valid email address"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:850
+msgid "Enter the domain name to verify it on Amazon SES and generate the required DNS CNAME records."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:853
+msgid "Enter a valid email address. A verification email will be sent to the email address you entered."
+msgstr ""
+
+#. Translators: Email address.
+#: assets/languages/wp-mail-smtp-vue.php:857
+msgid "Please check the inbox of %s for a confirmation email."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:860
+msgid "Verify Email"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:863
+msgid "No registered domains or emails."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:866
+msgid "You will not be able to send emails until you verify at least one domain or email address for the selected Amazon SES Region."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:869
+msgid "View DNS"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:872
+msgid "Resend"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:875
+msgid "Here are the domains and email addresses that have been verified and can be used as the From Email."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:878
+msgid "Verify SES Identity"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:881
+msgid "Add New SES Identity"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:884
+msgid "Name"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:887
+msgid "Value"
+msgstr ""
+
+#. Translators: Link to Amazon SES documentation.
+#: assets/languages/wp-mail-smtp-vue.php:891
+msgid "Please add these CNAME records to your domain's DNS settings. For information on how to add CNAME DNS records, please refer to the %1$sAmazon SES documentation%2$s."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:894
+msgid "Verify Domain"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:897
+msgid "Verify Email Address"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:900
+msgid "Install"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:903
+msgid "Installed"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:906
+#: src/Admin/Area.php:646
+#: src/Admin/Pages/AboutTab.php:225
+msgid "Activated"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:909
+#: src/Core.php:1104
+msgid "Loading"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:912
+msgid "WordPress SEO Toolkit"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:915
+msgid "Improve your website's SEO ranking with our toolkit."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:918
+msgid "The following plugin will be installed for free:"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:921
+msgid "Read how to set up SendGrid"
+msgstr ""
+
+#. Translators: Link to the Sendinblue API settings.
+#: assets/languages/wp-mail-smtp-vue.php:925
+msgid "%1$sFollow this link%2$s to get an API Key for Brevo."
+msgstr ""
+
+#. Translators: Link to the Sendinblue doc page on wpmailsmtp.com.
+#: assets/languages/wp-mail-smtp-vue.php:929
+msgid "Please input the sending domain/subdomain you configured in your Brevo dashboard. More information can be found in our %1$sBrevo documentation%2$s"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:932
+msgid "Get Started with Brevo"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:935
+msgid "Read how to set up Brevo"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:938
+msgid "We believe in full transparency. The Brevo links above are tracking links as part of our partnership with Brevo. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:941
+#: src/Providers/Mailgun/Options.php:59
+msgid "Mailgun API Key"
+msgstr ""
+
+#. Translators: Link to the Mailgun API settings.
+#: assets/languages/wp-mail-smtp-vue.php:945
+msgid "%1$sFollow this link%2$s to get a Mailgun API Key. Generate a key in the \"Mailgun API Keys\" section."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:948
+msgid "Improve your SEO rankings with the All in One SEO plugin."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:951
+#: src/Providers/Gmail/Options.php:91
+msgid "One-Click Setup"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:954
+#: src/Providers/Gmail/Options.php:103
+msgid "Provides a quick and easy way to connect to Google that doesn't require creating your own app."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:957
+msgid "Enabled"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:960
+msgid "Disabled"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:963
+msgid "Sign in with Google"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:966
+#: src/Admin/Area.php:181
+msgid "There was an error while processing the authentication request."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:969
+msgid "Now you can continue mailer configuration."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:972
+msgid "Gmail mailer requires a valid Easy WP SMTP Pro license. Please activate your license key."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:975
+msgid "One-Click Setup for Google Mailer requires an active license. Emails are currently not being sent."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:978
+msgid "One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this one-click setup."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:981
+msgid "One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this one-click setup, please."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:984
+msgid "One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this One-Click Setup, please."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:987
+msgid "You have successfully connected your site with your Gmail account. This site will now send emails via your Gmail account."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:990
+msgid "You have successfully connected your site with your Gmail account. Now you can start sending emails through Gmail."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:993
+msgid "The email address that emails are sent from. You can use only connected email address or "
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:996
+msgid "The email address that emails are sent from. You can use only connected email address or his alias."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:999
+msgid "The email address that emails are sent from. The email address that emails are sent from. You can use only the connected email address or its alias."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:1002
+msgid "The email address that emails are sent from. You can use only the connected email address or its alias."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:1005
+#: src/Admin/Area.php:557
+msgid "One-Click Setup for Google Mailer
is a Pro Feature"
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:1008
+#: src/Admin/Area.php:558
+msgid "We're sorry, One-Click Setup for Google Mailer is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:1011
+msgid "Install the WPForms plugin and create beautiful contact forms with just a few clicks."
+msgstr ""
+
+#. Translators: Link to the SMTP2GO API settings.
+#: assets/languages/wp-mail-smtp-vue.php:1015
+msgid "Generate an API key on the Sending → API Keys page in your %1$scontrol panel%2$s."
+msgstr ""
+
+#: assets/languages/wp-mail-smtp-vue.php:1018
+msgid "Read how to set up SMTP2GO"
+msgstr ""
+
+#. translators: %s - error code, returned by Google API.
+#: src/Admin/Area.php:160
+msgid "There was an error while processing the authentication request: %s. Please try again."
+msgstr ""
+
+#: src/Admin/Area.php:174
+msgid "There was an error while processing the authentication request. Please make sure that you have Client ID and Client Secret both valid and saved."
+msgstr ""
+
+#. translators: %s - Mailer anchor link.
+#: src/Admin/Area.php:221
+msgid "Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, please select and configure your Mailer."
+msgstr ""
+
+#. translators: %s: Tools page URL.
+#: src/Admin/Area.php:267
+msgid "The Email Test tab was moved to WP Mail SMTP > Tools."
+msgstr ""
+
+#: src/Admin/Area.php:318
+#: src/Admin/Area.php:319
+#: src/Admin/Area.php:1278
+msgid "Settings"
+msgstr ""
+
+#: src/Admin/Area.php:327
+#: src/Admin/Area.php:328
+#: src/Admin/Pages/Logs.php:48
+#: src/Admin/Pages/LogsTab.php:51
+#: src/Admin/Pages/LogsTab.php:143
+#: src/Admin/Pages/VersusTab.php:176
+msgid "Email Log"
+msgstr ""
+
+#: src/Admin/Area.php:348
+#: src/Admin/Area.php:349
+#: src/Admin/Area.php:535
+#: src/Admin/SetupWizard.php:239
+#: src/Reports/Emails/Summary.php:313
+msgid "Upgrade to Pro"
+msgstr ""
+
+#: src/Admin/Area.php:393
+#: src/Admin/Area.php:399
+#: src/Admin/Pages/SettingsTab.php:38
+msgid "General"
+msgstr ""
+
+#: src/Admin/Area.php:407
+msgid "Multisite"
+msgstr ""
+
+#: src/Admin/Area.php:408
+msgid "Pro+ badge icon"
+msgstr ""
+
+#: src/Admin/Area.php:411
+msgid "Simply enable network-wide settings and every site on your network will inherit the same SMTP settings. Save time and only configure your SMTP provider once."
+msgstr ""
+
+#: src/Admin/Area.php:418
+msgid "Settings control"
+msgstr ""
+
+#: src/Admin/Area.php:424
+msgid "Make the plugin settings global network-wide"
+msgstr ""
+
+#: src/Admin/Area.php:428
+msgid "If disabled, each subsite of this multisite will have its own WP Mail SMTP settings page that has to be configured separately."
+msgstr ""
+
+#: src/Admin/Area.php:430
+msgid "If enabled, these global settings will manage email sending for all subsites of this multisite."
+msgstr ""
+
+#: src/Admin/Area.php:437
+#: src/Admin/Area.php:1270
+#: src/Admin/DashboardWidget.php:274
+#: src/Admin/FlyoutMenu.php:100
+#: src/Admin/Pages/AdditionalConnectionsTab.php:115
+#: src/Admin/Pages/AdditionalConnectionsTab.php:125
+#: src/Admin/Pages/AlertsTab.php:90
+#: src/Admin/Pages/AlertsTab.php:297
+#: src/Admin/Pages/ControlTab.php:246
+#: src/Admin/Pages/ControlTab.php:299
+#: src/Admin/Pages/EmailReportsTab.php:137
+#: src/Admin/Pages/EmailReportsTab.php:175
+#: src/Admin/Pages/ExportTab.php:89
+#: src/Admin/Pages/ExportTab.php:146
+#: src/Admin/Pages/LogsTab.php:152
+#: src/Admin/Pages/LogsTab.php:190
+#: src/Admin/Pages/SmartRoutingTab.php:111
+#: src/Admin/Pages/SmartRoutingTab.php:308
+msgid "Upgrade to WP Mail SMTP Pro"
+msgstr ""
+
+#: src/Admin/Area.php:518
+msgid "Are you sure you want to reset the current provider connection? You will need to immediately create a new one to be able to send emails."
+msgstr ""
+
+#: src/Admin/Area.php:519
+msgid "Changes that you made to the settings are not saved!"
+msgstr ""
+
+#: src/Admin/Area.php:523
+msgid "
applied at checkout."
+msgstr ""
+
+#: src/Admin/Area.php:554
+#: src/Admin/SetupWizard.php:258
+msgid "Already purchased?"
+msgstr ""
+
+#: src/Admin/Area.php:561
+msgid "Email Rate Limiting
is a Pro Feature"
+msgstr ""
+
+#: src/Admin/Area.php:562
+msgid "We're sorry, Email Rate Limiting is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features."
+msgstr ""
+
+#: src/Admin/Area.php:645
+#: src/Admin/Area.php:653
+#: src/Admin/Pages/AboutTab.php:233
+#: src/Connect.php:55
+msgid "Activate"
+msgstr ""
+
+#: src/Admin/Area.php:647
+#: src/Admin/Pages/AboutTab.php:222
+msgid "Active"
+msgstr ""
+
+#: src/Admin/Area.php:648
+#: src/Admin/Pages/AboutTab.php:230
+msgid "Inactive"
+msgstr ""
+
+#: src/Admin/Area.php:649
+msgid "Processing..."
+msgstr ""
+
+#: src/Admin/Area.php:650
+#: src/Admin/Pages/AboutTab.php:251
+msgid "Visit Site"
+msgstr ""
+
+#: src/Admin/Area.php:651
+msgid "Could not install a plugin. Please download from WordPress.org and install manually."
+msgstr ""
+
+#: src/Admin/Area.php:652
+msgid "Install and Activate"
+msgstr ""
+
+#: src/Admin/Area.php:654
+msgid "Download"
+msgstr ""
+
+#. translators: %1$s - WP.org link; %2$s - same WP.org link.
+#: src/Admin/Area.php:723
+msgid "Please rate WP Mail SMTP ★★★★★ on WordPress.org to help us spread the word. Thank you from the WP Mail SMTP team!"
+msgstr ""
+
+#: src/Admin/Area.php:1175
+msgid "WP Mail SMTP Pro related message was successfully dismissed."
+msgstr ""
+
+#: src/Admin/Area.php:1241
+msgid "Educational notice for this mailer was successfully dismissed."
+msgstr ""
+
+#: src/Admin/Area.php:1271
+msgid "Get WP Mail SMTP Pro"
+msgstr ""
+
+#: src/Admin/Area.php:1277
+msgid "Go to WP Mail SMTP Settings page"
+msgstr ""
+
+#: src/Admin/Area.php:1285
+msgid "Go to WPMailSMTP.com documentation page"
+msgstr ""
+
+#: src/Admin/Area.php:1286
+#: src/Admin/Area.php:1470
+msgid "Docs"
+msgstr ""
+
+#: src/Admin/Area.php:1448
+msgid "Made with ♥ by the WP Mail SMTP team"
+msgstr ""
+
+#: src/Admin/Area.php:1459
+msgid "Support"
+msgstr ""
+
+#: src/Admin/Area.php:1478
+msgid "Free Plugins"
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:85
+msgid "If you're using an email provider (Yahoo, Outlook.com, etc) this should be your email address for that account."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:88
+msgid "Please note that other plugins can change this, to prevent this use the setting below."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:112
+msgid "Current provider will automatically force From Email to be the email address that you use to set up the OAuth connection below."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:116
+msgid "If checked, the From Email setting above will be used for all emails, ignoring values set by other plugins."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:163
+msgid "Current provider doesn't support setting and forcing From Name. Emails will be sent on behalf of the account name used to setup the OAuth connection below."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:167
+msgid "If checked, the From Name setting above will be used for all emails, ignoring values set by other plugins."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:177
+msgid "Return Path"
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:193
+msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:194
+msgid "If unchecked, bounce messages may be lost."
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:246
+msgid "Don't see what you're looking for?"
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:251
+msgid "Suggest a Mailer"
+msgstr ""
+
+#: src/Admin/ConnectionSettings.php:279
+msgid "Dismiss this notice"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:270
+msgid "View Detailed Email Stats"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:271
+msgid "Automatically keep track of every email sent from your WordPress site and view valuable statistics right here in your dashboard."
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:351
+#: src/Pro/Emails/Logs/Admin/SinglePage.php:263
+msgid "Error icon"
+msgstr ""
+
+#. translators: %d - number of failed emails.
+#: src/Admin/DashboardWidget.php:359
+msgid "We detected %d failed email in the last 30 days."
+msgid_plural "We detected %d failed emails in the last 30 days."
+msgstr[0] ""
+msgstr[1] ""
+
+#. translators: %s - URL to WPMailSMTP.com.
+#: src/Admin/DashboardWidget.php:370
+msgid "Upgrade to Pro and get instant alert notifications when they fail."
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:391
+msgid "Dismiss email alert block"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:417
+msgid "NEW! Enable Weekly Email Summaries"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:426
+msgid "View Example"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:432
+msgid "Weekly Email Summaries have been enabled"
+msgstr ""
+
+#. translators: %s - URL to WPMailSMTP.com.
+#: src/Admin/DashboardWidget.php:455
+msgid "Upgrade to Pro for detailed stats, email logs, and more!"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:481
+msgid "Select timespan"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:483
+msgid "All Time"
+msgstr ""
+
+#. translators: %d - Number of days.
+#: src/Admin/DashboardWidget.php:488
+msgid "Last %d day"
+msgid_plural "Last %d days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Admin/DashboardWidget.php:504
+msgid "Confirmed Emails"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:505
+msgid "Unconfirmed Emails"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:506
+msgid "Failed Emails"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:511
+msgid "Sent Emails"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:515
+msgid "Select email type"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:517
+msgid "All Emails"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:545
+msgid "Graph Style"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:549
+msgid "Bar"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:553
+msgid "Line"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:558
+msgid "Color Scheme"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:566
+msgid "WordPress"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:570
+msgid "Save Changes"
+msgstr ""
+
+#: src/Admin/DashboardWidget.php:615
+msgid "Table cell icon"
+msgstr ""
+
+#. translators: %d number of total emails sent.
+#: src/Admin/DashboardWidget.php:646
+msgid "%d total"
+msgstr ""
+
+#. translators: %s fixed string of 'N/A'.
+#: src/Admin/DashboardWidget.php:652
+msgid "Confirmed %s"
+msgstr ""
+
+#. translators: %s fixed string of 'N/A'.
+#: src/Admin/DashboardWidget.php:658
+msgid "Unconfirmed %s"
+msgstr ""
+
+#. translators: %s fixed string of 'N/A'.
+#: src/Admin/DashboardWidget.php:664
+msgid "Failed %s"
+msgstr ""
+
+#. translators: %s fixed string of 'N/A'.
+#: src/Admin/DashboardWidget.php:675
+msgid "Sent %s"
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:100
+#: src/Admin/DebugEvents/DebugEvents.php:143
+msgid "Access rejected."
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:104
+#: src/Admin/DebugEvents/DebugEvents.php:147
+#: src/Admin/Pages/DebugEventsTab.php:365
+msgid "You don't have the capability to perform this action."
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:108
+#: src/Admin/DebugEvents/DebugEvents.php:151
+msgid "For some reason the database table was not installed correctly. Please contact plugin support team to diagnose and fix the issue."
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:121
+msgid "All debug event entries were deleted successfully."
+msgstr ""
+
+#. translators: %s - WPDB error message.
+#: src/Admin/DebugEvents/DebugEvents.php:126
+msgid "There was an issue while trying to delete all debug event entries. Error message: %s"
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:157
+msgid "No Debug Event ID provided!"
+msgstr ""
+
+#: src/Admin/DebugEvents/DebugEvents.php:343
+msgid "Number of events per page:"
+msgstr ""
+
+#. translators: %d the event ID.
+#: src/Admin/DebugEvents/Event.php:147
+msgid "Event #%d"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:184
+#: src/Providers/PepipostAPI/Mailer.php:342
+msgid "Error"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:185
+#: src/SiteHealth.php:141
+msgid "Debug"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:244
+#: src/WP.php:571
+msgid "N/A"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:357
+msgid "Debug Event Details"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:360
+#: src/Admin/DebugEvents/Table.php:170
+msgid "Type"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:364
+#: src/Admin/DebugEvents/Table.php:173
+msgid "Date"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:368
+#: src/Admin/DebugEvents/Table.php:171
+msgid "Content"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:375
+#: src/Admin/DebugEvents/Table.php:172
+#: src/Admin/Pages/ExportTab.php:128
+msgid "Source"
+msgstr ""
+
+#. Translators: %1$s the path of a file, %2$s the line number in the file.
+#: src/Admin/DebugEvents/Event.php:381
+msgid "%1$s (line: %2$s)"
+msgstr ""
+
+#: src/Admin/DebugEvents/Event.php:389
+msgid "Backtrace:"
+msgstr ""
+
+#. translators: %1$d - index number; %2$s - function name; %3$s - file path; %4$s - line number.
+#: src/Admin/DebugEvents/Event.php:395
+msgid "[%1$d] %2$s called at [%3$s:%4$s]"
+msgstr ""
+
+#. Translators: %s - Email initiator/source name.
+#: src/Admin/DebugEvents/Event.php:429
+msgid "Email Source: %s"
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:115
+msgid "All"
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:169
+msgid "Event"
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:489
+msgid "No events found."
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:491
+msgid "No events have been logged for now."
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:552
+#: src/Admin/Pages/ExportTab.php:133
+msgid "Select a date range"
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:556
+msgid "Filter"
+msgstr ""
+
+#: src/Admin/DebugEvents/Table.php:565
+msgid "Delete All Events"
+msgstr ""
+
+#: src/Admin/DomainChecker.php:70
+msgid "Something went wrong. Please try again later."
+msgstr ""
+
+#: src/Admin/DomainChecker.php:178
+msgid "Domain Check Results"
+msgstr ""
+
+#. translators: %s - item state name.
+#: src/Admin/DomainChecker.php:190
+msgid "%s icon"
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com Upgrade page URL.
+#: src/Admin/Education.php:73
+msgid "You’re using WP Mail SMTP Lite. To unlock more features, consider upgrading to Pro."
+msgstr ""
+
+#: src/Admin/Education.php:84
+msgid "Dismiss this message."
+msgstr ""
+
+#: src/Admin/FlyoutMenu.php:52
+msgid "See Quick Links"
+msgstr ""
+
+#: src/Admin/FlyoutMenu.php:107
+msgid "Support & Docs"
+msgstr ""
+
+#: src/Admin/FlyoutMenu.php:113
+msgid "Follow on Facebook"
+msgstr ""
+
+#: src/Admin/FlyoutMenu.php:118
+msgid "Suggest a Feature"
+msgstr ""
+
+#: src/Admin/Notifications.php:477
+msgid "Notifications"
+msgstr ""
+
+#: src/Admin/Notifications.php:481
+msgid "Dismiss this message"
+msgstr ""
+
+#: src/Admin/Notifications.php:486
+msgid "Previous message"
+msgstr ""
+
+#: src/Admin/Notifications.php:490
+msgid "Next message"
+msgstr ""
+
+#: src/Admin/Pages/About.php:50
+#: src/Admin/Pages/AboutTab.php:44
+msgid "About Us"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:71
+msgid "Hello and welcome to WP Mail SMTP, the easiest and most popular WordPress SMTP plugin. We build software that helps your site reliably deliver emails every time."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:75
+msgid "Email deliverability has been a well-documented problem for all WordPress websites. However as WPForms grew, we became more aware of this painful issue that affects our users and the larger WordPress community. So we decided to solve this problem and make a solution that's beginner friendly."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:78
+msgid "Our goal is to make reliable email deliverability easy for WordPress."
+msgstr ""
+
+#. translators: %1$s - WPForms URL, %2$s - WPBeginner URL, %3$s - OptinMonster URL, %4$s - MonsterInsights URL, %5$s - Awesome Motive URL
+#: src/Admin/Pages/AboutTab.php:85
+msgid "WP Mail SMTP is brought to you by the same team that's behind the most user friendly WordPress forms, WPForms, the largest WordPress resource site, WPBeginner, the most popular lead-generation software, OptinMonster, the best WordPress analytics plugin, MonsterInsights, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:104
+msgid "Yup, we know a thing or two about building awesome products that customers love."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:110
+msgid "The WPForms Team photo"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:112
+msgid "The WPForms Team"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:161
+msgid "Plugin icon"
+msgstr ""
+
+#. translators: %s - status HTML text.
+#: src/Admin/Pages/AboutTab.php:175
+msgid "Status: %s"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:241
+msgid "Not Installed"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:244
+msgid "Install Plugin"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:272
+msgid "OptinMonster"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:273
+msgid "Instantly get more subscribers, leads, and sales with the #1 conversion optimization toolkit. Create high converting popups, announcement bars, spin a wheel, and more with smart targeting and personalization."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:279
+#: src/Admin/Pages/SmartRoutingTab.php:278
+msgid "WPForms"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:280
+#: src/Admin/Pages/AboutTab.php:286
+msgid "The best drag & drop WordPress form builder. Easily create beautiful contact forms, surveys, payment forms, and more with our 600+ form templates. Trusted by over 5 million websites as the best forms plugin."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:285
+msgid "WPForms Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:293
+msgid "MonsterInsights"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:294
+#: src/Admin/Pages/AboutTab.php:300
+msgid "The leading WordPress analytics plugin that shows you how people find and use your website, so you can make data driven decisions to grow your business. Properly set up Google Analytics without writing code."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:299
+msgid "MonsterInsights Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:307
+#: src/Admin/Pages/AboutTab.php:313
+msgid "AIOSEO"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:308
+#: src/Admin/Pages/AboutTab.php:314
+msgid "The original WordPress SEO plugin and toolkit that improves your website’s search rankings. Comes with all the SEO features like Local SEO, WooCommerce SEO, sitemaps, SEO optimizer, schema, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:321
+#: src/Admin/Pages/AboutTab.php:327
+msgid "SeedProd"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:322
+#: src/Admin/Pages/AboutTab.php:328
+msgid "The fastest drag & drop landing page builder for WordPress. Create custom landing pages without writing code, connect them with your CRM, collect subscribers, and grow your audience. Trusted by 1 million sites."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:335
+msgid "RafflePress"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:336
+#: src/Admin/Pages/AboutTab.php:342
+msgid "Turn your website visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with the most powerful giveaways & contests plugin for WordPress."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:341
+msgid "RafflePress Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:349
+msgid "PushEngage"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:350
+msgid "Connect with your visitors after they leave your website with the leading web push notification software. Over 10,000+ businesses worldwide use PushEngage to send 15 billion notifications each month."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:356
+#: src/Admin/Pages/AboutTab.php:362
+msgid "Smash Balloon Instagram Feeds"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:357
+#: src/Admin/Pages/AboutTab.php:363
+msgid "Easily display Instagram content on your WordPress site without writing any code. Comes with multiple templates, ability to show content from multiple accounts, hashtags, and more. Trusted by 1 million websites."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:370
+#: src/Admin/Pages/AboutTab.php:376
+msgid "Smash Balloon Facebook Feeds"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:371
+#: src/Admin/Pages/AboutTab.php:377
+msgid "Easily display Facebook content on your WordPress site without writing any code. Comes with multiple templates, ability to embed albums, group content, reviews, live videos, comments, and reactions."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:384
+#: src/Admin/Pages/AboutTab.php:390
+msgid "Smash Balloon YouTube Feeds"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:385
+#: src/Admin/Pages/AboutTab.php:391
+msgid "Easily display YouTube videos on your WordPress site without writing any code. Comes with multiple layouts, ability to embed live streams, video filtering, ability to combine multiple channel videos, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:398
+#: src/Admin/Pages/AboutTab.php:404
+msgid "Smash Balloon Twitter Feeds"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:399
+#: src/Admin/Pages/AboutTab.php:405
+msgid "Easily display Twitter content in WordPress without writing any code. Comes with multiple layouts, ability to combine multiple Twitter feeds, Twitter card support, tweet moderation, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:412
+msgid "TrustPulse"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:413
+msgid "Boost your sales and conversions by up to 15% with real-time social proof notifications. TrustPulse helps you show live user activity and purchases to help convince other users to purchase."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:419
+#: src/Admin/Pages/AboutTab.php:425
+msgid "SearchWP"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:420
+#: src/Admin/Pages/AboutTab.php:426
+msgid "The most advanced WordPress search plugin. Customize your WordPress search algorithm, reorder search results, track search metrics, and everything you need to leverage search to grow your business."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:433
+#: src/Admin/Pages/AboutTab.php:439
+msgid "AffiliateWP"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:434
+#: src/Admin/Pages/AboutTab.php:440
+msgid "The #1 affiliate management plugin for WordPress. Easily create an affiliate program for your eCommerce store or membership site within minutes and start growing your sales with the power of referral marketing."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:447
+msgid "WP Simple Pay"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:448
+#: src/Admin/Pages/AboutTab.php:454
+msgid "The #1 Stripe payments plugin for WordPress. Start accepting one-time and recurring payments on your WordPress site without setting up a shopping cart. No code required."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:453
+msgid "WP Simple Pay Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:461
+msgid "Easy Digital Downloads"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:462
+msgid "The best WordPress eCommerce plugin for selling digital downloads. Start selling eBooks, software, music, digital art, and more within minutes. Accept payments, manage subscriptions, advanced access control, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:468
+msgid "Sugar Calendar Lite"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:469
+#: src/Admin/Pages/AboutTab.php:475
+msgid "A simple & powerful event calendar plugin for WordPress that comes with all the event management features including payments, scheduling, timezones, ticketing, recurring events, and more."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:474
+msgid "Sugar Calendar"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:482
+msgid "WP Charitable"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:483
+msgid "Top-rated WordPress donation and fundraising plugin. Over 10,000+ non-profit organizations and website owners use Charitable to create fundraising campaigns and raise more money online."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:489
+msgid "WPCode Lite"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:490
+#: src/Admin/Pages/AboutTab.php:496
+msgid "Future proof your WordPress customizations with the most popular code snippet management plugin for WordPress. Trusted by over 1,500,000+ websites for easily adding code to WordPress right from the admin area."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:495
+msgid "WPCode Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:503
+msgid "Duplicator"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:504
+#: src/Admin/Pages/AboutTab.php:510
+msgid "Leading WordPress backup & site migration plugin. Over 1,500,000+ smart website owners use Duplicator to make reliable and secure WordPress backups to protect their websites. It also makes website migration really easy."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:509
+msgid "Duplicator Pro"
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:529
+msgid "Could not activate the plugin. Please activate it from the Plugins page."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:555
+msgid "Could not activate the plugin. Plugin is not whitelisted."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:561
+msgid "Plugin activated."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:577
+msgid "Could not install the plugin."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:591
+#: src/Admin/SetupWizard.php:872
+msgid "Could not install the plugin. Plugin is not whitelisted."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:658
+#: src/Connect.php:210
+#: src/Connect.php:218
+#: src/Connect.php:297
+msgid "Plugin installed & activated."
+msgstr ""
+
+#: src/Admin/Pages/AboutTab.php:666
+msgid "Plugin installed."
+msgstr ""
+
+#: src/Admin/Pages/ActionSchedulerTab.php:41
+#: src/Admin/Pages/ActionSchedulerTab.php:101
+msgid "Scheduled Actions"
+msgstr ""
+
+#. translators: %s - Action Scheduler website URL.
+#: src/Admin/Pages/ActionSchedulerTab.php:107
+msgid "WP Mail SMTP is using the Action Scheduler library, which allows it to queue and process bigger tasks in the background without making your site slower for your visitors. Below you can see the list of all tasks and their status. This table can be very useful when debugging certain issues."
+msgstr ""
+
+#: src/Admin/Pages/ActionSchedulerTab.php:122
+msgid "Action Scheduler library is also used by other plugins, like WPForms and WooCommerce, so you might see tasks that are not related to our plugin in the table below."
+msgstr ""
+
+#. translators: %s - search term.
+#: src/Admin/Pages/ActionSchedulerTab.php:130
+msgid "Search results for %s"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:49
+#: src/Admin/Pages/AdditionalConnectionsTab.php:106
+msgid "Additional Connections"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:110
+msgid "Create additional connections to set a backup for your Primary Connection or to configure Smart Routing."
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:143
+#: src/Admin/Pages/SettingsTab.php:340
+#: src/Admin/Pages/SettingsTab.php:364
+msgid "Backup Connection"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:148
+#: src/Admin/Pages/SmartRoutingTab.php:51
+#: src/Admin/Pages/SmartRoutingTab.php:102
+msgid "Smart Routing"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:177
+msgid "With additional connections you can..."
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:180
+msgid "Set a Backup Connection"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:183
+msgid "Use mailers for different purposes"
+msgstr ""
+
+#: src/Admin/Pages/AdditionalConnectionsTab.php:186
+msgid "Create advanced routing rules"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:43
+#: src/Admin/Pages/AlertsTab.php:81
+msgid "Alerts"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:85
+msgid "Configure at least one of these integrations to receive notifications when email fails to send from your site. Alert notifications will contain the following important data: email subject, email Send To address, the error message, and helpful links to help you fix the issue."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:98
+msgid "Notify when"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:105
+msgid "The initial email sending request fails"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:112
+msgid "This option is always enabled and will notify you about instant email sending failures."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:119
+msgid "The deliverability verification process detects a hard bounce"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:125
+msgid "Get notified about emails that were successfully sent, but have hard bounced on delivery attempt. A hard bounce is an email that has failed to deliver for permanent reasons, such as the recipient's email address being invalid."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:135
+msgid "Email"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:136
+msgid "Enter the email addresses (3 max) you’d like to use to receive alerts when email sending fails. Read our documentation on setting up email alerts."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:141
+msgid "Email Alerts"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:153
+#: src/Admin/Pages/TestTab.php:158
+msgid "Send To"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:164
+msgid "Slack"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:165
+msgid "Paste in the Slack webhook URL you’d like to use to receive alerts when email sending fails. Read our documentation on setting up Slack alerts."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:170
+msgid "Slack Alerts"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:182
+#: src/Admin/Pages/AlertsTab.php:211
+#: src/Admin/Pages/AlertsTab.php:287
+msgid "Webhook URL"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:193
+msgid "Microsoft Teams"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:194
+msgid "Paste in the Microsoft Teams webhook URL you’d like to use to receive alerts when email sending fails. Read our documentation on setting up Microsoft Teams alerts."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:199
+msgid "Microsoft Teams Alerts"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:222
+msgid "SMS via Twilio"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:223
+msgid "To receive SMS alerts, you’ll need a Twilio account. Read our documentation to learn how to set up Twilio SMS, then enter your connection details below."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:228
+msgid "SMS via Twilio Alerts"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:240
+msgid "Twilio Account ID"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:246
+msgid "Twilio Auth Token"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:252
+msgid "From Phone Number"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:258
+msgid "To Phone Number"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:269
+msgid "Webhook"
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:270
+msgid "Paste in the webhook URL you’d like to use to receive alerts when email sending fails. Read our documentation on setting up webhook alerts."
+msgstr ""
+
+#: src/Admin/Pages/AlertsTab.php:275
+msgid "Webhook Alerts"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:35
+#: src/Admin/Pages/ControlTab.php:237
+#: src/Admin/Pages/VersusTab.php:177
+msgid "Email Controls"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:63
+msgid "Comments"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:66
+msgid "Awaiting Moderation"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:67
+msgid "Comment is awaiting moderation. Sent to the site admin and post author if they can edit comments."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:70
+msgid "Published"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:71
+msgid "Comment has been published. Sent to the post author."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:76
+msgid "Change of Admin Email"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:79
+msgid "Site Admin Email Change Attempt"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:80
+msgid "Change of site admin email address was attempted. Sent to the proposed new email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:83
+msgid "Site Admin Email Changed"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:84
+msgid "Site admin email address was changed. Sent to the old site admin email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:87
+msgid "Network Admin Email Change Attempt"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:88
+msgid "Change of network admin email address was attempted. Sent to the proposed new email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:91
+msgid "Network Admin Email Changed"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:92
+msgid "Network admin email address was changed. Sent to the old network admin email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:97
+msgid "Change of User Email or Password"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:100
+msgid "Reset Password Request"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:101
+msgid "User requested a password reset via \"Lost your password?\". Sent to the user."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:104
+msgid "Password Reset Successfully"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:105
+msgid "User reset their password from the password reset link. Sent to the site admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:108
+msgid "Password Changed"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:109
+msgid "User changed their password. Sent to the user."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:112
+msgid "Email Change Attempt"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:113
+msgid "User attempted to change their email address. Sent to the proposed new email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:116
+msgid "Email Changed"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:117
+msgid "User changed their email address. Sent to the user."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:122
+msgid "Personal Data Requests"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:125
+msgid "User Confirmed Export / Erasure Request"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:126
+msgid "User clicked a confirmation link in personal data export or erasure request email. Sent to the site or network admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:129
+msgid "Admin Erased Data"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:130
+msgid "Site admin clicked \"Erase Personal Data\" button next to a confirmed data erasure request. Sent to the requester email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:133
+msgid "Admin Sent Link to Export Data"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:134
+msgid "Site admin clicked \"Email Data\" button next to a confirmed data export request. Sent to the requester email address."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:135
+msgid "Disabling this option will block users from being able to export their personal data, as they will not receive an email with a link."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:140
+msgid "Automatic Updates"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:143
+msgid "Plugin Status"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:144
+msgid "Completion or failure of a background automatic plugin update. Sent to the site or network admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:147
+msgid "Theme Status"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:148
+msgid "Completion or failure of a background automatic theme update. Sent to the site or network admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:151
+msgid "WP Core Status"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:152
+msgid "Completion or failure of a background automatic core update. Sent to the site or network admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:155
+msgid "Full Log"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:156
+msgid "Full log of background update results which includes information about WordPress core, plugins, themes, and translations updates. Only sent when you are using a development version of WordPress. Sent to the site or network admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:161
+msgid "New User"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:164
+msgid "Created (Admin)"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:165
+msgid "A new user was created. Sent to the site admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:168
+msgid "Created (User)"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:169
+msgid "A new user was created. Sent to the new user."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:172
+msgid "Invited To Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:173
+msgid "A new user was invited to a site from Users -> Add New -> Add New User. Sent to the invited user."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:176
+msgid "Created On Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:177
+msgid "A new user account was created. Sent to Network Admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:180
+msgid "Added / Activated on Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:181
+msgid "A user has been added, or their account activation has been successful. Sent to the user, that has been added/activated."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:186
+msgid "New Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:189
+msgid "User Created Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:190
+msgid "User registered for a new site. Sent to the site admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:193
+msgid "Network Admin: User Activated / Added Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:194
+msgid "User activated their new site, or site was added from Network Admin -> Sites -> Add New. Sent to Network Admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:197
+msgid "Site Admin: Activated / Added Site"
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:198
+msgid "User activated their new site, or site was added from Network Admin -> Sites -> Add New. Sent to Site Admin."
+msgstr ""
+
+#: src/Admin/Pages/ControlTab.php:241
+msgid "Email controls allow you to manage the automatic notifications you receive from your WordPress website. With the flick of a switch, you can reduce inbox clutter and focus on the alerts that matter the most. It's easy to disable emails about comments, email or password changes, WordPress updates, user registrations, and personal data requests."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:84
+#: src/Admin/Pages/DebugEventsTab.php:188
+#: src/Admin/Pages/DebugEventsTab.php:201
+msgid "Debug Events"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:148
+msgid "Are you sure you want to permanently delete all debug events?"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:150
+msgid "Close"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:151
+#: src/Admin/Review.php:139
+msgid "Yes"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:154
+msgid "An error occurred!"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:191
+msgid "On this page, you can view different plugin debugging events and email sending errors."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:204
+msgid "On this page, you can view and configure different plugin debugging events. View email sending errors and enable debugging events, allowing you to detect email sending issues."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:212
+msgid "Event Types"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:228
+msgid "Email Sending Errors"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:231
+msgid "This debug event is always enabled and will record any email sending errors in the table below."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:245
+msgid "Debug Email Sending"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:248
+msgid "Check this if you would like to debug the email sending process. Once enabled, all debug events will be logged in the table below. This setting should only be enabled for shorter debugging periods and disabled afterwards."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:256
+msgid "Events Retention Period"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:262
+msgid "Forever"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:271
+msgid "Debug events older than the selected period will be permanently deleted from the database."
+msgstr ""
+
+#. translators: %1$s - number of debug events found; %2$s - filtered type.
+#: src/Admin/Pages/DebugEventsTab.php:312
+msgid "Found %1$s %2$s event"
+msgid_plural "Found %1$s %2$s events"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Admin/Pages/DebugEventsTab.php:341
+msgid "Search Events"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:377
+#: src/Admin/Pages/MiscTab.php:502
+#: src/Admin/Pages/SettingsTab.php:440
+msgid "Settings were successfully saved."
+msgstr ""
+
+#. translators: %s The searched term.
+#: src/Admin/Pages/DebugEventsTab.php:416
+msgid "where event contains \"%s\""
+msgstr ""
+
+#. translators: %s - Date.
+#: src/Admin/Pages/DebugEventsTab.php:449
+msgid "on %s"
+msgstr ""
+
+#. translators: %1$s - Date. %2$s - Date.
+#: src/Admin/Pages/DebugEventsTab.php:455
+msgid "between %1$s and %2$s"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:494
+msgid "Debug Events are Not Installed Correctly"
+msgstr ""
+
+#. translators: %1$s - create missing tables link; %2$s - contact support link.
+#: src/Admin/Pages/DebugEventsTab.php:501
+msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to create the missing DB tables by clicking on this link. If this issue persists, please contact our support and provide the error message below:"
+msgstr ""
+
+#. translators: %1$s - create missing tables link; %2$s - contact support link.
+#: src/Admin/Pages/DebugEventsTab.php:518
+msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to create the missing DB tables by clicking on this link. If this issue persists, please contact our support."
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:567
+msgid "1 Week"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:568
+msgid "1 Month"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:569
+msgid "3 Months"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:570
+msgid "6 Months"
+msgstr ""
+
+#: src/Admin/Pages/DebugEventsTab.php:571
+msgid "1 Year"
+msgstr ""
+
+#. translators: %d - days count.
+#: src/Admin/Pages/DebugEventsTab.php:585
+msgid "%d Day"
+msgid_plural "%d Days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/Admin/Pages/EmailReports.php:41
+#: src/Admin/Pages/EmailReportsTab.php:42
+msgid "Email Reports"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:114
+msgid "Stats at a Glance"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:119
+msgid "Detailed Stats by Subject Line"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:124
+msgid "Weekly Email Report"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:132
+msgid "Email reports make it easy to track deliverability and engagement at-a-glance. Your open and click-through rates are grouped by subject line, making it easy to review the performance of campaigns or notifications. The report also displays Sent and Failed emails each week so you spot any issues quickly. When you upgrade, we'll also add an email report chart right in your WordPress dashboard."
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:156
+msgid "Unlock these awesome reporting features:"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:159
+msgid "Get weekly deliverability reports"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:160
+msgid "View stats grouped by subject line"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:163
+msgid "Track total emails sent each week"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:164
+msgid "Measure open rate and click through rates"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:167
+msgid "Spot failed emails quickly"
+msgstr ""
+
+#: src/Admin/Pages/EmailReportsTab.php:168
+msgid "See email report graphs in WordPress"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:42
+msgid "Export"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:80
+msgid "Export Email Logs"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:84
+msgid "Easily export your logs to CSV or Excel. Filter the logs before you export and only download the data you need. This feature lets you easily create your own deliverability reports. You can also use the data in 3rd party dashboards to track deliverability along with your other website statistics."
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:95
+msgid "Export Type"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:97
+msgid "Export in CSV (.csv)"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:100
+msgid "Export in Microsoft Excel (.xlsx)"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:103
+msgid "Export in EML (.eml)"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:108
+msgid "Common Information"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:109
+msgid "To Address"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:110
+msgid "From Address"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:112
+#: src/Admin/Pages/SmartRoutingTab.php:157
+msgid "Subject"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:113
+msgid "Body"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:114
+msgid "Created Date"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:115
+msgid "Number of Attachments"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:116
+msgid "Attachments"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:120
+msgid "Additional Information"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:121
+msgid "Status"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:122
+msgid "Carbon Copy (CC)"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:123
+msgid "Blind Carbon Copy (BCC)"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:124
+msgid "Headers"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:126
+msgid "Error Details"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:127
+msgid "Email log ID"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:132
+msgid "Custom Date Range"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:137
+msgid "Search"
+msgstr ""
+
+#: src/Admin/Pages/ExportTab.php:139
+msgid "Email Addresses"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:130
+msgid "Email Log Index"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:135
+msgid "Individual Email Log"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:147
+msgid "Email logging makes it easy to save details about all of the emails sent from your WordPress site. You can search and filter the email log to find specific messages and check the color-coded delivery status. Email logging also allows you to resend emails, save attachments, and export your logs in different formats."
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:171
+msgid "Unlock these awesome logging features:"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:174
+msgid "Save detailed email headers"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:175
+msgid "See sent and failed emails"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:178
+msgid "Resend emails and attachments"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:179
+msgid "Track email opens and clicks"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:182
+msgid "Print email logs or save as PDF"
+msgstr ""
+
+#: src/Admin/Pages/LogsTab.php:183
+msgid "Export logs to CSV, XLSX, or EML"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:39
+msgid "Misc"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:51
+msgid "Miscellaneous"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:78
+msgid "Do Not Send"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:94
+msgid "Stop sending all emails"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:100
+msgid "Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default wp_mail()
function to send emails."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:108
+msgid "You will need to consult with their documentation to switch them to use default WordPress email delivery."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:110
+msgid "Test emails are allowed to be sent, regardless of this option."
+msgstr ""
+
+#. translators: %s - The URL to the constants support article.
+#: src/Admin/Pages/MiscTab.php:118
+msgid "Please read this support article if you want to enable this option using constants."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:140
+msgid "Hide Announcements"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:155
+msgid "Hide plugin announcements and update details."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:165
+msgid "Hide Email Delivery Errors"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:184
+msgid "Hide warnings alerting of email delivery errors."
+msgstr ""
+
+#. translators: %s - filter that was used to disabled.
+#: src/Admin/Pages/MiscTab.php:190
+msgid "Email Delivery Errors were disabled using a %s filter."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:199
+msgid "This is not recommended and should only be done for staging or development sites."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:214
+msgid "Hide Dashboard Widget"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:229
+msgid "Hide the WP Mail SMTP Dashboard Widget."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:239
+msgid "Allow Usage Tracking"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:264
+msgid "Disable Email Summaries"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:283
+msgid "Disable Email Summaries weekly delivery."
+msgstr ""
+
+#. translators: %s - Email Log settings url.
+#: src/Admin/Pages/MiscTab.php:288
+msgid "Please enable Email Logging first, before this setting can be configured."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:301
+msgid "View Email Summary Example"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:317
+msgid "Optimize Email Sending"
+msgstr ""
+
+#. translators: %1$s - Documentation URL.
+#: src/Admin/Pages/MiscTab.php:335
+msgid "Send emails asynchronously, which will make pages with email requests load faster, but may delay email delivery by a minute or two. Learn More"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:366
+msgid "Uninstall WP Mail SMTP"
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:381
+msgid "Remove ALL WP Mail SMTP data upon plugin deletion."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:384
+msgid "All settings will be unrecoverable."
+msgstr ""
+
+#: src/Admin/Pages/MiscTab.php:406
+msgid "Email Rate Limiting"
+msgstr ""
+
+#. translators: %1$s - Documentation URL.
+#: src/Admin/Pages/MiscTab.php:421
+msgid "Limit the number of emails this site will send in each time interval (per minute, hour, day, week and month). Emails that will cross those set limits will be queued and sent as soon as your limits allow. Learn More"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:64
+msgid "License"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:67
+msgid "Your license key provides access to updates and support."
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:75
+msgid "License Key"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:85
+msgid "Primary Connection"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:93
+msgid "Setup Wizard"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:97
+msgid "Launch Setup Wizard"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:101
+msgid "We'll guide you through each step needed to get WP Mail SMTP fully set up on your site."
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:141
+msgid "You're using WP Mail SMTP Lite - no license needed. Enjoy!"
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com upgrade URL.
+#: src/Admin/Pages/SettingsTab.php:147
+msgid "To unlock more features, consider upgrading to PRO."
+msgstr ""
+
+#. Translators: %s - discount value $50
+#: src/Admin/Pages/SettingsTab.php:167
+msgid "As a valued WP Mail SMTP Lite user you receive %s off, automatically applied at checkout!"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:181
+msgid "Already purchased? Simply enter your license key below to connect with WP Mail SMTP Pro!"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:185
+msgid "Paste license key here"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:243
+msgid "Get WP Mail SMTP Pro and Unlock all the Powerful Features"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:247
+msgid "Thanks for being a loyal WP Mail SMTP user. Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is the most popular SMTP plugin."
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:251
+msgid "We know that you will truly love WP Mail SMTP. It's used by over 3,000,000 websites."
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:254
+msgid "Pro Features:"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:258
+msgid "Email Logging - keep track of every email sent from your site"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:259
+msgid "Alerts - get notified when your emails fail (via email, slack or SMS)"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:260
+msgid "Backup Connection - send emails even if your primary connection fails"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:261
+msgid "Smart Routing - define conditions for your email sending"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:262
+msgid "Amazon SES - harness the power of AWS"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:263
+msgid "Outlook - send emails using your Outlook or Microsoft 365 account"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:264
+msgid "Zoho Mail - use your Zoho Mail account to send emails"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:265
+msgid "Multisite Support - network settings for easy management"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:266
+msgid "Manage Notifications - control which emails your site sends"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:267
+msgid "Access to our world class support team"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:270
+msgid "White Glove Setup - sit back and relax while we handle everything for you"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:271
+msgid "Install & Setup WP Mail SMTP Pro plugin"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:272
+msgid "Configure SendLayer, SMTP.com or Brevo service"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:273
+msgid "Set up domain name verification (DNS)"
+msgstr ""
+
+#: src/Admin/Pages/SettingsTab.php:274
+msgid "Test and verify email delivery"
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com URL.
+#: src/Admin/Pages/SettingsTab.php:282
+msgid "Get WP Mail SMTP Pro Today and Unlock all the Powerful Features »"
+msgstr ""
+
+#. Translators: %s - discount value $50.
+#: src/Admin/Pages/SettingsTab.php:301
+msgid "Bonus: WP Mail SMTP users get %s off regular price, automatically applied at checkout."
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com Upgrade page URL.
+#: src/Admin/Pages/SettingsTab.php:346
+msgid "Don’t worry about losing emails. Add an additional connection, then set it as your Backup Connection. Emails that fail to send with the Primary Connection will be sent via the selected Backup Connection. Upgrade to WP Mail SMTP Pro!"
+msgstr ""
+
+#. translators: %s - Smart routing settings page url.
+#: src/Admin/Pages/SettingsTab.php:378
+msgid "Once you add an additional connection, you can select it here."
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:106
+msgid "Send emails from different additional connections based on your configured conditions. Emails that do not match any of the conditions below will be sent via your Primary Connection."
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:119
+msgid "Enable Smart Routing"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:130
+#: src/Admin/Pages/SmartRoutingTab.php:242
+msgid "Send with"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:132
+msgid "WooCommerce Emails (SendLayer)"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:134
+#: src/Admin/Pages/SmartRoutingTab.php:246
+msgid "if the following conditions are met..."
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:138
+#: src/Admin/Pages/SmartRoutingTab.php:250
+msgid "Arrow Up"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:141
+#: src/Admin/Pages/SmartRoutingTab.php:253
+msgid "Arrow Down"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:162
+msgid "Contains"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:166
+msgid "Order"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:170
+#: src/Admin/Pages/SmartRoutingTab.php:193
+#: src/Admin/Pages/SmartRoutingTab.php:223
+#: src/Admin/Pages/SmartRoutingTab.php:282
+msgid "And"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:185
+#: src/Admin/Pages/SmartRoutingTab.php:215
+#: src/Admin/Pages/SmartRoutingTab.php:274
+msgid "Is"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:202
+#: src/Admin/Pages/SmartRoutingTab.php:232
+#: src/Admin/Pages/SmartRoutingTab.php:291
+msgid "or"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:235
+#: src/Admin/Pages/SmartRoutingTab.php:294
+msgid "Add New Group"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:244
+msgid "Contact Emails (SMTP.com)"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:269
+msgid "Initiator"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:301
+msgid "Light bulb icon"
+msgstr ""
+
+#: src/Admin/Pages/SmartRoutingTab.php:302
+msgid "Friendly reminder, your Primary Connection will be used for all emails that do not match the conditions above."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:113
+msgid "Email Test"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:164
+msgid "Enter email address where test email will be sent."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:181
+msgid "HTML"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:194
+msgid "Send this email in HTML or in plain text format."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:214
+msgid "You cannot send an email. Mailer is not properly configured. Please check your settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:218
+msgid "Send Email"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:275
+msgid "Success!"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:278
+msgid "Test HTML email was sent successfully! Please check your inbox to make sure it was delivered."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:280
+msgid "Test plain text email was sent successfully! Please check your inbox to make sure it was delivered."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:320
+msgid "Test failed. Please use a valid email address and try to resend the test email."
+msgstr ""
+
+#. translators: %s - email address a test email will be sent to.
+#: src/Admin/Pages/TestTab.php:332
+#: src/Admin/Pages/TestTab.php:339
+msgid "Test email to %s"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:724
+msgid "SSL certificate issue."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:726
+msgid "This means your web server cannot reliably make secure connections (make requests to HTTPS sites)."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:727
+#: src/Admin/Pages/TestTab.php:792
+msgid "Typically this error is returned when web server is not configured properly."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:730
+msgid "Contact your web hosting provider and inform them your site has an issue with SSL certificates."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:731
+#: src/Admin/Pages/TestTab.php:796
+msgid "The exact error you can provide them is in the Error log, available at the bottom of this page."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:732
+#: src/Admin/Pages/TestTab.php:797
+msgid "Ask them to resolve the issue then try again."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:742
+msgid "Could not connect to host."
+msgstr ""
+
+#. translators: %s - SMTP host address.
+#: src/Admin/Pages/TestTab.php:746
+#: src/Admin/Pages/TestTab.php:788
+#: src/Admin/Pages/TestTab.php:904
+msgid "This means your web server was unable to connect to %s."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:749
+#: src/Admin/Pages/TestTab.php:791
+#: src/Admin/Pages/TestTab.php:907
+msgid "This means your web server was unable to connect to the host server."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:750
+msgid "Typically this error is returned your web server is blocking the connections or the SMTP host denying the request."
+msgstr ""
+
+#. translators: %s - SMTP host address.
+#: src/Admin/Pages/TestTab.php:754
+msgid "Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:757
+msgid "If using \"Other SMTP\" Mailer, triple check your SMTP settings including host address, email, and password."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:758
+msgid "If using \"Other SMTP\" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc)."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:767
+msgid "Invalid SendGrid API key"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:769
+msgid "It looks like your SendGrid API Key is invalid."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:772
+#: src/Admin/Pages/TestTab.php:859
+msgid "Go to WP Mail SMTP plugin Settings page."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:773
+msgid "Make sure your API Key in the SendGrid mailer settings is correct and valid."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:774
+msgid "Save the plugin settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:775
+msgid "If updating the API Key doesn't resolve this issue, please contact our support."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:784
+msgid "Could not connect to your host."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:795
+msgid "Contact your web hosting provider and inform them you are having issues making outbound connections."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:806
+msgid "Could not authenticate your SMTP account."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:808
+msgid "This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:809
+msgid "Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:812
+msgid "Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:813
+#: src/Admin/Pages/TestTab.php:940
+msgid "Contact your SMTP host to confirm you are using the correct username and password."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:814
+#: src/Admin/Pages/TestTab.php:941
+msgid "Verify with your SMTP host that your account has permissions to send emails using outside connections."
+msgstr ""
+
+#. translators: %s - URL to the wpmailsmtp.com doc page.
+#: src/Admin/Pages/TestTab.php:817
+msgid "Visit our documentation for additional tips on how to resolve this error."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:837
+msgid "Error due to unsolicited and/or bulk e-mail."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:839
+msgid "This means the connection to your SMTP host was made successfully, but the host rejected the email."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:840
+msgid "Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:843
+msgid "Make sure you are not sending emails with too many recipients. Example: single email should not have 10+ recipients. You can install any WordPress e-mail logging plugin to check your recipients (TO, CC and BCC)."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:844
+msgid "Contact your SMTP host to ask about sending/rate limits."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:845
+msgid "Verify with them your SMTP account is in good standing and your account has not been flagged."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:854
+msgid "Unauthenticated senders are not allowed."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:856
+msgid "This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:861
+msgid "Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:872
+msgid "Misconfigured server certificate."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:874
+msgid "This means OpenSSL on your server isn't able to verify the host certificate."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:875
+msgid "There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server's OpenSSL is using an outdated CA bundle."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:878
+msgid "Verify that the host's SSL certificate is valid."
+msgstr ""
+
+#. translators: %s - URL to the PHP openssl manual
+#: src/Admin/Pages/TestTab.php:881
+msgid "Contact your hosting support, show them the \"full Error Log for debugging\" below and share this link with them."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:900
+msgid "Could not connect to the SMTP host."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:908
+#: src/Admin/Pages/TestTab.php:1372
+msgid "Typically this error is returned for one of the following reasons:"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:911
+msgid "SMTP settings are incorrect (wrong port, security setting, incorrect host)."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:914
+#: src/Admin/Pages/TestTab.php:1378
+msgid "Your web server is blocking the connection."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:917
+msgid "Your SMTP host is rejecting the connection."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:922
+msgid "Triple check your SMTP settings including host address, email, and password, port, and security."
+msgstr ""
+
+#. translators: %1$s - SMTP host address, %2$s - SMTP port, %3$s - SMTP encryption.
+#: src/Admin/Pages/TestTab.php:925
+msgid "Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:938
+msgid "no"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:950
+#: src/Admin/Pages/TestTab.php:965
+#: src/Admin/Pages/TestTab.php:1005
+msgid "Mailgun failed."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:952
+msgid "It seems that you forgot to activate your Mailgun account."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:955
+msgid "Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:956
+msgid "If you do not see activation email, go to your Mailgun control panel and resend the activation email."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:967
+msgid "Typically this error occurs because there is an issue with your Mailgun settings, in many cases Mailgun API Key, Domain Name, or Region is incorrect."
+msgstr ""
+
+#. translators: %1$s - Mailgun API Key area URL.
+#: src/Admin/Pages/TestTab.php:972
+msgid "Go to your Mailgun account and verify that your Mailgun API Key is correct."
+msgstr ""
+
+#. translators: %1$s - Mailgun domains area URL.
+#: src/Admin/Pages/TestTab.php:985
+msgid "Verify your Domain Name is correct."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:996
+msgid "Verify your domain Region is correct."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1007
+msgid "Your Mailgun account does not have access to send emails."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1008
+msgid "Typically this error occurs because you have not set up and/or complete domain name verification for your Mailgun account."
+msgstr ""
+
+#. translators: %s - Mailgun documentation URL.
+#: src/Admin/Pages/TestTab.php:1013
+msgid "Go to our how-to guide for setting up Mailgun with WP Mail SMTP."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1025
+msgid "Complete the steps in section \"2. Verify Your Domain\"."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1034
+#: src/Admin/Pages/TestTab.php:1083
+#: src/Admin/Pages/TestTab.php:1103
+#: src/Admin/Pages/TestTab.php:1131
+#: src/Admin/Pages/TestTab.php:1147
+#: src/Admin/Pages/TestTab.php:1199
+#: src/Admin/Pages/TestTab.php:1225
+msgid "Google API Error."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1036
+msgid "You have not properly configured Gmail mailer."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1037
+msgid "Make sure that you have clicked the \"Allow plugin to send emails using your Google account\" button under Gmail settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1040
+msgid "Go to plugin Settings page and click the \"Allow plugin to send emails using your Google account\" button."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1041
+msgid "After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1042
+msgid "Please click \"Agree\", if you see that button. If not - you will need to enable less secure apps first:"
+msgstr ""
+
+#. translators: %s - Google support article URL.
+#: src/Admin/Pages/TestTab.php:1047
+msgid "if you are using regular Gmail account, please read this article to proceed."
+msgstr ""
+
+#. translators: %s - Google support article URL.
+#: src/Admin/Pages/TestTab.php:1062
+msgid "if you are using Google Workspace, please read this article to proceed."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1085
+msgid "Typically this error occurs because the address to which the email was sent to is invalid or was empty."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1088
+msgid "Check the \"Send To\" email address used and confirm it is a valid email and was not empty."
+msgstr ""
+
+#. translators: 1 - correct email address example. 2 - incorrect email address example.
+#: src/Admin/Pages/TestTab.php:1090
+msgid "It should be something like this: %1$s. These are incorrect values: %2$s."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1094
+msgid "Make sure that the generated email has a TO header, useful when you are responsible for email creation."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1105
+msgid "Unfortunately, this error can be due to many different reasons."
+msgstr ""
+
+#. translators: %s - Blog article URL.
+#: src/Admin/Pages/TestTab.php:1108
+msgid "Please read this article to learn more about what can cause this error and follow the steps below."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1121
+#: src/Providers/Gmail/Mailer.php:249
+msgid "Go to WP Mail SMTP plugin settings page. Click the “Remove OAuth Connection” button."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1122
+#: src/Providers/Gmail/Mailer.php:250
+msgid "Then click the “Allow plugin to send emails using your Google account” button and re-enable access."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1133
+msgid "Authentication code that Google returned to you has already been used on your previous auth attempt."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1136
+msgid "Make sure that you are not trying to manually clean up the plugin options to retry the \"Allow...\" step."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1137
+msgid "Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1138
+msgid "Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1149
+msgid "There are various reasons for that, please review the steps below."
+msgstr ""
+
+#. translators: %s - Google Workspace Admin area URL.
+#: src/Admin/Pages/TestTab.php:1154
+msgid "Make sure that your Google Workspace trial period has not expired. You can check the status here."
+msgstr ""
+
+#. translators: %s - Google Workspace Admin area URL.
+#: src/Admin/Pages/TestTab.php:1167
+msgid "Make sure that Gmail app in your Google Workspace is actually enabled. You can check that in Apps list in Google Workspace Admin area."
+msgstr ""
+
+#. translators: %s - Google Developers Console URL.
+#: src/Admin/Pages/TestTab.php:1180
+msgid "Make sure that you have Gmail API enabled, and you can do that here."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1202
+#: src/Admin/Pages/TestTab.php:1230
+msgid "Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled."
+msgstr ""
+
+#. translators: %s - Gmail documentation URL.
+#: src/Admin/Pages/TestTab.php:1205
+msgid "Please follow our Gmail tutorial to be sure that all the correct project and data is applied."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1227
+msgid "You may have added a new API to a project"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1231
+msgid "Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1240
+msgid "SMTP.com API Error."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1242
+msgid "Your Sender Name option is incorrect."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1245
+msgid "Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1254
+msgid "GuzzleHttp requirements."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1256
+msgid "GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1259
+msgid "Edit your php.ini file on your hosting server."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1260
+msgid "(Recommended) Enable PHP extension: cURL, by adding \"extension=curl\" to the php.ini file (without the quotation marks) OR"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1261
+msgid "(If cURL can't be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding \"allow_url_fopen = On\" to the php.ini file (without the quotation marks)"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1262
+msgid "If you don't know how to do the above we strongly suggest contacting your hosting support and provide them the \"full Error Log for debugging\" below and these steps. They should be able to fix this issue for you."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1271
+#: src/Admin/Pages/TestTab.php:1300
+msgid "SparkPost API failed."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1273
+msgid "Typically this error occurs because there is an issue with your SparkPost settings, in many cases an incorrect API key."
+msgstr ""
+
+#. translators: %1$s - SparkPost API Keys area URL, %1$s - SparkPost EU API Keys area URL.
+#: src/Admin/Pages/TestTab.php:1278
+msgid "Go to your SparkPost account or SparkPost EU account and verify that your API key is correct."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1291
+msgid "Verify that your API key has \"Transmissions: Read/Write\" permission."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1302
+msgid "Typically this error occurs because there is an issue with your SparkPost settings, in many cases an incorrect region."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1305
+msgid "Verify that your SparkPost account region is selected in WP Mail SMTP settings."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1326
+msgid "PCRE library issue"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1328
+msgid "It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1329
+msgid "There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1332
+msgid "Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1333
+msgid "They should be able to resolve this issue for you."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1334
+msgid "For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1369
+msgid "An issue was detected."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1371
+msgid "This means your test email was unable to be sent."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1375
+msgid "Plugin settings are incorrect (wrong SMTP settings, invalid Mailer configuration, etc)."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1381
+msgid "Your host is rejecting the connection."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1386
+msgid "Triple-check the plugin settings and consider reconfiguring to make sure everything is correct. Maybe there was an issue with copy&pasting."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1388
+msgid "Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1394
+msgid "Try using a different mailer."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1432
+msgid "There was a problem while sending the test email."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1449
+msgid "Recommended next steps:"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1457
+msgid "Need support?"
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com account area link.
+#: src/Admin/Pages/TestTab.php:1465
+msgid "As a WP Mail SMTP Pro user you have access to WP Mail SMTP priority support. Please log in to your WPMailSMTP.com account and submit a support ticket."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1483
+msgid "WP Mail SMTP is a free plugin, and the team behind WPForms maintains it to give back to the WordPress community."
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com URL.
+#: src/Admin/Pages/TestTab.php:1490
+msgid "To access our world class support, please upgrade to WP Mail SMTP Pro. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1505
+msgid "Additionally, you can take advantage of our White Glove Setup. Sit back and relax while we handle everything for you! If you simply don't have time or maybe you feel a bit in over your head - we got you covered."
+msgstr ""
+
+#. Translators: %s - discount value $50
+#: src/Admin/Pages/TestTab.php:1512
+msgid "As a valued WP Mail SMTP user, you will get %s off regular pricing, automatically applied at checkout!"
+msgstr ""
+
+#. translators: %1$s - WP Mail SMTP support policy URL, %2$s - WP Mail SMTP support forum URL, %3$s - WPMailSMTP.com URL.
+#: src/Admin/Pages/TestTab.php:1528
+msgid "Alternatively, we also offer limited support on the WordPress.org support forums. You can create a support thread there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider upgrading to WP Mail SMTP Pro to access our priority support ticket system."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1547
+msgid "Please copy the error log message below into the support ticket."
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1552
+msgid "View Full Error Log"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1556
+msgid "Copy Error Log"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1559
+msgid "Copied"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1570
+#: src/Admin/Pages/TestTab.php:1601
+msgid "Send Another Test Email"
+msgstr ""
+
+#: src/Admin/Pages/TestTab.php:1593
+msgid "The test email might have sent, but its deliverability should be improved."
+msgstr ""
+
+#: src/Admin/Pages/Tools.php:41
+msgid "Tools"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:41
+msgid "Lite vs Pro"
+msgstr ""
+
+#. translators: %s - plugin current license type.
+#: src/Admin/Pages/VersusTab.php:72
+msgid "%s vs Pro"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:80
+msgid "Get the most out of WP Mail SMTP by upgrading to Pro and unlocking all of the powerful features."
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:89
+msgid "Feature"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:99
+msgid "Pro"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:140
+msgid "Get WP Mail SMTP Pro Today and Unlock all of these Powerful Features"
+msgstr ""
+
+#. Translators: %s - discount value $50.
+#: src/Admin/Pages/VersusTab.php:148
+msgid "Bonus: WP Mail SMTP Lite users get %s off regular price, automatically applied at checkout."
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:178
+msgid "Mailer Options"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:179
+msgid "WordPress Multisite"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:180
+msgid "Customer Support"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:201
+msgid "Emails are not logged"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:207
+msgid "Access to all Email Logging options right inside WordPress"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:215
+msgid "No controls over whether default WordPress emails are sent"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:221
+msgid "Complete Email Controls management for most default WordPress emails"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:229
+msgid "Limited Mailers"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:229
+msgid "Access is limited to standard mailer options only"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:235
+msgid "Additional Mailer Options"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:235
+msgid "Microsoft Outlook (with Office365 support), Amazon SES and Zoho Mail"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:243
+msgid "No Global Network Settings"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:249
+msgid "All Global Network Settings"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:249
+msgid "Optionally configure settings at the network level or manage separately for each subsite"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:257
+msgid "Limited Support"
+msgstr ""
+
+#: src/Admin/Pages/VersusTab.php:263
+msgid "Priority Support"
+msgstr ""
+
+#: src/Admin/Review.php:137
+msgid "Are you enjoying WP Mail SMTP?"
+msgstr ""
+
+#: src/Admin/Review.php:140
+msgid "No"
+msgstr ""
+
+#: src/Admin/Review.php:144
+msgid "We're sorry to hear you aren't enjoying WP Mail SMTP. We would love a chance to improve. Could you take a minute and let us know what we can do better?"
+msgstr ""
+
+#: src/Admin/Review.php:151
+msgid "Provide Feedback"
+msgstr ""
+
+#: src/Admin/Review.php:156
+msgid "No thanks"
+msgstr ""
+
+#: src/Admin/Review.php:161
+msgid "That's fantastic! Would you consider giving it a 5-star rating on WordPress.org? It will help other users with email issues and it will mean the world to us!"
+msgstr ""
+
+#: src/Admin/Review.php:164
+msgid "Yes, I'll rate it with 5-stars"
+msgstr ""
+
+#: src/Admin/Review.php:166
+msgid "No, maybe later"
+msgstr ""
+
+#: src/Admin/Review.php:167
+msgid "I already did"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:238
+msgid "We're sorry, the %mailer% mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
+msgstr ""
+
+#. Translators: %s - discount value $50
+#: src/Admin/SetupWizard.php:243
+msgid "Bonus: WP Mail SMTP users get %s off regular price,
applied at checkout."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:277
+msgid "WP Mail SMTP › Setup Wizard"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:485
+msgid "Whoops, something's not working."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:486
+msgid "It looks like something is preventing JavaScript from loading on your website. WP Mail SMTP requires JavaScript in order to give you the best possible experience."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:488
+msgid "In order to fix this issue, please check each of the items below:"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:491
+msgid "If you are using an ad blocker, please disable it or whitelist the current page."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:492
+msgid "If you aren't already using Chrome, Firefox, Safari, or Edge, then please try switching to one of these popular browsers."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:493
+msgid "Confirm that your browser is updated to the latest version."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:496
+msgid "If you've checked each of these details and are still running into issues, then please get in touch with our support team. We’d be happy to help!"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:502
+msgid "Copy the error message above and paste it in a message to the WP Mail SMTP support team."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:505
+msgid "Contact Us"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:552
+#: src/Admin/SetupWizard.php:570
+#: src/Admin/SetupWizard.php:634
+msgid "You don't have permission to change options for this WP site!"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:858
+msgid "Could not install the plugin. You don't have permission to install plugins."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:862
+msgid "Could not install the plugin. You don't have permission to activate plugins."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:868
+msgid "Could not install the plugin. Plugin slug is missing."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:888
+#: src/Admin/SetupWizard.php:892
+msgid "Could not install the plugin. Don't have file permission."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:906
+msgid "Could not install the plugin. WP Plugin installer initialization failed."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:992
+msgid "Could not install the plugin. WP Plugin installer could not retrieve plugin information."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1053
+msgid "Contact Forms by WPForms"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1059
+msgid "All in One SEO"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1065
+msgid "Google Analytics by MonsterInsights"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1071
+msgid "Code Snippets by WPCode"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1077
+msgid "Giveaways by RafflePress"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1083
+msgid "Smash Balloon Social Photo Feed"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1089
+msgid "SeedProd Landing Page Builder"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1095
+msgid "WP Call Button"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1170
+msgid "You are already using the WP Mail SMTP PRO version. Please refresh this page and verify your license key."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1174
+msgid "You don't have the permission to perform this action."
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1180
+msgid "Please enter a valid license key!"
+msgstr ""
+
+#: src/Admin/SetupWizard.php:1190
+msgid "Upgrade functionality not available!"
+msgstr ""
+
+#: src/Conflicts.php:310
+msgid "Or disable the Sendinblue email sending setting in WooCommerce > Settings > Sendinblue (tab) > Email Options (tab) > Enable Sendinblue to send WooCommerce emails."
+msgstr ""
+
+#: src/Conflicts.php:342
+msgid "Or enable \"Do not change email sender by default\" setting in Settings > Email template > Sender (tab)."
+msgstr ""
+
+#: src/Conflicts.php:355
+msgid "Or deactivate \"SMTP\" module in Branda > Emails > SMTP."
+msgstr ""
+
+#. translators: %1$s - Plugin name causing conflict.
+#: src/Conflicts.php:492
+msgid "Heads up! WP Mail SMTP has detected %1$s is activated. Please deactivate %1$s to prevent conflicts."
+msgstr ""
+
+#: src/Connect.php:56
+msgid "Almost Done"
+msgstr ""
+
+#: src/Connect.php:57
+msgid "Oops!"
+msgstr ""
+
+#: src/Connect.php:59
+msgid "Unfortunately there was a server connection error."
+msgstr ""
+
+#: src/Connect.php:119
+msgid "You are not allowed to install plugins."
+msgstr ""
+
+#: src/Connect.php:129
+msgid "Please enter your license key to connect."
+msgstr ""
+
+#: src/Connect.php:137
+msgid "Only the Lite version can be upgraded."
+msgstr ""
+
+#: src/Connect.php:152
+msgid "WP Mail SMTP Pro was already installed, but was not active. We activated it for you."
+msgstr ""
+
+#: src/Connect.php:163
+msgid "There was an error while generating an upgrade URL. Please try again."
+msgstr ""
+
+#: src/Connect.php:178
+msgid "There was an error while installing an upgrade. Please download the plugin from wpmailsmtp.com and install it manually."
+msgstr ""
+
+#: src/Connect.php:231
+msgid "There was an error while installing an upgrade. Please check file system permissions and try again. Also, you can download the plugin from wpmailsmtp.com and install it manually."
+msgstr ""
+
+#: src/Connect.php:263
+msgid "There was an error while installing an upgrade. Please try again."
+msgstr ""
+
+#: src/Connect.php:301
+msgid "Pro version installed but needs to be activated on the Plugins page."
+msgstr ""
+
+#: src/Connection.php:52
+msgid "Primary"
+msgstr ""
+
+#. translators: %s - plugin name and its version.
+#: src/Core.php:474
+msgid "EMAILING DISABLED: The %s is currently blocking all emails from being sent."
+msgstr ""
+
+#. translators: %1$s - constant name; %2$s - constant value.
+#: src/Core.php:481
+msgid "To send emails, change the value of the %1$s constant to %2$s."
+msgstr ""
+
+#. translators: %s - plugin Misc settings page URL.
+#: src/Core.php:488
+msgid "To send emails, go to plugin Misc settings and disable the \"Do Not Send\" option."
+msgstr ""
+
+#: src/Core.php:500
+msgid "If you create a test email on this page, it will still be sent."
+msgstr ""
+
+#: src/Core.php:539
+msgid "Heads up! The last email your site attempted to send was unsuccessful."
+msgstr ""
+
+#: src/Core.php:1351
+msgid "WP Mail SMTP has detected incorrect \"wp_mail\" function location. Usually, this means that emails will not be sent successfully!"
+msgstr ""
+
+#. translators: %s - plugin name.
+#: src/Core.php:1356
+msgid "It looks like the \"%s\" plugin is overwriting the \"wp_mail\" function. Please reach out to the plugin developer on how to disable or remove the \"wp_mail\" function overwrite to prevent conflicts with WP Mail SMTP."
+msgstr ""
+
+#. translators: %s - must-use plugin name.
+#: src/Core.php:1362
+msgid "It looks like the \"%s\" must-use plugin is overwriting the \"wp_mail\" function. Please reach out to your hosting provider on how to disable or remove the \"wp_mail\" function overwrite to prevent conflicts with WP Mail SMTP."
+msgstr ""
+
+#: src/Core.php:1366
+msgid "It looks like it's overwritten in the \"wp-config.php\" file. Please reach out to your hosting provider on how to disable or remove the \"wp_mail\" function overwrite to prevent conflicts with WP Mail SMTP."
+msgstr ""
+
+#. translators: %s - path.
+#: src/Core.php:1371
+msgid "Current function path: %s"
+msgstr ""
+
+#: src/DBRepair.php:101
+msgid "Unknown."
+msgstr ""
+
+#. translators: %1$s - missing table name; %2$s - error message.
+#: src/DBRepair.php:159
+msgid "Table: %1$s. Reason: %2$s"
+msgstr ""
+
+#: src/DBRepair.php:189
+msgid "Missing DB tables were created successfully."
+msgstr ""
+
+#: src/DBRepair.php:207
+msgid "The following DB table is still missing."
+msgid_plural "The following DB tables are still missing."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/DBRepair.php:215
+msgid "Some DB Tables are still missing."
+msgstr ""
+
+#: src/Helpers/UI.php:37
+msgid "On"
+msgstr ""
+
+#: src/Helpers/UI.php:38
+msgid "Off"
+msgstr ""
+
+#: src/Helpers/UI.php:87
+msgid "Remove"
+msgstr ""
+
+#: src/MailCatcherTrait.php:218
+#: src/Providers/MailerAbstract.php:308
+msgid "An email request was sent."
+msgstr ""
+
+#: src/MailCatcherTrait.php:236
+msgid "Debug Output:"
+msgstr ""
+
+#: src/MailCatcherTrait.php:306
+msgid "The selected mailer not found."
+msgstr ""
+
+#: src/MailCatcherTrait.php:310
+msgid "The selected mailer is not compatible with your PHP version."
+msgstr ""
+
+#. translators: %1$s - WP Mail SMTP, %2$s - error message.
+#: src/Migration.php:135
+msgid "There was an error while upgrading the database. Please contact %1$s support with this information: %2$s."
+msgstr ""
+
+#. translators: %1$s - the DB option name, %2$s - WP Mail SMTP, %3$s - error message.
+#: src/MigrationAbstract.php:151
+msgid "There was an error while upgrading the %1$s database. Please contact %2$s support with this information: %3$s."
+msgstr ""
+
+#. translators: %1$s - constant that was used; %2$s - file where it was used.
+#: src/Options.php:1538
+msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation."
+msgstr ""
+
+#: src/Pro/SiteHealth.php:60
+msgid "Is wpmailsmtp.com reachable?"
+msgstr ""
+
+#: src/Providers/AmazonSES/Options.php:25
+msgid "Amazon SES"
+msgstr ""
+
+#: src/Providers/AmazonSES/Options.php:39
+msgid "We're sorry, the Amazon SES mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
+msgstr ""
+
+#: src/Providers/Gmail/Auth.php:144
+msgid "Please make sure your Google Client ID and Secret in the plugin settings are valid. Save the settings and try the Authorization again."
+msgstr ""
+
+#: src/Providers/Gmail/Auth.php:257
+msgid "There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved."
+msgstr ""
+
+#: src/Providers/Gmail/Mailer.php:98
+msgid "An email request was sent to the Gmail API."
+msgstr ""
+
+#: src/Providers/Gmail/Mailer.php:120
+msgid "The response object is invalid (missing getId method)."
+msgstr ""
+
+#: src/Providers/Gmail/Mailer.php:125
+msgid "The email message ID is missing."
+msgstr ""
+
+#: src/Providers/Gmail/Mailer.php:248
+msgid "Please re-grant Google app permissions!"
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:38
+msgid "Google / Gmail"
+msgstr ""
+
+#. translators: %s - URL to our Gmail doc.
+#: src/Providers/Gmail/Options.php:41
+msgid "Our Gmail mailer works with any Gmail or Google Workspace account via the Google API. You can send WordPress emails from your main email address or a Gmail alias, and it's more secure than connecting to Gmail using SMTP credentials. We now have a One-Click Setup, which simply asks you to authorize your Google account to use our app and takes care of everything for you. Alternatively, you can connect manually, which involves several steps that are more technical than other mailer options, so we created a detailed guide to walk you through the process.
To get started, read our Gmail documentation."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:55
+msgid "The Gmail mailer works well for sites that send low numbers of emails. However, Gmail's API has rate limitations and a number of additional restrictions that can lead to challenges during setup.
If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:150
+msgid "Authorized redirect URI"
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:158
+msgid "Copy URL to clipboard"
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:163
+msgid "Please copy this URL into the \"Authorized redirect URIs\" field of your Google web application."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:200
+msgid "Allow plugin to send emails using your Google account"
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:203
+msgid "Click the button above to confirm authorization."
+msgstr ""
+
+#. translators: %s - email address, as received from Google API.
+#: src/Providers/Gmail/Options.php:218
+msgid "Connected as %s"
+msgstr ""
+
+#. translators: %s - URL to Google Gmail alias documentation page.
+#: src/Providers/Gmail/Options.php:228
+msgid "If you want to use a different From Email address you can set up a Google email alias. Follow these instructions and then select the From Email at the top of this page."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:242
+msgid "You can also send emails with different From Email addresses, by disabling the Force From Email setting and using registered aliases throughout your WordPress site as the From Email addresses."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:245
+msgid "Removing the OAuth connection will give you an ability to redo the OAuth connection or link to another Google account."
+msgstr ""
+
+#: src/Providers/Gmail/Options.php:253
+msgid "You need to save settings with Client ID and Client Secret before you can proceed."
+msgstr ""
+
+#: src/Providers/Mail/Options.php:26
+msgid "Default (none)"
+msgstr ""
+
+#. translators: %1$s - URL to all mailer doc page. %2$s - URL to the setup wizard.
+#: src/Providers/Mail/Options.php:41
+msgid "You currently have the Default (none) mailer selected, which won't improve email deliverability. Please select any other email provider and use the easy Setup Wizard to configure it."
+msgstr ""
+
+#: src/Providers/Mailgun/Options.php:28
+msgid "Mailgun"
+msgstr ""
+
+#. translators: %1$s - URL to mailgun.com; %2$s - URL to Mailgun documentation on wpmailsmtp.com
+#: src/Providers/Mailgun/Options.php:32
+msgid "Mailgun is a transactional email provider that offers a generous 3-month free trial. After that, it offers a 'Pay As You Grow' plan that allows you to pay for what you use without committing to a fixed monthly rate.
To get started, read our Mailgun documentation."
+msgstr ""
+
+#. translators: %s - API key URL.
+#: src/Providers/Mailgun/Options.php:78
+msgid "Follow this link to get a Mailgun API Key. Generate a key in the \"Mailgun API Keys\" section."
+msgstr ""
+
+#. translators: %s - Domain Name link.
+#: src/Providers/Mailgun/Options.php:109
+msgid "Follow this link to get a Domain Name from Mailgun: %s."
+msgstr ""
+
+#: src/Providers/Mailgun/Options.php:111
+msgid "Get a Domain Name"
+msgstr ""
+
+#: src/Providers/Mailgun/Options.php:145
+msgid "Define which endpoint you want to use for sending messages."
+msgstr ""
+
+#: src/Providers/Mailgun/Options.php:146
+msgid "If you are operating under EU laws, you may be required to use EU region."
+msgstr ""
+
+#. translators: %s - URL to Mailgun.com page.
+#: src/Providers/Mailgun/Options.php:151
+msgid "More information on Mailgun.com."
+msgstr ""
+
+#. translators: %s - constant name: WPMS_SMTP_PASS.
+#: src/Providers/OptionsAbstract.php:362
+msgid "To change the password you need to change the value of the constant there: %s"
+msgstr ""
+
+#. translators: %1$s - wp-config.php file, %2$s - WPMS_ON constant name.
+#: src/Providers/OptionsAbstract.php:370
+msgid "If you want to disable the use of constants, find in %1$s file the constant %2$s and turn if off:"
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:380
+msgid "All the defined constants will stop working and you will be able to change all the values on this page."
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:393
+msgid "Remove Password"
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:399
+msgid "The password is encrypted in the database, but for improved security we recommend using your site's WordPress configuration file to set your password."
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:405
+msgid "Learn More"
+msgstr ""
+
+#. translators: %1$s - Provider name; %2$s - PHP version required by Provider; %3$s - current PHP version.
+#: src/Providers/OptionsAbstract.php:466
+msgid "%1$s requires PHP %2$s to work and does not support your current PHP version %3$s. Please contact your host and request a PHP upgrade to the latest one."
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:473
+msgid "Meanwhile you can switch to some other mailers."
+msgstr ""
+
+#. translators: %s - Provider name
+#: src/Providers/OptionsAbstract.php:492
+msgid "%s requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out WPBeginner's tutorial on how to set up SSL."
+msgstr ""
+
+#: src/Providers/OptionsAbstract.php:505
+msgid "If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please select a different mailer option."
+msgstr ""
+
+#: src/Providers/Outlook/Options.php:25
+msgid "365 / Outlook"
+msgstr ""
+
+#: src/Providers/Outlook/Options.php:39
+msgid "We're sorry, the Microsoft Outlook mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
+msgstr ""
+
+#: src/Providers/Pepipost/Options.php:25
+msgid "Pepipost SMTP"
+msgstr ""
+
+#: src/Providers/PepipostAPI/Mailer.php:341
+msgid "General error"
+msgstr ""
+
+#. translators: %1$s - URL to pepipost.com site.
+#: src/Providers/PepipostAPI/Options.php:32
+msgid "Pepipost is a transactional email service. Every month Pepipost delivers over 8 billion emails from 20,000+ customers. Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever. Pepipost provides users 30,000 free emails the first 30 days."
+msgstr ""
+
+#. translators: %1$s - URL to wpmailsmtp.com doc.
+#: src/Providers/PepipostAPI/Options.php:35
+msgid "Read our Pepipost documentation to learn how to configure Pepipost and improve your email deliverability."
+msgstr ""
+
+#: src/Providers/PepipostAPI/Options.php:55
+msgid "Get Started with Pepipost"
+msgstr ""
+
+#: src/Providers/PepipostAPI/Options.php:63
+msgid "Pepipost"
+msgstr ""
+
+#. translators: %s - link to get an API Key.
+#: src/Providers/PepipostAPI/Options.php:115
+#: src/Providers/Sendinblue/Options.php:130
+msgid "Follow this link to get an API Key: %s."
+msgstr ""
+
+#: src/Providers/PepipostAPI/Options.php:117
+msgid "Get the API Key"
+msgstr ""
+
+#: src/Providers/Postmark/Mailer.php:414
+msgid "Server API Token:"
+msgstr ""
+
+#: src/Providers/Postmark/Mailer.php:416
+msgid "Message Stream ID:"
+msgstr ""
+
+#. translators: %1$s - URL to postmarkapp.com site.
+#: src/Providers/Postmark/Options.php:33
+msgid "Postmark is a transactional email provider that offers great deliverability and accessible pricing for any business. You can start out with the free trial that allows you to send 100 test emails each month via its secure API."
+msgstr ""
+
+#. translators: %2$s - URL to wpmailsmtp.com doc.
+#: src/Providers/Postmark/Options.php:36
+msgid "To get started, read our Postmark documentation."
+msgstr ""
+
+#: src/Providers/Postmark/Options.php:55
+msgid "Postmark"
+msgstr ""
+
+#. translators: %s - Server API Token link.
+#: src/Providers/Postmark/Options.php:105
+msgid "Follow this link to get a Server API Token from Postmark: %s."
+msgstr ""
+
+#: src/Providers/Postmark/Options.php:107
+msgid "Get Server API Token"
+msgstr ""
+
+#. translators: %s - URL to Postmark documentation on wpmailsmtp.com
+#: src/Providers/Postmark/Options.php:135
+msgid "Message Stream ID is optional. By default outbound (Default Transactional Stream) will be used. More information can be found in our Postmark documentation."
+msgstr ""
+
+#: src/Providers/Sendgrid/Options.php:29
+msgid "SendGrid"
+msgstr ""
+
+#. translators: %1$s - URL to sendgrid.com; %2$s - URL to Sendgrid documentation on wpmailsmtp.com
+#: src/Providers/Sendgrid/Options.php:33
+msgid "SendGrid is a popular transactional email provider that sends more than 35 billion emails every month. If you're just starting out, the free plan allows you to send up to 100 emails each day without entering your credit card details.
To get started, read our SendGrid documentation."
+msgstr ""
+
+#. translators: %s - API key link.
+#: src/Providers/Sendgrid/Options.php:86
+msgid "Follow this link to get an API Key from SendGrid: %s."
+msgstr ""
+
+#: src/Providers/Sendgrid/Options.php:88
+msgid "Create API Key"
+msgstr ""
+
+#. translators: %s - SendGrid access level.
+#: src/Providers/Sendgrid/Options.php:96
+msgid "To send emails you will need only a %s access level for this API key."
+msgstr ""
+
+#. translators: %s - URL to SendGrid documentation on wpmailsmtp.com
+#: src/Providers/Sendgrid/Options.php:120
+msgid "Please input the sending domain/subdomain you configured in your SendGrid dashboard. More information can be found in our SendGrid documentation."
+msgstr ""
+
+#. translators: %1$s - URL to brevo.com site.
+#: src/Providers/Sendinblue/Options.php:38
+msgid "Brevo (formerly Sendinblue) is one of our recommended mailers. It's a transactional email provider with scalable price plans, so it's suitable for any size of business.
If you're just starting out, you can use Brevo's free plan to send up to 300 emails a day. You don't need to use a credit card to try it out. When you're ready, you can upgrade to a higher plan to increase your sending limits."
+msgstr ""
+
+#. translators: %2$s - URL to wpmailsmtp.com doc.
+#: src/Providers/Sendinblue/Options.php:41
+msgid "To get started, read our Brevo documentation."
+msgstr ""
+
+#: src/Providers/Sendinblue/Options.php:62
+msgid "Get Brevo Now (Free)"
+msgstr ""
+
+#: src/Providers/Sendinblue/Options.php:69
+msgid "We believe in full transparency. The Brevo (formerly Sendinblue) links above are tracking links as part of our partnership with Brevo. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users."
+msgstr ""
+
+#: src/Providers/Sendinblue/Options.php:76
+msgid "Brevo"
+msgstr ""
+
+#: src/Providers/Sendinblue/Options.php:132
+msgid "Get v3 API Key"
+msgstr ""
+
+#. translators: %s - URL to Sendinblue documentation on wpmailsmtp.com
+#: src/Providers/Sendinblue/Options.php:156
+msgid "Please input the sending domain/subdomain you configured in your Brevo (formerly Sendinblue) dashboard. More information can be found in our Brevo documentation."
+msgstr ""
+
+#: src/Providers/Sendlayer/Mailer.php:404
+#: src/Providers/SparkPost/Mailer.php:484
+msgid "API Key:"
+msgstr ""
+
+#. translators: %1$s - URL to sendlayer.com; %2$s - URL to SendLayer documentation on wpmailsmtp.com.
+#: src/Providers/Sendlayer/Options.php:40
+msgid "SendLayer is our #1 recommended mailer. Its affordable pricing and simple setup make it the perfect choice for WordPress sites. SendLayer will authenticate your outgoing emails to make sure they always hit customers’ inboxes, and it has detailed documentation to help you authorize your domain.
You can send hundreds of emails for free when you sign up for a trial.
To get started, read our SendLayer documentation."
+msgstr ""
+
+#: src/Providers/Sendlayer/Options.php:72
+msgid "SendLayer"
+msgstr ""
+
+#. translators: %s - API key link.
+#: src/Providers/Sendlayer/Options.php:120
+msgid "Follow this link to get an API Key from SendLayer: %s."
+msgstr ""
+
+#: src/Providers/Sendlayer/Options.php:122
+#: src/Providers/SMTPcom/Options.php:126
+#: src/Providers/SparkPost/Options.php:111
+msgid "Get API Key"
+msgstr ""
+
+#: src/Providers/SMTP/Options.php:28
+msgid "Other SMTP"
+msgstr ""
+
+#. translators: %s - URL to SMTP documentation.
+#: src/Providers/SMTP/Options.php:32
+msgid "The Other SMTP option lets you send emails through an SMTP server instead of using a provider's API. This is easy and convenient, but it's less secure than the other mailers. Please note that your provider may not allow you to send a large number of emails. In that case, please use a different mailer.
To get started, read our Other SMTP documentation."
+msgstr ""
+
+#. translators: %1$s - URL to SMTP2GO.com site.
+#: src/Providers/SMTP2GO/Options.php:37
+msgid "SMTP2GO provides a robust and reliable email delivery service with global infrastructure, real-time analytics, and advanced security features. If you're just starting out, you can use SMTP2GO's free plan to send up to 1000 emails per month."
+msgstr ""
+
+#. translators: %2$s - URL to wpmailsmtp.com doc.
+#: src/Providers/SMTP2GO/Options.php:40
+msgid "To get started, read our SMTP2GO documentation."
+msgstr ""
+
+#: src/Providers/SMTP2GO/Options.php:59
+msgid "SMTP2GO"
+msgstr ""
+
+#. translators: %s - link to get an API Key.
+#: src/Providers/SMTP2GO/Options.php:112
+msgid "Generate an API key on the Sending → API Keys page in your %s."
+msgstr ""
+
+#: src/Providers/SMTP2GO/Options.php:114
+msgid "control panel"
+msgstr ""
+
+#: src/Providers/SMTPcom/Mailer.php:451
+msgid "Api Key:"
+msgstr ""
+
+#: src/Providers/SMTPcom/Mailer.php:453
+msgid "Channel:"
+msgstr ""
+
+#. translators: %s - URL to smtp.com site.
+#: src/Providers/SMTPcom/Options.php:48
+msgid "SMTP.com is one of our recommended mailers. It's a transactional email provider that's currently used by 100,000+ businesses. SMTP.com is an established brand that's been offering email services for more than 20 years.
SMTP.com offers a free 30-day trial that allows you to send up to 50,000 emails."
+msgstr ""
+
+#. translators: %s - URL to wpmailsmtp.com doc page for stmp.com.
+#: src/Providers/SMTPcom/Options.php:56
+msgid "To get started, read our SMTP.com documentation."
+msgstr ""
+
+#: src/Providers/SMTPcom/Options.php:82
+msgid "SMTP.com"
+msgstr ""
+
+#. translators: %s - API key link.
+#: src/Providers/SMTPcom/Options.php:124
+msgid "Follow this link to get an API Key from SMTP.com: %s."
+msgstr ""
+
+#. translators: %s - Channel/Sender Name link for smtp.com documentation.
+#: src/Providers/SMTPcom/Options.php:153
+msgid "Follow this link to get a Sender Name from SMTP.com: %s."
+msgstr ""
+
+#: src/Providers/SMTPcom/Options.php:155
+msgid "Get Sender Name"
+msgstr ""
+
+#: src/Providers/SparkPost/Mailer.php:486
+msgid "Region:"
+msgstr ""
+
+#. translators: %1$s - URL to SparkPost website.
+#: src/Providers/SparkPost/Options.php:33
+msgid "SparkPost is a transactional email provider that's trusted by big brands and small businesses. It sends more than 4 trillion emails each year and reports 99.9%% uptime. You can get started with the free test account that lets you send up to 500 emails per month."
+msgstr ""
+
+#. translators: %2$s - URL to wpmailsmtp.com doc.
+#: src/Providers/SparkPost/Options.php:36
+msgid "To get started, read our SparkPost documentation."
+msgstr ""
+
+#: src/Providers/SparkPost/Options.php:54
+msgid "SparkPost"
+msgstr ""
+
+#. translators: %s - API Key link.
+#: src/Providers/SparkPost/Options.php:109
+msgid "Follow this link to get an API Key from SparkPost: %s."
+msgstr ""
+
+#: src/Providers/SparkPost/Options.php:150
+msgid "Select your SparkPost account region."
+msgstr ""
+
+#. translators: %s - URL to Mailgun.com page.
+#: src/Providers/SparkPost/Options.php:155
+msgid "More information on SparkPost."
+msgstr ""
+
+#: src/Providers/Zoho/Options.php:25
+msgid "Zoho Mail"
+msgstr ""
+
+#: src/Providers/Zoho/Options.php:41
+msgid "We're sorry, the Zoho Mail mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
+msgstr ""
+
+#: src/Queue/Email.php:150
+msgid "Record not found in DB"
+msgstr ""
+
+#: src/Queue/Email.php:162
+msgid "Invalid record format"
+msgstr ""
+
+#. translators: %1$s - JSON error message.
+#: src/Queue/Email.php:171
+msgid "Data JSON decoding error: %1$s"
+msgstr ""
+
+#. translators: %1$s - JSON error message.
+#: src/Queue/Email.php:545
+msgid "Data JSON encoding error: %1$s"
+msgstr ""
+
+#. translators: %1$s - Database error message.
+#: src/Queue/Email.php:600
+msgid "Insert/update SQL query error: %1$s"
+msgstr ""
+
+#. translators: %1$s - exception message.
+#: src/Queue/Queue.php:117
+msgid "[Emails Queue] Skipped enqueueing email. %1$s."
+msgstr ""
+
+#. translators: %1$d - email ID.
+#: src/Queue/Queue.php:143
+msgid "[Emails Queue] Skipped email sending from the queue. Queue::send_email method was called directly. Email ID: %1$d."
+msgstr ""
+
+#. translators: %1$s - exception message; %2$s - email ID.
+#: src/Queue/Queue.php:159
+msgid "[Emails Queue] Skipped email sending from the queue. %1$s. Email ID: %2$s"
+msgstr ""
+
+#. translators: %1$d - email ID; %2$s - email status.
+#: src/Queue/Queue.php:173
+msgid "[Emails Queue] Skipped email sending from the queue. Wrong email status. Email ID: %1$d, email status: %2$s."
+msgstr ""
+
+#. translators: %1$s - exception message; %2$d - email ID.
+#: src/Queue/Queue.php:231
+msgid "[Emails Queue] Failed to update queue record after sending email from the queue. %1$s. Email ID: %2$d"
+msgstr ""
+
+#. translators: %1$s - exception message.
+#: src/Queue/Queue.php:401
+#: src/Queue/Queue.php:695
+msgid "[Emails Queue] Skipped processing enqueued email. %1$s. Email ID: %2$d"
+msgstr ""
+
+#. translators: %s - site domain.
+#: src/Reports/Emails/Summary.php:88
+msgid "Your Weekly WP Mail SMTP Summary for %s"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:154
+msgid "WP Mail SMTP Weekly Email Summary"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:169
+#: src/Reports/Emails/Summary.php:173
+msgid "WP Mail SMTP Logo"
+msgstr ""
+
+#. translators: %1$s - link to a site; %2$s - link to the settings page.
+#: src/Reports/Emails/Summary.php:209
+msgid "This email was auto-generated and sent from %1$s. Learn %2$s."
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:211
+msgid "how to disable it"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:254
+msgid "Hi there,"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:257
+msgid "Let’s see how many emails you’ve sent with WP Mail SMTP."
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:265
+msgid "Total Emails"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:276
+msgid "Last week"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:292
+msgid "Reports"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:293
+msgid "Want More Stats?"
+msgstr ""
+
+#: src/Reports/Emails/Summary.php:297
+msgid "Upgrade to WP Mail SMTP Pro and unlock Email Log and advanced Email Reports. Start measuring the success of your emails today!"
+msgstr ""
+
+#: src/SiteHealth.php:97
+msgid "Is WP Mail SMTP mailer setup complete?"
+msgstr ""
+
+#: src/SiteHealth.php:102
+msgid "Do WP Mail SMTP DB tables exist?"
+msgstr ""
+
+#: src/SiteHealth.php:107
+msgid "Is email domain configured properly?"
+msgstr ""
+
+#: src/SiteHealth.php:133
+msgid "Version"
+msgstr ""
+
+#: src/SiteHealth.php:137
+msgid "License key type"
+msgstr ""
+
+#: src/SiteHealth.php:142
+msgid "No debug notices found."
+msgstr ""
+
+#: src/SiteHealth.php:145
+msgid "DB tables"
+msgstr ""
+
+#: src/SiteHealth.php:147
+msgid "No DB tables found."
+msgstr ""
+
+#: src/SiteHealth.php:159
+msgid "Lite install date"
+msgstr ""
+
+#: src/SiteHealth.php:176
+msgid "None selected"
+msgstr ""
+
+#: src/SiteHealth.php:198
+msgid "Current mailer"
+msgstr ""
+
+#: src/SiteHealth.php:203
+msgid "WP Mail SMTP mailer setup is complete"
+msgstr ""
+
+#: src/SiteHealth.php:212
+msgid "The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it's working properly."
+msgstr ""
+
+#: src/SiteHealth.php:217
+msgid "Test email sending"
+msgstr ""
+
+#: src/SiteHealth.php:225
+msgid "You currently have the default mailer selected, which means that you haven’t set up SMTP yet."
+msgstr ""
+
+#: src/SiteHealth.php:230
+msgid "WP Mail SMTP mailer setup is incomplete"
+msgstr ""
+
+#: src/SiteHealth.php:236
+msgid "The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer."
+msgstr ""
+
+#: src/SiteHealth.php:241
+#: src/SiteHealth.php:375
+msgid "Configure mailer"
+msgstr ""
+
+#: src/SiteHealth.php:258
+msgid "WP Mail SMTP DB tables are created"
+msgstr ""
+
+#: src/SiteHealth.php:264
+msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database."
+msgstr ""
+
+#: src/SiteHealth.php:282
+msgid "WP Mail SMTP DB tables check has failed"
+msgstr ""
+
+#. translators: %s - the list of missing tables separated by comma.
+#: src/SiteHealth.php:288
+msgid "Missing table: %s"
+msgid_plural "Missing tables: %s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. translators: %1$s - Settings Page URL; %2$s - The aria label; %3$s - The text that will appear on the link.
+#: src/SiteHealth.php:293
+msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to %3$s. If this issue persists, please contact our support."
+msgstr ""
+
+#: src/SiteHealth.php:295
+msgid "Go to WP Mail SMTP settings page."
+msgstr ""
+
+#: src/SiteHealth.php:296
+msgid "create the missing DB tables by clicking on this link"
+msgstr ""
+
+#: src/SiteHealth.php:333
+msgid "Current from email domain"
+msgstr ""
+
+#: src/SiteHealth.php:338
+msgid "Email domain is configured correctly"
+msgstr ""
+
+#: src/SiteHealth.php:347
+msgid "All checks for your email domain were successful. It looks like everything is configured correctly."
+msgstr ""
+
+#: src/SiteHealth.php:365
+msgid "Email domain issues detected"
+msgstr ""
+
+#. translators: %s: Directory path.
+#: src/Uploads.php:58
+msgid "Unable to create directory %s. Is its parent directory writable by the server?"
+msgstr ""
+
+#. translators: %s: Directory path.
+#: src/Uploads.php:69
+msgid "Unable to write in WPMailSMTP upload directory %s. Is it writable by the server?"
+msgstr ""
+
+#. translators: %1$s - date, \a\t - specially escaped "at", %2$s - time.
+#: src/WP.php:205
+msgid "%1$s \\a\\t %2$s"
+msgstr ""
+
+#. translators: %s - plugin name.
+#: src/WP.php:552
+msgid "WP Core (%s)"
+msgstr ""
+
+#: src/WP.php:693
+msgid "WP Core"
+msgstr ""
+
+#: wp_mail_smtp.php:169
+msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro."
+msgstr ""
+
+#. translators: %1$s - WPBeginner URL for recommended WordPress hosting.
+#: wp_mail_smtp.php:197
+msgid "Your site is running an insecure version of PHP that is no longer supported. Please contact your web hosting provider to update your PHP version or switch to a recommended WordPress hosting company."
+msgstr ""
+
+#. translators: %s - WPMailSMTP.com docs URL with more details.
+#: wp_mail_smtp.php:225
+msgid "WP Mail SMTP plugin is disabled on your site until you fix the issue. Read more for additional information."
+msgstr ""
+
+#. translators: %s The minimal WP version supported by WP Mail SMTP.
+#: wp_mail_smtp.php:297
+msgid "Your site is running an old version of WordPress that is no longer supported by WP Mail SMTP. Please update your WordPress site to at least version %s."
+msgstr ""
+
+#: wp_mail_smtp.php:308
+msgid "WP Mail SMTP plugin is disabled on your site until WordPress is updated to the required version."
+msgstr ""
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.min.css b/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.min.css
new file mode 100644
index 000000000..da64e64d0
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.min.css
@@ -0,0 +1 @@
+.wp-mail-smtp-tooltip{display:block!important;z-index:10000;max-width:350px}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-inner{background:#2d4f60;color:#fff;border-radius:5px;padding:16px 20px;font-size:14px}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-inner a{color:#fff;font-weight:700}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#2d4f60;z-index:1}.wp-mail-smtp-tooltip[x-placement^=top]{padding-bottom:5px}.wp-mail-smtp-tooltip[x-placement^=top] .wp-mail-smtp-tooltip-arrow{border-width:5px 5px 0;border-left-color:rgba(0,0,0,0)!important;border-right-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;bottom:0;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.wp-mail-smtp-tooltip[x-placement^=bottom]{padding-top:5px}.wp-mail-smtp-tooltip[x-placement^=bottom] .wp-mail-smtp-tooltip-arrow{border-width:0 5px 5px;border-left-color:rgba(0,0,0,0)!important;border-right-color:rgba(0,0,0,0)!important;border-top-color:rgba(0,0,0,0)!important;top:0;left:calc(50% - 5px);margin-top:0;margin-bottom:0}.wp-mail-smtp-tooltip[x-placement^=right]{padding-left:5px}.wp-mail-smtp-tooltip[x-placement^=right] .wp-mail-smtp-tooltip-arrow{border-width:5px 5px 5px 0;border-left-color:rgba(0,0,0,0)!important;border-top-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;left:0;top:calc(50% - 5px);margin-left:0;margin-right:0}.wp-mail-smtp-tooltip[x-placement^=left]{padding-right:5px}.wp-mail-smtp-tooltip[x-placement^=left] .wp-mail-smtp-tooltip-arrow{border-width:5px 0 5px 5px;border-top-color:rgba(0,0,0,0)!important;border-right-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;right:0;top:calc(50% - 5px);margin-left:0;margin-right:0}.wp-mail-smtp-tooltip.popover .popover-inner{background:#fff;color:#2d4f60;padding:24px;border-radius:5px;-webkit-box-shadow:0 5px 30px rgba(0,0,0,.1);box-shadow:0 5px 30px rgba(0,0,0,.1)}.wp-mail-smtp-tooltip.popover .popover-arrow{border-color:#fff}.wp-mail-smtp-tooltip[aria-hidden=true]{visibility:hidden;opacity:0;-webkit-transition:opacity .15s,visibility .15s;transition:opacity .15s,visibility .15s}.wp-mail-smtp-tooltip[aria-hidden=false]{visibility:visible;opacity:1;-webkit-transition:opacity .15s;transition:opacity .15s}.wp-mail-smtp-loader{-webkit-animation:wp-mail-smtp-loader-spin .65s linear infinite;animation:wp-mail-smtp-loader-spin .65s linear infinite}.wp-mail-smtp-loader-md{width:32px;height:32px}.wp-mail-smtp-loader-sm{width:16px;height:16px}@-webkit-keyframes wp-mail-smtp-loader-spin{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(630deg);transform:rotate(630deg)}}@keyframes wp-mail-smtp-loader-spin{0%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}to{-webkit-transform:rotate(630deg);transform:rotate(630deg)}}*{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}body{background:#f1f1f1;margin:0}body,body button,body input,body select,body textarea{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}p>label{display:block}.medium-bold{font-weight:500}.medium-bold a{color:#e27730;font-weight:700}.medium-bold a:focus,.medium-bold a:hover{color:#c45e1b}.wp-mail-smtp-setup-wizard-header{text-align:center;border-top:4px solid #e27730}.wp-mail-smtp-setup-wizard-header h1{margin:0}.wp-mail-smtp-logo{display:inline-block;width:320px;margin-top:50px;padding:0 10px}.wp-mail-smtp-logo img{width:100%;height:100%}.wp-mail-smtp-setup-wizard-container{max-width:90%;width:auto;margin:0 auto}.wp-mail-smtp-setup-wizard-content{background:#fff;border:1px solid #ddd;border-radius:6px;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.05);box-shadow:0 2px 5px rgba(0,0,0,.05);color:#777;font-size:16px;margin:22px 0 30px}.wp-mail-smtp-setup-wizard-content-container{padding:10px 20px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-content-header{margin-bottom:27px}.wp-mail-smtp-setup-wizard-content h2,.wp-mail-smtp-setup-wizard-content h3{color:#222;font-size:24px;font-weight:500;margin:0 0 12px}.wp-mail-smtp-setup-wizard-content h3{font-size:16px;margin:0 0 20px}.wp-mail-smtp-setup-wizard-content .subtitle{font-size:16px;line-height:1.5;margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator{width:100%;border-top:1px solid #e6e6e6;clear:both;margin:20px 0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-no-margin{margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-big-margin{margin:30px 0}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content{text-align:center}.wp-mail-smtp-button{border-radius:3px;border:none;background-color:#f1f1f1;color:#555;cursor:pointer;display:inline-block;font-size:16px;font-weight:400;line-height:19px;padding:15px 30px;text-decoration:none}.wp-mail-smtp-button:focus,.wp-mail-smtp-button:hover{background-color:#d8d8d8}.wp-mail-smtp-button:focus{outline:none}.wp-mail-smtp-button.wp-mail-smtp-button-secondary{background-color:#2d4f60;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-secondary:focus,.wp-mail-smtp-button.wp-mail-smtp-button-secondary:hover{background-color:#1d323d}.wp-mail-smtp-button.wp-mail-smtp-button-secondary:disabled{opacity:.65;cursor:not-allowed;background-color:#2d4f60}.wp-mail-smtp-button.wp-mail-smtp-button-red{background-color:#dc3232;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-red:focus,.wp-mail-smtp-button.wp-mail-smtp-button-red:hover{background-color:#bb2020}.wp-mail-smtp-button.wp-mail-smtp-button-red:disabled{opacity:.65;cursor:not-allowed;background-color:#dc3232}.wp-mail-smtp-button.wp-mail-smtp-button-success{background-color:#6aa08b;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-success:focus,.wp-mail-smtp-button.wp-mail-smtp-button-success:hover{background-color:#548371}.wp-mail-smtp-button.wp-mail-smtp-button-success:disabled{opacity:.65;cursor:not-allowed;background-color:#6aa08b}.wp-mail-smtp-button.wp-mail-smtp-button-main{background-color:#e27730;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-main:focus,.wp-mail-smtp-button.wp-mail-smtp-button-main:hover{background-color:#c45e1b}.wp-mail-smtp-button.wp-mail-smtp-button-main:disabled{opacity:.65;cursor:not-allowed;background-color:#e27730}.wp-mail-smtp-button.wp-mail-smtp-button-small{line-height:23px;font-size:14px;padding:8px 20px}.wp-mail-smtp-button.wp-mail-smtp-button-small .wp-mail-smtp-loader-sm{margin-top:3px;margin-bottom:-3px}.wp-mail-smtp-button.wp-mail-smtp-button-large{line-height:22px;font-size:18px;padding:19px 39px}.wp-mail-smtp-button.wp-mail-smtp-button-disabled,.wp-mail-smtp-button.wp-mail-smtp-button-disabled:focus,.wp-mail-smtp-button.wp-mail-smtp-button-disabled:hover{background-color:#f3f6ff;border-color:#b7c9d9;color:#8aa4b8;font-weight:500;cursor:auto;outline:none}.wp-mail-smtp-button.wp-mail-smtp-button-activated,.wp-mail-smtp-button.wp-mail-smtp-button-activated:focus,.wp-mail-smtp-button.wp-mail-smtp-button-activated:hover{background-color:#fff;border-color:#8aa4b8;color:#8aa4b8;font-weight:500;cursor:auto;outline:none}.wp-mail-smtp-button .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.wp-mail-smtp-button .text-with-arrow-right .icon{margin-left:10px}.wp-mail-smtp-button .text-with-arrow-left .icon{margin-right:10px}.wp-mail-smtp-step-below-content{text-align:center;font-size:14px;color:#555;margin:-19px 0 47px}.wp-mail-smtp-setup-wizard-step-footer{display:block;text-align:center;min-height:110px;padding:0 20px;margin-top:30px}.wp-mail-smtp-setup-wizard-step-footer a{font-size:14px;display:block;color:#888;margin:20px 0}.wp-mail-smtp-setup-wizard-step-footer a:active,.wp-mail-smtp-setup-wizard-step-footer a:hover{color:#555;text-decoration:underline}.wp-mail-smtp-setup-wizard-step-footer-buttons{margin-bottom:20px}.wp-mail-smtp-setup-wizard-step-footer-buttons button{width:100%;margin-bottom:10px}.wp-mail-smtp-setup-wizard-step-footer-buttons button:last-child{margin-right:0;margin-bottom:0}.wp-mail-smtp-exit-link{text-align:center;margin-bottom:50px}.wp-mail-smtp-exit-link a{font-size:14px;color:#888;text-decoration:underline}.wp-mail-smtp-exit-link a:active,.wp-mail-smtp-exit-link a:hover{color:#555;text-decoration:underline}.wp-mail-smtp-setup-wizard-timeline{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:41px auto 0;max-width:650px;padding:0 20px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line{background:#ddd;height:2px;margin:0 6px;width:100%}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line.wp-mail-smtp-setup-wizard-timeline-line-active{background:#6aa08b}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step{border:none;background-color:#999;border-radius:50%;-ms-flex-negative:0;flex-shrink:0;height:16px;width:16px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step .icon{display:none}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-active,.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-completed{background-color:#6aa08b;position:relative}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed{background-color:#d83638;position:relative}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-completed .icon-success,.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed .icon-failed{color:#fff;display:block;position:absolute;left:3px;top:3px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed .icon-failed{left:4px;top:2px}.wp-mail-smtp-input-radios-with-icons{display:block}.wp-mail-smtp-input-radios-with-icons input{opacity:0;position:absolute}.wp-mail-smtp-input-radios-with-icons label{width:100%;height:52px;color:#222;border:1px solid #ddd;background:#fff;border-radius:3px;font-size:16px;display:block;margin-bottom:20px;padding:9px;cursor:pointer}.wp-mail-smtp-input-radios-with-icons label>*{vertical-align:middle}.wp-mail-smtp-input-radios-with-icons label:hover{border:1px solid #888;-webkit-box-shadow:0 0 0 1px #888;box-shadow:0 0 0 1px #888}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label{border-color:#2d4f60}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:hover{-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly:hover{-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-checked{border:1px solid #2d4f60;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.1),0 0 0 1px #2d4f60;box-shadow:0 3px 5px rgba(0,0,0,.1),0 0 0 1px #2d4f60}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly{color:#999;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly img,.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly svg:not(.icon){opacity:.4}.wp-mail-smtp-input-radios-with-icons img{margin-left:20px}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio{width:32px;height:32px;position:relative;display:inline-block;border-radius:50%;background-color:#e6e6e6}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio .icon{display:none}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{background-color:#2d4f60;color:#fff}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked .icon{display:block;position:absolute;left:8px;top:8px}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio-text{margin-left:10px}.wp-mail-smtp-input-radios-with-icons input:focus-visible+.wp-mail-smtp-styled-radio:not(.wp-mail-smtp-styled-radio-checked){-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6;box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6}.wp-mail-smtp-setup-wizard-form-row-highlight{background-color:#f8f8f8;padding:20px;margin:0 -20px 20px}.wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:last-child{margin-bottom:0}.wp-mail-smtp-swal.swal2-container.swal2-shown{background-color:rgba(68,68,68,.5)}.wp-mail-smtp-swal .swal2-popup{padding:10px;border-radius:0;font-size:16px;color:#555;-webkit-box-shadow:0 2px 15px rgba(0,0,0,.15);box-shadow:0 2px 15px rgba(0,0,0,.15)}.wp-mail-smtp-swal .swal2-popup .swal2-header{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;margin:40px 40px 12px;padding:0}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-title{font-size:24px;color:#222;margin:0;padding:0;font-weight:500;text-align:left}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-close{color:#999;font-size:0;width:16px;height:16px;margin:10px 8px 0 0;outline:none}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-close:before{content:"";display:inline-block;background:no-repeat url(../img/times-solid-grey.svg);width:18px;height:18px}.wp-mail-smtp-swal .swal2-popup .swal2-content{color:#555;font-size:16px;line-height:23px;padding:0 40px;margin-bottom:37px}.wp-mail-smtp-swal .swal2-popup .swal2-content #swal2-content{text-align:left;font-weight:400}.wp-mail-smtp-swal .swal2-popup .swal2-actions{border-top:1px solid #e6e6e6;margin:0 -10px;padding:30px 30px 20px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled:focus{-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{margin:0;display:block;width:100%}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{display:inline-block;width:auto}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{border:none;background-color:#e27730;color:#fff;border-radius:3px;font-size:16px;font-weight:500;line-height:19px;padding:15px 30px;text-decoration:none}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:focus,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background-color:#c45e1b}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:"";display:inline-block;margin:0 0 -3px 10px;background:no-repeat url(../img/long-arrow-alt-right-regular-white.svg);width:16px;height:18px}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{background:none!important;border:none;padding:0!important;color:#888;font-size:14px;font-weight:400;text-decoration:underline;cursor:pointer;margin-bottom:30px}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{margin-bottom:0}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:focus,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:hover{color:#555}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before{content:"";margin:0 10px -3px 0;display:inline-block;background:no-repeat url(../img/long-arrow-alt-left-regular-grey.svg);width:16px;height:18px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup{border-top:7px solid #3498db;padding-top:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header{margin:10px 40px 24px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header .swal2-image{margin-top:30px;margin-bottom:17px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header .swal2-title{font-weight:700;text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content p{margin:0 auto 25px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content p:last-child{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .wp-mail-smtp-button{text-transform:uppercase}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content{text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main{background-color:#ff982d}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main:focus,.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main:hover{background-color:#f97f00}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus{position:relative;background:#faffac;margin:40px -50px 10px;padding:24px 60px 20px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .icon-container{position:absolute;background:#2ecc71;color:#fff;width:46px;height:46px;border-radius:50%;left:calc(50% - 23px);top:-23px;border:6px solid #fff}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .icon-container .icon{position:absolute;top:10px;left:10px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .highlight{color:#2ecc71;font-weight:500}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased{font-size:14px;color:#888}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased:focus,.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased:hover{color:#555}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-header{margin:20px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content{padding:0 20px;margin-bottom:30px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .subtitle{margin:0 0 45px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .title-container{margin-bottom:7px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .bonus{padding:30px;margin:17px -30px 0;background-color:#fefcca;color:#222;border-radius:3px;text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{background-color:#6aa08b}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:focus,.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background-color:#548371}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before,.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .settings-input-long-checkbox .checkbox.checkbox-checked:after{top:5px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-content{margin-bottom:27px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-content img.icon{color:#fdb72c;width:16px;vertical-align:middle}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-actions{border-top:none;padding:0 50px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content{margin-bottom:16px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content textarea{border:1px solid #b6b6b6;color:#222;border-radius:3px;margin:27px 0 11px;padding:10px;font-size:16px;width:100%}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content textarea:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container{display:-webkit-box;display:-ms-flexbox;display:flex}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container label{font-size:14px;margin-left:7px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container input[type=checkbox]{width:16px;height:16px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-actions{border-top:none;padding:0 50px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-content{margin-bottom:47px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions{border-top:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 30px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{width:128px;height:128px;padding:0;font-size:0;text-indent:-9999px;-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:after,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:before{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{background:url(../img/thumbs-up.svg);margin-right:50px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background:url(../img/thumbs-up-hover.svg)}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{background:url(../img/thumbs-down.svg)!important}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:hover{background:url(../img/thumbs-down-hover.svg)!important}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup p{margin:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content{padding:0 40px;margin-bottom:29px}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .subtitle{margin:0 0 26px}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .detailed-error{padding:11px 15px;font-size:14px;line-height:20px;margin:0;color:#555;border:1px solid #ddd;border-left:4px solid #dc3232;text-align:left;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.07);box-shadow:0 1px 1px rgba(0,0,0,.07)}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .detailed-error h3{font-size:14px;color:#222;font-weight:500;line-height:23px;margin:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-actions{padding:0 50px 40px;border-top:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content{padding:0 40px;margin-bottom:29px}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content #swal2-content{text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content p{margin:0 0 26px}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-actions{padding:0 50px 40px;border-top:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-setup-wizard-step .license-form{color:#222}.wp-mail-smtp-setup-wizard-step .license-form input{display:block;width:100%;height:40px;font-size:16px;padding:10px;color:#222;border:1px solid #999;border-radius:3px}.wp-mail-smtp-setup-wizard-step .license-form input:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-setup-wizard-step .license-form button{-ms-flex-negative:0;flex-shrink:0;margin-top:10px;width:100%}.wp-mail-smtp-setup-wizard-step .license-form .license-control{display:block}.wp-mail-smtp-setup-wizard-step .license-form.license-form-error input{border-color:#dc3232}.wp-mail-smtp-setup-wizard-step .license-form.license-form-error .error-message{color:#dc3232;font-size:14px;margin:5px 0 0}.wp-mail-smtp-setup-wizard-step .license-form p{margin:0 0 16px}.wp-mail-smtp-setup-wizard-step-configure-mailer .license-form p{font-size:16px;line-height:24px;color:#222}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings{margin-top:29px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings.wp-mail-smtp-setup-wizard-step-configure-mailer-settings-smtp .mailer-description a{font-weight:500}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description{font-size:16px;line-height:24px;color:#222;margin-bottom:29px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links{margin-top:0}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a{margin-right:20px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a.wp-mail-smtp-link-docs,.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a:last-child{margin-top:10px;display:block}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links .wp-mail-smtp-link{font-weight:500}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links .mailer-offer-link-disclosure{text-decoration:underline;text-decoration-style:dotted;font-size:14px;display:inline-block;cursor:help;margin-top:15px;color:#777}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-header-container{width:calc(100% - 94px)}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-logo{width:94px;height:94px;border:1px solid #e6e6e6;border-radius:50%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-logo svg{width:55px}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch{margin-bottom:30px}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch .label{font-size:16px}.settings-amazon-ses-identities,.settings-input-checkbox,.settings-input-long-checkbox,.settings-input-number,.settings-input-radio,.settings-input-select,.settings-input-switch,.settings-input-text,.settings-oauth-connection{margin:0 0 29px}.settings-amazon-ses-identities:last-child,.settings-input-checkbox:last-child,.settings-input-long-checkbox:last-child,.settings-input-number:last-child,.settings-input-radio:last-child,.settings-input-select:last-child,.settings-input-switch:last-child,.settings-input-text:last-child,.settings-oauth-connection:last-child{margin-bottom:20px}.settings-amazon-ses-identities .settings-input-label-container,.settings-input-checkbox .settings-input-label-container,.settings-input-long-checkbox .settings-input-label-container,.settings-input-number .settings-input-label-container,.settings-input-radio .settings-input-label-container,.settings-input-select .settings-input-label-container,.settings-input-switch .settings-input-label-container,.settings-input-text .settings-input-label-container,.settings-oauth-connection .settings-input-label-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 12px}.settings-amazon-ses-identities .label,.settings-input-checkbox .label,.settings-input-long-checkbox .label,.settings-input-number .label,.settings-input-radio .label,.settings-input-select .label,.settings-input-switch .label,.settings-input-text .label,.settings-oauth-connection .label{color:#222;display:inline-block;line-height:21px;font-weight:500;font-size:18px}.settings-amazon-ses-identities .wp-mail-smtp-info,.settings-input-checkbox .wp-mail-smtp-info,.settings-input-long-checkbox .wp-mail-smtp-info,.settings-input-number .wp-mail-smtp-info,.settings-input-radio .wp-mail-smtp-info,.settings-input-select .wp-mail-smtp-info,.settings-input-switch .wp-mail-smtp-info,.settings-input-text .wp-mail-smtp-info,.settings-oauth-connection .wp-mail-smtp-info{margin-left:10px}.settings-amazon-ses-identities .error,.settings-input-checkbox .error,.settings-input-long-checkbox .error,.settings-input-number .error,.settings-input-radio .error,.settings-input-select .error,.settings-input-switch .error,.settings-input-text .error,.settings-oauth-connection .error{display:-webkit-box;display:-ms-flexbox;display:flex;color:#dc3232;font-size:14px}.settings-amazon-ses-identities .error .icon,.settings-input-checkbox .error .icon,.settings-input-long-checkbox .error .icon,.settings-input-number .error .icon,.settings-input-radio .error .icon,.settings-input-select .error .icon,.settings-input-switch .error .icon,.settings-input-text .error .icon,.settings-oauth-connection .error .icon{margin-right:10px}.settings-amazon-ses-identities.input-error input,.settings-input-checkbox.input-error input,.settings-input-long-checkbox.input-error input,.settings-input-number.input-error input,.settings-input-radio.input-error input,.settings-input-select.input-error input,.settings-input-switch.input-error input,.settings-input-text.input-error input,.settings-oauth-connection.input-error input{border-color:#dc3232}.settings-amazon-ses-identities input:disabled,.settings-input-checkbox input:disabled,.settings-input-long-checkbox input:disabled,.settings-input-number input:disabled,.settings-input-radio input:disabled,.settings-input-select input:disabled,.settings-input-switch input:disabled,.settings-input-text input:disabled,.settings-oauth-connection input:disabled{cursor:not-allowed}.settings-amazon-ses-identities .description,.settings-input-checkbox .description,.settings-input-long-checkbox .description,.settings-input-number .description,.settings-input-radio .description,.settings-input-select .description,.settings-input-switch .description,.settings-input-text .description,.settings-oauth-connection .description{font-size:14px;line-height:20px;color:#555;margin:-4px 0 0}.settings-amazon-ses-identities .description--constant,.settings-input-checkbox .description--constant,.settings-input-long-checkbox .description--constant,.settings-input-number .description--constant,.settings-input-radio .description--constant,.settings-input-select .description--constant,.settings-input-switch .description--constant,.settings-input-text .description--constant,.settings-oauth-connection .description--constant{font-size:12px;margin-top:5px}.settings-input-number input,.settings-input-text input{display:block;width:100%;height:40px;font-size:16px;padding:10px;color:#222;border:1px solid #999;border-radius:3px;margin:0 0 15px}.settings-input-number input:focus,.settings-input-text input:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-number input::-webkit-input-placeholder,.settings-input-text input::-webkit-input-placeholder{color:#888}.settings-input-number input::-moz-placeholder,.settings-input-text input::-moz-placeholder{color:#888}.settings-input-number input:-ms-input-placeholder,.settings-input-text input:-ms-input-placeholder{color:#888}.settings-input-number input::-ms-input-placeholder,.settings-input-text input::-ms-input-placeholder{color:#888}.settings-input-number input::placeholder,.settings-input-text input::placeholder{color:#888}.settings-input-number-error input,.settings-input-text-error input{border-color:#dc3232}.settings-input-number.settings-input-text-with-copy .settings-input-container,.settings-input-text.settings-input-text-with-copy .settings-input-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.settings-input-number.settings-input-text-with-copy .settings-input-container input,.settings-input-text.settings-input-text-with-copy .settings-input-container input{color:#888;margin-bottom:0}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button{outline:none;margin:0 0 0 10px;background-color:#999}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button:hover,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button:hover{background-color:#888}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-small,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-small{padding:8px 12px}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied,.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied:hover,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied:hover{background-color:#6aa08b}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon{display:none}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon.active,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon.active{display:block}.settings-input-radio input{opacity:0;position:absolute}.settings-input-radio label{color:#222;font-size:14px;display:inline-block;margin:0 30px 15px 0}.settings-input-radio label:last-child{margin-right:0}.settings-input-radio label>span{vertical-align:middle}.settings-input-radio label.wp-mail-smtp-styled-radio-label-disabled{cursor:not-allowed}.settings-input-radio .wp-mail-smtp-styled-radio{width:20px;height:20px;border:1px solid #999;position:relative;display:inline-block;border-radius:50%;margin-right:10px}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{border-color:#2d4f60}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked:after{left:2px;right:2px;top:2px;bottom:2px;position:absolute;content:"";background:#2d4f60;display:block;border-radius:50%}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-disabled{opacity:.4}.settings-input-radio input:focus-visible+.wp-mail-smtp-styled-radio{-webkit-box-shadow:0 0 0 1px #999;box-shadow:0 0 0 1px #999}.settings-input-radio input:focus-visible+.wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-switch.sub_setting{background-color:#f8f8f8;padding:20px;margin-top:-17px}.settings-input-switch.sub_setting .label{font-size:14px}.settings-input-switch.sub_setting .label-description{color:#555}.settings-input-switch .title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-switch .title .wp-mail-smtp-pro-badge{margin-left:10px;height:18px;width:auto}.settings-input-switch .control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-switch input{position:absolute;top:auto;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;white-space:nowrap}.settings-input-switch input:checked+.toggle-switch{background-color:#2d4f60}.settings-input-switch input:checked+.toggle-switch:before{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.settings-input-switch input:disabled:checked:hover+.toggle-switch,.settings-input-switch input:disabled:not(:checked):hover+.toggle-switch{-webkit-box-shadow:none;box-shadow:none}.settings-input-switch input:disabled:not(:checked):hover+.toggle-switch{background-color:#ddd}.settings-input-switch input:disabled+.toggle-switch{background-color:#ddd;cursor:not-allowed}.settings-input-switch input:disabled:checked+.toggle-switch{background-color:#4e88a5;cursor:not-allowed}.settings-input-switch input:checked:focus+.toggle-switch,.settings-input-switch input:checked:hover+.toggle-switch{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.settings-input-switch input:not(:checked):focus+.toggle-switch,.settings-input-switch input:not(:checked):hover+.toggle-switch{background-color:#999;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #999;box-shadow:0 0 0 1px #fff,0 0 0 3px #999}.settings-input-switch .toggle-switch{position:relative;cursor:pointer;background-color:#bbb;border-radius:10px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;vertical-align:middle;display:inline-block;width:30px;height:20px}.settings-input-switch .toggle-switch:before{position:absolute;content:"";height:16px;width:16px;left:2px;top:2px;background-color:#fff;border-radius:50%;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.settings-input-switch .description{margin-bottom:15px}.settings-input-switch .label-description{font-size:14px;line-height:20px;color:#222;margin:0 0 0 20px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-input-select-container{position:relative;margin:0 0 15px}.settings-input-select-container:after{content:"";background:no-repeat url(../img/chevron-down-solid-grey.svg);right:10px;top:14px;width:12px;height:12px;position:absolute;pointer-events:none}.settings-input-select select::-ms-expand{display:none}.settings-input-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:40px;font-size:16px;padding:8px 5px 8px 10px;color:#222;border:1px solid #999;border-radius:3px}.settings-input-select select:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-select select:disabled{cursor:not-allowed}.settings-input-select-error select{border-color:#dc3232}.settings-amazon-ses-identities>.wp-mail-smtp-loader{display:block}.settings-amazon-ses-identities p{margin:0 0 17px}.settings-amazon-ses-identities .description{margin-bottom:17px}.settings-amazon-ses-identities .ses-identities-container{background:#f8f8f8;padding:20px}.settings-amazon-ses-identities .ses-identities-table-container{border-radius:3px;font-size:14px;line-height:20px;text-align:left}.settings-amazon-ses-identities .ses-identities-table-container+.wp-mail-smtp-amazonses-identity-form{margin-top:20px}.settings-amazon-ses-identities .ses-identities-table-container table{width:100%;border-collapse:collapse}.settings-amazon-ses-identities .ses-identities-table-container th.ses-identity-column{color:#222;font-weight:500}.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-sender{width:50%}.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-status,.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-type{width:25%}.settings-amazon-ses-identities .ses-identities-table-container tr{border-bottom:1px solid #ddd}.settings-amazon-ses-identities .ses-identities-table-container th{padding:0 0 20px}.settings-amazon-ses-identities .ses-identities-table-container td{padding:18px 0}.settings-amazon-ses-identities .ses-identities-table-container .wp-mail-smtp-button{margin-top:20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form{background:#f8f8f8;border-radius:3px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form h3{font-size:14px;line-height:21px;margin-bottom:16px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form p{font-size:14px;margin:0 0 20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .settings-input-radio{margin-bottom:5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .settings-input-text{margin-bottom:20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .wp-mail-smtp-button-main.wp-mail-smtp-button-verify{min-width:150px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .ses-identities-email-success-notice{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .ses-identities-email-success-notice .icon{width:16px;height:16px;margin-right:10px;color:#6aa08b}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text label{width:50px;margin-right:16px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text label .label{font-size:16px;color:#888;font-weight:400;margin-bottom:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text .settings-input-container{width:100%}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records{border:1px solid #ddd;border-radius:4px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row{display:-webkit-box;display:-ms-flexbox;display:flex;padding:7.5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row--heading{border-radius:4px 4px 0 0;background-color:#eee}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row--record{border-top:1px solid #ddd}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;margin:7.5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--heading{font-size:14px;line-height:20px;font-weight:500;color:#444}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-container{position:relative}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-text{margin:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-label-container{display:none}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record input{margin:0;padding-right:39px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record button{position:absolute;right:1px;top:1px;bottom:1px;padding:9px 11px;margin:0;border:none;border-radius:0 1px 1px 0}.settings-oauth-connection .description{margin-bottom:20px}.settings-oauth-connection .wp-mail-smtp-button{margin-top:-2px}.settings-oauth-connection .remove-authorization-container .description .icon{color:#6aa08b;width:16px;height:16px;margin-left:10px}.settings-oauth-connection .remove-authorization-container .description.connected-as{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-oauth-connection .remove-authorization-container .wp-mail-smtp-button{margin-top:-3px}.settings-input-long-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:30px 0;border-bottom:1px solid #e6e6e6;cursor:pointer;margin-bottom:0}.settings-input-long-checkbox.settings-input-long-checkbox-disabled{cursor:not-allowed}.settings-input-long-checkbox .title-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:9px}.settings-input-long-checkbox .title-container .wp-mail-smtp-pro-badge{margin-left:10px;width:46px;height:26px}.settings-input-long-checkbox .description{margin-right:30px}.settings-input-long-checkbox .label{margin:0}.settings-input-long-checkbox input{opacity:0;position:absolute}.settings-input-long-checkbox .checkbox{width:32px;height:32px;position:relative;display:inline-block;border-radius:50%;background-color:#e6e6e6}.settings-input-long-checkbox .checkbox .icon{display:none}.settings-input-long-checkbox .checkbox.checkbox-checked{background-color:#2d4f60;color:#fff}.settings-input-long-checkbox .checkbox.checkbox-checked .icon{display:block;position:absolute;left:8px;top:8px}.settings-input-long-checkbox .checkbox.checkbox-checked.checkbox-disabled{background-color:#6aa08b}.settings-input-long-checkbox:first-child{padding-top:0;color:red}.settings-input-long-checkbox:last-child{border-bottom:none;margin-bottom:0}.settings-input-long-checkbox input:focus-visible+.checkbox{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6;box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6}.settings-input-long-checkbox input:focus-visible+.checkbox.checkbox-checked{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.settings-input-checkbox input{opacity:0;position:absolute}.settings-input-checkbox .settings-input-checkbox-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-checkbox .settings-input-checkbox-container .input-label{margin-left:10px}.settings-input-checkbox .checkbox{width:24px;height:24px;position:relative;display:inline-block;border-radius:3px;border:1px solid #999;background-color:#fff}.settings-input-checkbox .checkbox .icon{display:none}.settings-input-checkbox .checkbox.checkbox-checked{background-color:#2d4f60;border:none;color:#fff}.settings-input-checkbox .checkbox.checkbox-checked .icon{display:block;position:absolute;left:5px;top:5px}.settings-input-checkbox .checkbox.checkbox-checked.checkbox-disabled{background-color:#4e88a5}.settings-input-checkbox input:focus-visible+.checkbox{-webkit-box-shadow:0 0 0 1px #999;box-shadow:0 0 0 1px #999}.settings-input-checkbox input:focus-visible+.checkbox.checkbox-checked{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header{margin-bottom:33px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header .wp-mail-smtp-content-header{margin-bottom:0}.wp-mail-smtp-setup-wizard-step-license .upgrade-content,.wp-mail-smtp-setup-wizard-step-license .verified-license{background-color:#e6efec;border-radius:3px;padding:30px;margin-bottom:50px;color:#222}.wp-mail-smtp-setup-wizard-step-license .upgrade-content p{margin:0 0 30px}.wp-mail-smtp-setup-wizard-step-license .verified-license{text-align:center;margin-bottom:20px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;margin-bottom:15px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item .icon{color:#6aa08b;margin-right:15px;width:16px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item>span{width:calc(100% - 31px)}.wp-mail-smtp-setup-wizard-check-configuration .check-configuration-loading-image-container{text-align:center}.wp-mail-smtp-plugin-item{border:1px solid #ddd;border-radius:3px;padding:10px;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;color:#222}.wp-mail-smtp-plugin-item,.wp-mail-smtp-plugin-item-title-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-plugin-item-title-container{margin-bottom:10px}.wp-mail-smtp-plugin-item .wp-mail-smtp-button{height:32px;width:120px;text-align:center;font-size:13px;line-height:16px;font-weight:500;padding:8px 31px;color:#fff;background-color:#6693af}.wp-mail-smtp-plugin-item .wp-mail-smtp-button:hover{background-color:#2d4f60}.wp-mail-smtp-plugin-item .wp-mail-smtp-button:disabled{cursor:not-allowed;background-color:#e6e6e6;color:#777}.wp-mail-smtp-plugin-item:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-configuration-success .plugin-item-container{margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-success .plugin-item-container .medium-bold{color:#222;margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner-container{margin:30px -20px 0}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner{padding:30px;border-radius:3px 3px 0 0;text-align:center;background-color:#ecf3f1}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .wp-mail-smtp-setup-wizard-content h2{margin-bottom:10px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .subtitle{margin-bottom:28px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:29px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item{margin-bottom:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;color:#222}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item .icon{color:#6aa08b;margin-right:8px}.wp-mail-smtp-setup-wizard-configuration-success .bonus{margin:10px 0 0;padding:30px;background-color:#fefcca;color:#222;border-radius:0 0 3px 3px;text-align:center}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer{margin:20px 0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button{margin-bottom:10px;width:100%}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-content-header{margin-bottom:27px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container{margin-bottom:11px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container svg{width:112px;height:112px;margin:0 auto;display:block}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer{margin:20px 0}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button{margin-bottom:10px;width:100%}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button:last-child{margin-bottom:0}.wp-mail-smtp-admin-page{position:relative}.wp-mail-smtp-admin-page .wp-mail-smtp-blocked,.wp-mail-smtp-admin-page .wp-mail-smtp-loading{position:fixed;top:0;bottom:0;right:0;left:0;background:rgba(68,68,68,.5);z-index:999}.wp-mail-smtp-admin-page .wp-mail-smtp-loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swal2-shown .swal2-container.swal2-backdrop-show{background:rgba(68,68,68,.5)}img{max-width:100%}a{color:#6693af}a:focus,a:hover{text-decoration:none}a .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}a .text-with-arrow-right .icon{margin-left:10px}a .text-with-arrow-left .icon{margin-right:10px}.wp-mail-smtp-notice{padding:15px;font-size:14px;line-height:20px;margin:0;color:#222;border:1px solid #ddd;border-left:4px solid #00a0d2;text-align:left;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.07);box-shadow:0 1px 1px rgba(0,0,0,.07)}.wp-mail-smtp-notice--error{border-left:4px solid #dc3232}.wp-mail-smtp-notice--info{border-left:4px solid #00a0d2}.wp-mail-smtp-notice p{margin-top:0}.wp-mail-smtp-notice p:last-child{margin-bottom:0}.wp-mail-smtp-google-sign-in-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0;border:none;background-color:#4285f4;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25);-webkit-transition:-webkit-box-shadow .3s ease-in-out;transition:-webkit-box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out,-webkit-box-shadow .3s ease-in-out;text-decoration:none;cursor:pointer;color:#fff}.wp-mail-smtp-google-sign-in-btn:hover{-webkit-box-shadow:0 0 3px 3px rgba(66,133,244,.3);box-shadow:0 0 3px 3px rgba(66,133,244,.3)}.wp-mail-smtp-google-sign-in-btn:active{background:#3367d6}.wp-mail-smtp-google-sign-in-btn--disabled,.wp-mail-smtp-google-sign-in-btn:disabled{pointer-events:none;background-color:#d4d3d3;-webkit-box-shadow:none;box-shadow:none;color:#7f7f7f}.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__bg,.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__border,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__bg,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__border{fill:#d4d3d3}.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__symbol,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__symbol{fill:#7f7f7f}.wp-mail-smtp-google-sign-in-btn__icon{overflow:hidden;border-radius:2px}.wp-mail-smtp-google-sign-in-btn__icon svg{display:block;margin:-3px}.wp-mail-smtp-google-sign-in-btn__text{font-size:14px;font-weight:600;margin:0 10px}@media(min-width:782px){.wp-mail-smtp-setup-wizard-container{max-width:100%;margin:0 auto;width:850px}.wp-mail-smtp-setup-wizard-content{margin:50px 0 48px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-content-header{margin-bottom:47px}.wp-mail-smtp-setup-wizard-content-container{padding:49px 100px 30px}.wp-mail-smtp-setup-wizard-content-container-container{padding:30px 20px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-setup-wizard-content-container{padding:49px 100px 19px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator{margin:30px 0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-no-margin{margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-big-margin{margin:50px 0}.wp-mail-smtp-setup-wizard-step .license-form .license-control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-step .license-form input{width:calc(100% - 195px)}.wp-mail-smtp-setup-wizard-step .license-form button{margin-top:0;width:180px;margin-left:15px}.wp-mail-smtp-welcome .wp-mail-smtp-logo{margin-top:158px;padding:0}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-container{width:650px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content{margin:42px 0 60px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content-container{padding:80px 65px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content-container .wp-mail-smtp-content-header{margin-bottom:36px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings{margin-top:49px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description{margin-bottom:49px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links{margin-top:-31px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a.wp-mail-smtp-link-docs,.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a:last-child{margin-top:0;display:inline-block}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch{margin-bottom:50px}.wp-mail-smtp-setup-wizard-check-configuration .wp-mail-smtp-setup-wizard-content-container{padding:83px 100px 66px}.wp-mail-smtp-setup-wizard-check-configuration .wp-mail-smtp-setup-wizard-content-container .wp-mail-smtp-content-header{margin-bottom:55px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header{margin-bottom:53px}.wp-mail-smtp-input-radios-with-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.wp-mail-smtp-input-radios-with-icons label{width:calc(50% - 10px)}.wp-mail-smtp-setup-wizard-timeline{padding:0}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line{margin:0 10px}.wp-mail-smtp-setup-wizard-step-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0;margin-top:0}.wp-mail-smtp-setup-wizard-step-footer-buttons{margin-bottom:0;margin-right:30px}.wp-mail-smtp-setup-wizard-step-footer-buttons button{margin-bottom:0;margin-right:15px;width:inherit}.wp-mail-smtp-setup-wizard-step-footer-buttons button:last-child{margin-right:0}.wp-mail-smtp-setup-wizard-form-row-highlight{padding:20px 20px 0}.wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:last-child{margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container svg{margin:0;display:inline-block}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer{margin:0 30px}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button{margin-bottom:0;-webkit-box-flex:10;-ms-flex:10;flex:10}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button.wp-mail-smtp-button-main{-webkit-box-flex:11;-ms-flex:11;flex:11;margin-right:30px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner-container{margin:50px -70px 0}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;text-align:center}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item{margin-bottom:0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer{margin:0 30px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button{-webkit-box-flex:10;-ms-flex:10;flex:10;margin-bottom:0;margin-right:30px}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button:last-child{margin-right:0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button.wp-mail-smtp-button-main{-webkit-box-flex:11;-ms-flex:11;flex:11}.wp-mail-smtp-plugin-item{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.wp-mail-smtp-plugin-item-title-container{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-header{margin:75px 90px 18px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content{padding:0 90px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .bonus{margin:17px -70px 0}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{margin-left:30px}.wp-mail-smtp-setup-wizard-step-footer a{margin:0 0 0 30px}a .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.wp-mail-smtp-pro-badge[data-v-2d9202de]{float:right;margin-top:3px;width:46px;height:26px}.wp-mail-smtp-logo-icon[data-v-2d9202de]{width:32px;height:32px}.wp-mail-smtp-setup-wizard-step-count[data-v-44fd4a93]{margin:0 0 16px;font-size:14px;line-height:18px;color:#b6b6b6}.wp-mail-smtp-notice[data-v-aaf5fc00]{margin-top:-20px;margin-bottom:30px}.wp-mail-smtp-info .icon[data-v-74a4d2ae]{color:#ccc}.wp-mail-smtp-logo-icon[data-v-2e2edfa6]{width:32px;height:32px;margin-right:10px}.wp-mail-smtp-notice[data-v-05d90eba],.wp-mail-smtp-notice[data-v-1230186a]{margin-top:-23px;margin-bottom:20px}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.rtl.min.css b/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.rtl.min.css
new file mode 100644
index 000000000..47a24725e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/css/wizard.rtl.min.css
@@ -0,0 +1 @@
+.wp-mail-smtp-tooltip{display:block!important;z-index:10000;max-width:350px}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-inner{background:#2d4f60;color:#fff;border-radius:5px;padding:16px 20px;font-size:14px}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-inner a{color:#fff;font-weight:700}.wp-mail-smtp-tooltip .wp-mail-smtp-tooltip-arrow{width:0;height:0;border-style:solid;position:absolute;margin:5px;border-color:#2d4f60;z-index:1}.wp-mail-smtp-tooltip[x-placement^=top]{padding-bottom:5px}.wp-mail-smtp-tooltip[x-placement^=top] .wp-mail-smtp-tooltip-arrow{border-width:5px 5px 0;border-right-color:rgba(0,0,0,0)!important;border-left-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;bottom:0;right:calc(50% - 5px);margin-top:0;margin-bottom:0}.wp-mail-smtp-tooltip[x-placement^=bottom]{padding-top:5px}.wp-mail-smtp-tooltip[x-placement^=bottom] .wp-mail-smtp-tooltip-arrow{border-width:0 5px 5px;border-right-color:rgba(0,0,0,0)!important;border-left-color:rgba(0,0,0,0)!important;border-top-color:rgba(0,0,0,0)!important;top:0;right:calc(50% - 5px);margin-top:0;margin-bottom:0}.wp-mail-smtp-tooltip[x-placement^=right]{padding-right:5px}.wp-mail-smtp-tooltip[x-placement^=right] .wp-mail-smtp-tooltip-arrow{border-width:5px 0 5px 5px;border-right-color:rgba(0,0,0,0)!important;border-top-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;right:0;top:calc(50% - 5px);margin-right:0;margin-left:0}.wp-mail-smtp-tooltip[x-placement^=left]{padding-left:5px}.wp-mail-smtp-tooltip[x-placement^=left] .wp-mail-smtp-tooltip-arrow{border-width:5px 5px 5px 0;border-top-color:rgba(0,0,0,0)!important;border-left-color:rgba(0,0,0,0)!important;border-bottom-color:rgba(0,0,0,0)!important;left:0;top:calc(50% - 5px);margin-right:0;margin-left:0}.wp-mail-smtp-tooltip.popover .popover-inner{background:#fff;color:#2d4f60;padding:24px;border-radius:5px;-webkit-box-shadow:0 5px 30px rgba(0,0,0,.1);box-shadow:0 5px 30px rgba(0,0,0,.1)}.wp-mail-smtp-tooltip.popover .popover-arrow{border-color:#fff}.wp-mail-smtp-tooltip[aria-hidden=true]{visibility:hidden;opacity:0;-webkit-transition:opacity .15s,visibility .15s;transition:opacity .15s,visibility .15s}.wp-mail-smtp-tooltip[aria-hidden=false]{visibility:visible;opacity:1;-webkit-transition:opacity .15s;transition:opacity .15s}.wp-mail-smtp-loader{-webkit-animation:wp-mail-smtp-loader-spin .65s linear infinite;animation:wp-mail-smtp-loader-spin .65s linear infinite}.wp-mail-smtp-loader-md{width:32px;height:32px}.wp-mail-smtp-loader-sm{width:16px;height:16px}@-webkit-keyframes wp-mail-smtp-loader-spin{0%{-webkit-transform:rotate(-270deg);transform:rotate(-270deg)}to{-webkit-transform:rotate(-630deg);transform:rotate(-630deg)}}@keyframes wp-mail-smtp-loader-spin{0%{-webkit-transform:rotate(-270deg);transform:rotate(-270deg)}to{-webkit-transform:rotate(-630deg);transform:rotate(-630deg)}}*{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}body{background:#f1f1f1;margin:0}body,body button,body input,body select,body textarea{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}p>label{display:block}.medium-bold{font-weight:500}.medium-bold a{color:#e27730;font-weight:700}.medium-bold a:focus,.medium-bold a:hover{color:#c45e1b}.wp-mail-smtp-setup-wizard-header{text-align:center;border-top:4px solid #e27730}.wp-mail-smtp-setup-wizard-header h1{margin:0}.wp-mail-smtp-logo{display:inline-block;width:320px;margin-top:50px;padding:0 10px}.wp-mail-smtp-logo img{width:100%;height:100%}.wp-mail-smtp-setup-wizard-container{max-width:90%;width:auto;margin:0 auto}.wp-mail-smtp-setup-wizard-content{background:#fff;border:1px solid #ddd;border-radius:6px;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.05);box-shadow:0 2px 5px rgba(0,0,0,.05);color:#777;font-size:16px;margin:22px 0 30px}.wp-mail-smtp-setup-wizard-content-container{padding:10px 20px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-content-header{margin-bottom:27px}.wp-mail-smtp-setup-wizard-content h2,.wp-mail-smtp-setup-wizard-content h3{color:#222;font-size:24px;font-weight:500;margin:0 0 12px}.wp-mail-smtp-setup-wizard-content h3{font-size:16px;margin:0 0 20px}.wp-mail-smtp-setup-wizard-content .subtitle{font-size:16px;line-height:1.5;margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator{width:100%;border-top:1px solid #e6e6e6;clear:both;margin:20px 0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-no-margin{margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-big-margin{margin:30px 0}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content{text-align:center}.wp-mail-smtp-button{border-radius:3px;border:none;background-color:#f1f1f1;color:#555;cursor:pointer;display:inline-block;font-size:16px;font-weight:400;line-height:19px;padding:15px 30px;text-decoration:none}.wp-mail-smtp-button:focus,.wp-mail-smtp-button:hover{background-color:#d8d8d8}.wp-mail-smtp-button:focus{outline:none}.wp-mail-smtp-button.wp-mail-smtp-button-secondary{background-color:#2d4f60;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-secondary:focus,.wp-mail-smtp-button.wp-mail-smtp-button-secondary:hover{background-color:#1d323d}.wp-mail-smtp-button.wp-mail-smtp-button-secondary:disabled{opacity:.65;cursor:not-allowed;background-color:#2d4f60}.wp-mail-smtp-button.wp-mail-smtp-button-red{background-color:#dc3232;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-red:focus,.wp-mail-smtp-button.wp-mail-smtp-button-red:hover{background-color:#bb2020}.wp-mail-smtp-button.wp-mail-smtp-button-red:disabled{opacity:.65;cursor:not-allowed;background-color:#dc3232}.wp-mail-smtp-button.wp-mail-smtp-button-success{background-color:#6aa08b;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-success:focus,.wp-mail-smtp-button.wp-mail-smtp-button-success:hover{background-color:#548371}.wp-mail-smtp-button.wp-mail-smtp-button-success:disabled{opacity:.65;cursor:not-allowed;background-color:#6aa08b}.wp-mail-smtp-button.wp-mail-smtp-button-main{background-color:#e27730;color:#fff;font-weight:500}.wp-mail-smtp-button.wp-mail-smtp-button-main:focus,.wp-mail-smtp-button.wp-mail-smtp-button-main:hover{background-color:#c45e1b}.wp-mail-smtp-button.wp-mail-smtp-button-main:disabled{opacity:.65;cursor:not-allowed;background-color:#e27730}.wp-mail-smtp-button.wp-mail-smtp-button-small{line-height:23px;font-size:14px;padding:8px 20px}.wp-mail-smtp-button.wp-mail-smtp-button-small .wp-mail-smtp-loader-sm{margin-top:3px;margin-bottom:-3px}.wp-mail-smtp-button.wp-mail-smtp-button-large{line-height:22px;font-size:18px;padding:19px 39px}.wp-mail-smtp-button.wp-mail-smtp-button-disabled,.wp-mail-smtp-button.wp-mail-smtp-button-disabled:focus,.wp-mail-smtp-button.wp-mail-smtp-button-disabled:hover{background-color:#f3f6ff;border-color:#b7c9d9;color:#8aa4b8;font-weight:500;cursor:auto;outline:none}.wp-mail-smtp-button.wp-mail-smtp-button-activated,.wp-mail-smtp-button.wp-mail-smtp-button-activated:focus,.wp-mail-smtp-button.wp-mail-smtp-button-activated:hover{background-color:#fff;border-color:#8aa4b8;color:#8aa4b8;font-weight:500;cursor:auto;outline:none}.wp-mail-smtp-button .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.wp-mail-smtp-button .text-with-arrow-right .icon{margin-right:10px}.wp-mail-smtp-button .text-with-arrow-left .icon{margin-left:10px}.wp-mail-smtp-step-below-content{text-align:center;font-size:14px;color:#555;margin:-19px 0 47px}.wp-mail-smtp-setup-wizard-step-footer{display:block;text-align:center;min-height:110px;padding:0 20px;margin-top:30px}.wp-mail-smtp-setup-wizard-step-footer a{font-size:14px;display:block;color:#888;margin:20px 0}.wp-mail-smtp-setup-wizard-step-footer a:active,.wp-mail-smtp-setup-wizard-step-footer a:hover{color:#555;text-decoration:underline}.wp-mail-smtp-setup-wizard-step-footer-buttons{margin-bottom:20px}.wp-mail-smtp-setup-wizard-step-footer-buttons button{width:100%;margin-bottom:10px}.wp-mail-smtp-setup-wizard-step-footer-buttons button:last-child{margin-left:0;margin-bottom:0}.wp-mail-smtp-exit-link{text-align:center;margin-bottom:50px}.wp-mail-smtp-exit-link a{font-size:14px;color:#888;text-decoration:underline}.wp-mail-smtp-exit-link a:active,.wp-mail-smtp-exit-link a:hover{color:#555;text-decoration:underline}.wp-mail-smtp-setup-wizard-timeline{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:41px auto 0;max-width:650px;padding:0 20px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line{background:#ddd;height:2px;margin:0 6px;width:100%}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line.wp-mail-smtp-setup-wizard-timeline-line-active{background:#6aa08b}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step{border:none;background-color:#999;border-radius:50%;-ms-flex-negative:0;flex-shrink:0;height:16px;width:16px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step .icon{display:none}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-active,.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-completed{background-color:#6aa08b;position:relative}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed{background-color:#d83638;position:relative}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-completed .icon-success,.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed .icon-failed{color:#fff;display:block;position:absolute;right:3px;top:3px}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step.wp-mail-smtp-setup-wizard-timeline-step-failed .icon-failed{right:4px;top:2px}.wp-mail-smtp-input-radios-with-icons{display:block}.wp-mail-smtp-input-radios-with-icons input{opacity:0;position:absolute}.wp-mail-smtp-input-radios-with-icons label{width:100%;height:52px;color:#222;border:1px solid #ddd;background:#fff;border-radius:3px;font-size:16px;display:block;margin-bottom:20px;padding:9px;cursor:pointer}.wp-mail-smtp-input-radios-with-icons label>*{vertical-align:middle}.wp-mail-smtp-input-radios-with-icons label:hover{border:1px solid #888;-webkit-box-shadow:0 0 0 1px #888;box-shadow:0 0 0 1px #888}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label{border-color:#2d4f60}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:hover{-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-setup-wizard-step-choose-mailer .wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly:hover{-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-checked{border:1px solid #2d4f60;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.1),0 0 0 1px #2d4f60;box-shadow:0 3px 5px rgba(0,0,0,.1),0 0 0 1px #2d4f60}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly{color:#999;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed}.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly img,.wp-mail-smtp-input-radios-with-icons label.wp-mail-smtp-styled-radio-label-readonly svg:not(.icon){opacity:.4}.wp-mail-smtp-input-radios-with-icons img{margin-right:20px}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio{width:32px;height:32px;position:relative;display:inline-block;border-radius:50%;background-color:#e6e6e6}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio .icon{display:none}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{background-color:#2d4f60;color:#fff}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked .icon{display:block;position:absolute;right:8px;top:8px}.wp-mail-smtp-input-radios-with-icons .wp-mail-smtp-styled-radio-text{margin-right:10px}.wp-mail-smtp-input-radios-with-icons input:focus-visible+.wp-mail-smtp-styled-radio:not(.wp-mail-smtp-styled-radio-checked){-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6;box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6}.wp-mail-smtp-setup-wizard-form-row-highlight{background-color:#f8f8f8;padding:20px;margin:0 -20px 20px}.wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:last-child{margin-bottom:0}.wp-mail-smtp-swal.swal2-container.swal2-shown{background-color:rgba(68,68,68,.5)}.wp-mail-smtp-swal .swal2-popup{padding:10px;border-radius:0;font-size:16px;color:#555;-webkit-box-shadow:0 2px 15px rgba(0,0,0,.15);box-shadow:0 2px 15px rgba(0,0,0,.15)}.wp-mail-smtp-swal .swal2-popup .swal2-header{-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;margin:40px 40px 12px;padding:0}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-title{font-size:24px;color:#222;margin:0;padding:0;font-weight:500;text-align:right}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-close{color:#999;font-size:0;width:16px;height:16px;margin:10px 0 0 8px;outline:none}.wp-mail-smtp-swal .swal2-popup .swal2-header .swal2-close:before{content:"";display:inline-block;background:no-repeat url(../img/times-solid-grey.svg);width:18px;height:18px}.wp-mail-smtp-swal .swal2-popup .swal2-content{color:#555;font-size:16px;line-height:23px;padding:0 40px;margin-bottom:37px}.wp-mail-smtp-swal .swal2-popup .swal2-content #swal2-content{text-align:right;font-weight:400}.wp-mail-smtp-swal .swal2-popup .swal2-actions{border-top:1px solid #e6e6e6;margin:0 -10px;padding:30px 30px 20px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled:focus{-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{margin:0;display:block;width:100%}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{display:inline-block;width:auto}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{border:none;background-color:#e27730;color:#fff;border-radius:3px;font-size:16px;font-weight:500;line-height:19px;padding:15px 30px;text-decoration:none}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:focus,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background-color:#c45e1b}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:"";display:inline-block;margin:0 10px -3px 0;background:no-repeat url(../img/long-arrow-alt-right-regular-white.svg);width:16px;height:18px}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{background:none!important;border:none;padding:0!important;color:#888;font-size:14px;font-weight:400;text-decoration:underline;cursor:pointer;margin-bottom:30px}@media(min-width:782px){.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{margin-bottom:0}}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:focus,.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:hover{color:#555}.wp-mail-smtp-swal .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before{content:"";margin:0 0 -3px 10px;display:inline-block;background:no-repeat url(../img/long-arrow-alt-left-regular-grey.svg);width:16px;height:18px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup{border-top:7px solid #3498db;padding-top:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header{margin:10px 40px 24px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header .swal2-image{margin-top:30px;margin-bottom:17px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-header .swal2-title{font-weight:700;text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content p{margin:0 auto 25px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content p:last-child{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .wp-mail-smtp-button{text-transform:uppercase}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content{text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main{background-color:#ff982d}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main:focus,.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content #swal2-content .wp-mail-smtp-button-main:hover{background-color:#f97f00}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus{position:relative;background:#faffac;margin:40px -50px 10px;padding:24px 60px 20px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .icon-container{position:absolute;background:#2ecc71;color:#fff;width:46px;height:46px;border-radius:50%;right:calc(50% - 23px);top:-23px;border:6px solid #fff}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .icon-container .icon{position:absolute;top:10px;right:10px}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .upgrade-bonus .highlight{color:#2ecc71;font-weight:500}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased{font-size:14px;color:#888}.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased:focus,.wp-mail-smtp-swal.wp-mail-smtp-upgrade-popup .swal2-popup .swal2-content .already-purchased:hover{color:#555}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-header{margin:20px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content{padding:0 20px;margin-bottom:30px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .subtitle{margin:0 0 45px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .title-container{margin-bottom:7px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .bonus{padding:30px;margin:17px -30px 0;background-color:#fefcca;color:#222;border-radius:3px;text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{background-color:#6aa08b}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:focus,.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background-color:#548371}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before,.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .settings-input-long-checkbox .checkbox.checkbox-checked:after{top:5px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-content{margin-bottom:27px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-content img.icon{color:#fdb72c;width:16px;vertical-align:middle}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-good .swal2-popup .swal2-actions{border-top:none;padding:0 50px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content{margin-bottom:16px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content textarea{border:1px solid #b6b6b6;color:#222;border-radius:3px;margin:27px 0 11px;padding:10px;font-size:16px;width:100%}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content textarea:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container{display:-webkit-box;display:-ms-flexbox;display:flex}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container label{font-size:14px;margin-right:7px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-content .permission-container input[type=checkbox]{width:16px;height:16px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-actions{border-top:none;padding:0 50px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback-bad .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-content{margin-bottom:47px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions{border-top:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0 30px 40px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{width:128px;height:128px;padding:0;font-size:0;text-indent:-9999px;-webkit-box-shadow:none;box-shadow:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:after,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:before,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after,.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:before{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{background:url(../img/thumbs-up.svg);margin-left:50px}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:hover{background:url(../img/thumbs-up-hover.svg)}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel{background:url(../img/thumbs-down.svg)!important}.wp-mail-smtp-swal.wp-mail-smtp-swal-feedback .swal2-popup .swal2-actions .swal2-styled.swal2-cancel:hover{background:url(../img/thumbs-down-hover.svg)!important}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup p{margin:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content{padding:0 40px;margin-bottom:29px}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .subtitle{margin:0 0 26px}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .detailed-error{padding:11px 15px;font-size:14px;line-height:20px;margin:0;color:#555;border:1px solid #ddd;border-right:4px solid #dc3232;text-align:right;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.07);box-shadow:0 1px 1px rgba(0,0,0,.07)}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-content .detailed-error h3{font-size:14px;color:#222;font-weight:500;line-height:23px;margin:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-actions{padding:0 50px 40px;border-top:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-error .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content{padding:0 40px;margin-bottom:29px}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content #swal2-content{text-align:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-content p{margin:0 0 26px}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-actions{padding:0 50px 40px;border-top:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.wp-mail-smtp-swal.wp-mail-smtp-swal-alert .swal2-popup .swal2-actions .swal2-styled.swal2-confirm:after{content:none}.wp-mail-smtp-setup-wizard-step .license-form{color:#222}.wp-mail-smtp-setup-wizard-step .license-form input{display:block;width:100%;height:40px;font-size:16px;padding:10px;color:#222;border:1px solid #999;border-radius:3px}.wp-mail-smtp-setup-wizard-step .license-form input:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.wp-mail-smtp-setup-wizard-step .license-form button{-ms-flex-negative:0;flex-shrink:0;margin-top:10px;width:100%}.wp-mail-smtp-setup-wizard-step .license-form .license-control{display:block}.wp-mail-smtp-setup-wizard-step .license-form.license-form-error input{border-color:#dc3232}.wp-mail-smtp-setup-wizard-step .license-form.license-form-error .error-message{color:#dc3232;font-size:14px;margin:5px 0 0}.wp-mail-smtp-setup-wizard-step .license-form p{margin:0 0 16px}.wp-mail-smtp-setup-wizard-step-configure-mailer .license-form p{font-size:16px;line-height:24px;color:#222}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings{margin-top:29px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings.wp-mail-smtp-setup-wizard-step-configure-mailer-settings-smtp .mailer-description a{font-weight:500}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description{font-size:16px;line-height:24px;color:#222;margin-bottom:29px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links{margin-top:0}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a{margin-left:20px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a.wp-mail-smtp-link-docs,.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a:last-child{margin-top:10px;display:block}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links .wp-mail-smtp-link{font-weight:500}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links .mailer-offer-link-disclosure{text-decoration:underline;text-decoration-style:dotted;font-size:14px;display:inline-block;cursor:help;margin-top:15px;color:#777}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-header-container{width:calc(100% - 94px)}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-logo{width:94px;height:94px;border:1px solid #e6e6e6;border-radius:50%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-configure-mailer-logo svg{width:55px}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch{margin-bottom:30px}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch .label{font-size:16px}.settings-amazon-ses-identities,.settings-input-checkbox,.settings-input-long-checkbox,.settings-input-number,.settings-input-radio,.settings-input-select,.settings-input-switch,.settings-input-text,.settings-oauth-connection{margin:0 0 29px}.settings-amazon-ses-identities:last-child,.settings-input-checkbox:last-child,.settings-input-long-checkbox:last-child,.settings-input-number:last-child,.settings-input-radio:last-child,.settings-input-select:last-child,.settings-input-switch:last-child,.settings-input-text:last-child,.settings-oauth-connection:last-child{margin-bottom:20px}.settings-amazon-ses-identities .settings-input-label-container,.settings-input-checkbox .settings-input-label-container,.settings-input-long-checkbox .settings-input-label-container,.settings-input-number .settings-input-label-container,.settings-input-radio .settings-input-label-container,.settings-input-select .settings-input-label-container,.settings-input-switch .settings-input-label-container,.settings-input-text .settings-input-label-container,.settings-oauth-connection .settings-input-label-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 12px}.settings-amazon-ses-identities .label,.settings-input-checkbox .label,.settings-input-long-checkbox .label,.settings-input-number .label,.settings-input-radio .label,.settings-input-select .label,.settings-input-switch .label,.settings-input-text .label,.settings-oauth-connection .label{color:#222;display:inline-block;line-height:21px;font-weight:500;font-size:18px}.settings-amazon-ses-identities .wp-mail-smtp-info,.settings-input-checkbox .wp-mail-smtp-info,.settings-input-long-checkbox .wp-mail-smtp-info,.settings-input-number .wp-mail-smtp-info,.settings-input-radio .wp-mail-smtp-info,.settings-input-select .wp-mail-smtp-info,.settings-input-switch .wp-mail-smtp-info,.settings-input-text .wp-mail-smtp-info,.settings-oauth-connection .wp-mail-smtp-info{margin-right:10px}.settings-amazon-ses-identities .error,.settings-input-checkbox .error,.settings-input-long-checkbox .error,.settings-input-number .error,.settings-input-radio .error,.settings-input-select .error,.settings-input-switch .error,.settings-input-text .error,.settings-oauth-connection .error{display:-webkit-box;display:-ms-flexbox;display:flex;color:#dc3232;font-size:14px}.settings-amazon-ses-identities .error .icon,.settings-input-checkbox .error .icon,.settings-input-long-checkbox .error .icon,.settings-input-number .error .icon,.settings-input-radio .error .icon,.settings-input-select .error .icon,.settings-input-switch .error .icon,.settings-input-text .error .icon,.settings-oauth-connection .error .icon{margin-left:10px}.settings-amazon-ses-identities.input-error input,.settings-input-checkbox.input-error input,.settings-input-long-checkbox.input-error input,.settings-input-number.input-error input,.settings-input-radio.input-error input,.settings-input-select.input-error input,.settings-input-switch.input-error input,.settings-input-text.input-error input,.settings-oauth-connection.input-error input{border-color:#dc3232}.settings-amazon-ses-identities input:disabled,.settings-input-checkbox input:disabled,.settings-input-long-checkbox input:disabled,.settings-input-number input:disabled,.settings-input-radio input:disabled,.settings-input-select input:disabled,.settings-input-switch input:disabled,.settings-input-text input:disabled,.settings-oauth-connection input:disabled{cursor:not-allowed}.settings-amazon-ses-identities .description,.settings-input-checkbox .description,.settings-input-long-checkbox .description,.settings-input-number .description,.settings-input-radio .description,.settings-input-select .description,.settings-input-switch .description,.settings-input-text .description,.settings-oauth-connection .description{font-size:14px;line-height:20px;color:#555;margin:-4px 0 0}.settings-amazon-ses-identities .description--constant,.settings-input-checkbox .description--constant,.settings-input-long-checkbox .description--constant,.settings-input-number .description--constant,.settings-input-radio .description--constant,.settings-input-select .description--constant,.settings-input-switch .description--constant,.settings-input-text .description--constant,.settings-oauth-connection .description--constant{font-size:12px;margin-top:5px}.settings-input-number input,.settings-input-text input{display:block;width:100%;height:40px;font-size:16px;padding:10px;color:#222;border:1px solid #999;border-radius:3px;margin:0 0 15px}.settings-input-number input:focus,.settings-input-text input:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-number input::-webkit-input-placeholder,.settings-input-text input::-webkit-input-placeholder{color:#888}.settings-input-number input::-moz-placeholder,.settings-input-text input::-moz-placeholder{color:#888}.settings-input-number input:-ms-input-placeholder,.settings-input-text input:-ms-input-placeholder{color:#888}.settings-input-number input::-ms-input-placeholder,.settings-input-text input::-ms-input-placeholder{color:#888}.settings-input-number input::placeholder,.settings-input-text input::placeholder{color:#888}.settings-input-number-error input,.settings-input-text-error input{border-color:#dc3232}.settings-input-number.settings-input-text-with-copy .settings-input-container,.settings-input-text.settings-input-text-with-copy .settings-input-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.settings-input-number.settings-input-text-with-copy .settings-input-container input,.settings-input-text.settings-input-text-with-copy .settings-input-container input{color:#888;margin-bottom:0}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button{outline:none;margin:0 10px 0 0;background-color:#999}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button:hover,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button:hover{background-color:#888}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-small,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-small{padding:8px 12px}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied,.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied:hover,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button-copied:hover{background-color:#6aa08b}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon{display:none}.settings-input-number.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon.active,.settings-input-text.settings-input-text-with-copy .settings-input-container .wp-mail-smtp-button .copy-button-container .icon.active{display:block}.settings-input-radio input{opacity:0;position:absolute}.settings-input-radio label{color:#222;font-size:14px;display:inline-block;margin:0 0 15px 30px}.settings-input-radio label:last-child{margin-left:0}.settings-input-radio label>span{vertical-align:middle}.settings-input-radio label.wp-mail-smtp-styled-radio-label-disabled{cursor:not-allowed}.settings-input-radio .wp-mail-smtp-styled-radio{width:20px;height:20px;border:1px solid #999;position:relative;display:inline-block;border-radius:50%;margin-left:10px}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{border-color:#2d4f60}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked:after{right:2px;left:2px;top:2px;bottom:2px;position:absolute;content:"";background:#2d4f60;display:block;border-radius:50%}.settings-input-radio .wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-disabled{opacity:.4}.settings-input-radio input:focus-visible+.wp-mail-smtp-styled-radio{-webkit-box-shadow:0 0 0 1px #999;box-shadow:0 0 0 1px #999}.settings-input-radio input:focus-visible+.wp-mail-smtp-styled-radio.wp-mail-smtp-styled-radio-checked{-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-switch.sub_setting{background-color:#f8f8f8;padding:20px;margin-top:-17px}.settings-input-switch.sub_setting .label{font-size:14px}.settings-input-switch.sub_setting .label-description{color:#555}.settings-input-switch .title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-switch .title .wp-mail-smtp-pro-badge{margin-right:10px;height:18px;width:auto}.settings-input-switch .control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-switch input{position:absolute;top:auto;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;white-space:nowrap}.settings-input-switch input:checked+.toggle-switch{background-color:#2d4f60}.settings-input-switch input:checked+.toggle-switch:before{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}.settings-input-switch input:disabled:checked:hover+.toggle-switch,.settings-input-switch input:disabled:not(:checked):hover+.toggle-switch{-webkit-box-shadow:none;box-shadow:none}.settings-input-switch input:disabled:not(:checked):hover+.toggle-switch{background-color:#ddd}.settings-input-switch input:disabled+.toggle-switch{background-color:#ddd;cursor:not-allowed}.settings-input-switch input:disabled:checked+.toggle-switch{background-color:#4e88a5;cursor:not-allowed}.settings-input-switch input:checked:focus+.toggle-switch,.settings-input-switch input:checked:hover+.toggle-switch{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.settings-input-switch input:not(:checked):focus+.toggle-switch,.settings-input-switch input:not(:checked):hover+.toggle-switch{background-color:#999;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #999;box-shadow:0 0 0 1px #fff,0 0 0 3px #999}.settings-input-switch .toggle-switch{position:relative;cursor:pointer;background-color:#bbb;border-radius:10px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;vertical-align:middle;display:inline-block;width:30px;height:20px}.settings-input-switch .toggle-switch:before{position:absolute;content:"";height:16px;width:16px;right:2px;top:2px;background-color:#fff;border-radius:50%;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.settings-input-switch .description{margin-bottom:15px}.settings-input-switch .label-description{font-size:14px;line-height:20px;color:#222;margin:0 20px 0 0;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-input-select-container{position:relative;margin:0 0 15px}.settings-input-select-container:after{content:"";background:no-repeat url(../img/chevron-down-solid-grey.svg);left:10px;top:14px;width:12px;height:12px;position:absolute;pointer-events:none}.settings-input-select select::-ms-expand{display:none}.settings-input-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:40px;font-size:16px;padding:8px 10px 8px 5px;color:#222;border:1px solid #999;border-radius:3px}.settings-input-select select:focus{outline:none;border:1px solid #2d4f60;-webkit-box-shadow:0 0 0 1px #2d4f60;box-shadow:0 0 0 1px #2d4f60}.settings-input-select select:disabled{cursor:not-allowed}.settings-input-select-error select{border-color:#dc3232}.settings-amazon-ses-identities>.wp-mail-smtp-loader{display:block}.settings-amazon-ses-identities p{margin:0 0 17px}.settings-amazon-ses-identities .description{margin-bottom:17px}.settings-amazon-ses-identities .ses-identities-container{background:#f8f8f8;padding:20px}.settings-amazon-ses-identities .ses-identities-table-container{border-radius:3px;font-size:14px;line-height:20px;text-align:right}.settings-amazon-ses-identities .ses-identities-table-container+.wp-mail-smtp-amazonses-identity-form{margin-top:20px}.settings-amazon-ses-identities .ses-identities-table-container table{width:100%;border-collapse:collapse}.settings-amazon-ses-identities .ses-identities-table-container th.ses-identity-column{color:#222;font-weight:500}.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-sender{width:50%}.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-status,.settings-amazon-ses-identities .ses-identities-table-container .ses-identity-column-type{width:25%}.settings-amazon-ses-identities .ses-identities-table-container tr{border-bottom:1px solid #ddd}.settings-amazon-ses-identities .ses-identities-table-container th{padding:0 0 20px}.settings-amazon-ses-identities .ses-identities-table-container td{padding:18px 0}.settings-amazon-ses-identities .ses-identities-table-container .wp-mail-smtp-button{margin-top:20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form{background:#f8f8f8;border-radius:3px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form h3{font-size:14px;line-height:21px;margin-bottom:16px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form p{font-size:14px;margin:0 0 20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .settings-input-radio{margin-bottom:5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .settings-input-text{margin-bottom:20px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .wp-mail-smtp-button-main.wp-mail-smtp-button-verify{min-width:150px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .ses-identities-email-success-notice{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step .ses-identities-email-success-notice .icon{width:16px;height:16px;margin-left:10px;color:#6aa08b}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text label{width:50px;margin-left:16px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text label .label{font-size:16px;color:#888;font-weight:400;margin-bottom:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .settings-input-text .settings-input-container{width:100%}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records{border:1px solid #ddd;border-radius:4px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row{display:-webkit-box;display:-ms-flexbox;display:flex;padding:7.5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row--heading{border-radius:4px 4px 0 0;background-color:#eee}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__row--record{border-top:1px solid #ddd}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:0;flex-basis:0;margin:7.5px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--heading{font-size:14px;line-height:20px;font-weight:500;color:#444}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-container{position:relative}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-text{margin:0}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record .settings-input-label-container{display:none}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record input{margin:0;padding-left:39px}.settings-amazon-ses-identities .wp-mail-smtp-amazonses-identity-form .amazonses-identity-form-step-domain .amazonses-dns-records__col--record button{position:absolute;left:1px;top:1px;bottom:1px;padding:9px 11px;margin:0;border:none;border-radius:1px 0 0 1px}.settings-oauth-connection .description{margin-bottom:20px}.settings-oauth-connection .wp-mail-smtp-button{margin-top:-2px}.settings-oauth-connection .remove-authorization-container .description .icon{color:#6aa08b;width:16px;height:16px;margin-right:10px}.settings-oauth-connection .remove-authorization-container .description.connected-as{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-oauth-connection .remove-authorization-container .wp-mail-smtp-button{margin-top:-3px}.settings-input-long-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:30px 0;border-bottom:1px solid #e6e6e6;cursor:pointer;margin-bottom:0}.settings-input-long-checkbox.settings-input-long-checkbox-disabled{cursor:not-allowed}.settings-input-long-checkbox .title-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:9px}.settings-input-long-checkbox .title-container .wp-mail-smtp-pro-badge{margin-right:10px;width:46px;height:26px}.settings-input-long-checkbox .description{margin-left:30px}.settings-input-long-checkbox .label{margin:0}.settings-input-long-checkbox input{opacity:0;position:absolute}.settings-input-long-checkbox .checkbox{width:32px;height:32px;position:relative;display:inline-block;border-radius:50%;background-color:#e6e6e6}.settings-input-long-checkbox .checkbox .icon{display:none}.settings-input-long-checkbox .checkbox.checkbox-checked{background-color:#2d4f60;color:#fff}.settings-input-long-checkbox .checkbox.checkbox-checked .icon{display:block;position:absolute;right:8px;top:8px}.settings-input-long-checkbox .checkbox.checkbox-checked.checkbox-disabled{background-color:#6aa08b}.settings-input-long-checkbox:first-child{padding-top:0;color:red}.settings-input-long-checkbox:last-child{border-bottom:none;margin-bottom:0}.settings-input-long-checkbox input:focus-visible+.checkbox{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6;box-shadow:0 0 0 1px #fff,0 0 0 3px #e6e6e6}.settings-input-long-checkbox input:focus-visible+.checkbox.checkbox-checked{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.settings-input-checkbox input{opacity:0;position:absolute}.settings-input-checkbox .settings-input-checkbox-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-input-checkbox .settings-input-checkbox-container .input-label{margin-right:10px}.settings-input-checkbox .checkbox{width:24px;height:24px;position:relative;display:inline-block;border-radius:3px;border:1px solid #999;background-color:#fff}.settings-input-checkbox .checkbox .icon{display:none}.settings-input-checkbox .checkbox.checkbox-checked{background-color:#2d4f60;border:none;color:#fff}.settings-input-checkbox .checkbox.checkbox-checked .icon{display:block;position:absolute;right:5px;top:5px}.settings-input-checkbox .checkbox.checkbox-checked.checkbox-disabled{background-color:#4e88a5}.settings-input-checkbox input:focus-visible+.checkbox{-webkit-box-shadow:0 0 0 1px #999;box-shadow:0 0 0 1px #999}.settings-input-checkbox input:focus-visible+.checkbox.checkbox-checked{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60;box-shadow:0 0 0 1px #fff,0 0 0 3px #2d4f60}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header{margin-bottom:33px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header .wp-mail-smtp-content-header{margin-bottom:0}.wp-mail-smtp-setup-wizard-step-license .upgrade-content,.wp-mail-smtp-setup-wizard-step-license .verified-license{background-color:#e6efec;border-radius:3px;padding:30px;margin-bottom:50px;color:#222}.wp-mail-smtp-setup-wizard-step-license .upgrade-content p{margin:0 0 30px}.wp-mail-smtp-setup-wizard-step-license .verified-license{text-align:center;margin-bottom:20px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;margin-bottom:15px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item .icon{color:#6aa08b;margin-left:15px;width:16px}.wp-mail-smtp-setup-wizard-step-license .checked-item-list .checked-item>span{width:calc(100% - 31px)}.wp-mail-smtp-setup-wizard-check-configuration .check-configuration-loading-image-container{text-align:center}.wp-mail-smtp-plugin-item{border:1px solid #ddd;border-radius:3px;padding:10px;margin-bottom:20px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;color:#222}.wp-mail-smtp-plugin-item,.wp-mail-smtp-plugin-item-title-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-plugin-item-title-container{margin-bottom:10px}.wp-mail-smtp-plugin-item .wp-mail-smtp-button{height:32px;width:120px;text-align:center;font-size:13px;line-height:16px;font-weight:500;padding:8px 31px;color:#fff;background-color:#6693af}.wp-mail-smtp-plugin-item .wp-mail-smtp-button:hover{background-color:#2d4f60}.wp-mail-smtp-plugin-item .wp-mail-smtp-button:disabled{cursor:not-allowed;background-color:#e6e6e6;color:#777}.wp-mail-smtp-plugin-item:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-configuration-success .plugin-item-container{margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-success .plugin-item-container .medium-bold{color:#222;margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner-container{margin:30px -20px 0}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner{padding:30px;border-radius:3px 3px 0 0;text-align:center;background-color:#ecf3f1}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .wp-mail-smtp-setup-wizard-content h2{margin-bottom:10px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .subtitle{margin-bottom:28px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:29px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item{margin-bottom:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;color:#222}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item .icon{color:#6aa08b;margin-left:8px}.wp-mail-smtp-setup-wizard-configuration-success .bonus{margin:10px 0 0;padding:30px;background-color:#fefcca;color:#222;border-radius:0 0 3px 3px;text-align:center}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer{margin:20px 0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button{margin-bottom:10px;width:100%}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button:last-child{margin-bottom:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-content-header{margin-bottom:27px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container{margin-bottom:11px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container svg{width:112px;height:112px;margin:0 auto;display:block}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer{margin:20px 0}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button{margin-bottom:10px;width:100%}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button:last-child{margin-bottom:0}.wp-mail-smtp-admin-page{position:relative}.wp-mail-smtp-admin-page .wp-mail-smtp-blocked,.wp-mail-smtp-admin-page .wp-mail-smtp-loading{position:fixed;top:0;bottom:0;left:0;right:0;background:rgba(68,68,68,.5);z-index:999}.wp-mail-smtp-admin-page .wp-mail-smtp-loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swal2-shown .swal2-container.swal2-backdrop-show{background:rgba(68,68,68,.5)}img{max-width:100%}a{color:#6693af}a:focus,a:hover{text-decoration:none}a .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}a .text-with-arrow-right .icon{margin-right:10px}a .text-with-arrow-left .icon{margin-left:10px}.wp-mail-smtp-notice{padding:15px;font-size:14px;line-height:20px;margin:0;color:#222;border:1px solid #ddd;border-right:4px solid #00a0d2;text-align:right;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.07);box-shadow:0 1px 1px rgba(0,0,0,.07)}.wp-mail-smtp-notice--error{border-right:4px solid #dc3232}.wp-mail-smtp-notice--info{border-right:4px solid #00a0d2}.wp-mail-smtp-notice p{margin-top:0}.wp-mail-smtp-notice p:last-child{margin-bottom:0}.wp-mail-smtp-google-sign-in-btn{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0;border:none;background-color:#4285f4;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.25);box-shadow:0 2px 4px 0 rgba(0,0,0,.25);-webkit-transition:-webkit-box-shadow .3s ease-in-out;transition:-webkit-box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out;transition:box-shadow .3s ease-in-out,-webkit-box-shadow .3s ease-in-out;text-decoration:none;cursor:pointer;color:#fff}.wp-mail-smtp-google-sign-in-btn:hover{-webkit-box-shadow:0 0 3px 3px rgba(66,133,244,.3);box-shadow:0 0 3px 3px rgba(66,133,244,.3)}.wp-mail-smtp-google-sign-in-btn:active{background:#3367d6}.wp-mail-smtp-google-sign-in-btn--disabled,.wp-mail-smtp-google-sign-in-btn:disabled{pointer-events:none;background-color:#d4d3d3;-webkit-box-shadow:none;box-shadow:none;color:#7f7f7f}.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__bg,.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__border,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__bg,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__border{fill:#d4d3d3}.wp-mail-smtp-google-sign-in-btn--disabled .wp-mail-smtp-google-sign-in-icon__symbol,.wp-mail-smtp-google-sign-in-btn:disabled .wp-mail-smtp-google-sign-in-icon__symbol{fill:#7f7f7f}.wp-mail-smtp-google-sign-in-btn__icon{overflow:hidden;border-radius:2px}.wp-mail-smtp-google-sign-in-btn__icon svg{display:block;margin:-3px}.wp-mail-smtp-google-sign-in-btn__text{font-size:14px;font-weight:600;margin:0 10px}@media(min-width:782px){.wp-mail-smtp-setup-wizard-container{max-width:100%;margin:0 auto;width:850px}.wp-mail-smtp-setup-wizard-content{margin:50px 0 48px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-content-header{margin-bottom:47px}.wp-mail-smtp-setup-wizard-content-container{padding:49px 100px 30px}.wp-mail-smtp-setup-wizard-content-container-container{padding:30px 20px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-setup-wizard-content-container{padding:49px 100px 19px}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator{margin:30px 0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-no-margin{margin:0}.wp-mail-smtp-setup-wizard-content .wp-mail-smtp-separator-big-margin{margin:50px 0}.wp-mail-smtp-setup-wizard-step .license-form .license-control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wp-mail-smtp-setup-wizard-step .license-form input{width:calc(100% - 195px)}.wp-mail-smtp-setup-wizard-step .license-form button{margin-top:0;width:180px;margin-right:15px}.wp-mail-smtp-welcome .wp-mail-smtp-logo{margin-top:158px;padding:0}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-container{width:650px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content{margin:42px 0 60px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content-container{padding:80px 65px}.wp-mail-smtp-welcome .wp-mail-smtp-setup-wizard-content-container .wp-mail-smtp-content-header{margin-bottom:36px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings{margin-top:49px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description{margin-bottom:49px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links{margin-top:-31px}.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a.wp-mail-smtp-link-docs,.wp-mail-smtp-setup-wizard-step-configure-mailer-settings .mailer-description-links a:last-child{margin-top:0;display:inline-block}.wp-mail-smtp-setup-wizard-step-configure-mailer .wp-mail-smtp-gmail-one-click-setup-switch{margin-bottom:50px}.wp-mail-smtp-setup-wizard-check-configuration .wp-mail-smtp-setup-wizard-content-container{padding:83px 100px 66px}.wp-mail-smtp-setup-wizard-check-configuration .wp-mail-smtp-setup-wizard-content-container .wp-mail-smtp-content-header{margin-bottom:55px}.wp-mail-smtp-setup-wizard-step-plugin-features .wp-mail-smtp-plugin-features-header{margin-bottom:53px}.wp-mail-smtp-input-radios-with-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.wp-mail-smtp-input-radios-with-icons label{width:calc(50% - 10px)}.wp-mail-smtp-setup-wizard-timeline{padding:0}.wp-mail-smtp-setup-wizard-timeline .wp-mail-smtp-setup-wizard-timeline-step-line{margin:0 10px}.wp-mail-smtp-setup-wizard-step-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0;margin-top:0}.wp-mail-smtp-setup-wizard-step-footer-buttons{margin-bottom:0;margin-left:30px}.wp-mail-smtp-setup-wizard-step-footer-buttons button{margin-bottom:0;margin-left:15px;width:inherit}.wp-mail-smtp-setup-wizard-step-footer-buttons button:last-child{margin-left:0}.wp-mail-smtp-setup-wizard-form-row-highlight{padding:20px 20px 0}.wp-mail-smtp-setup-wizard-form-row-highlight .wp-mail-smtp-input-radios-with-icons label:last-child{margin-bottom:20px}.wp-mail-smtp-setup-wizard-configuration-failure .start-troubleshooting-arrow-container svg{margin:0;display:inline-block}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer{margin:0 30px}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button{margin-bottom:0;-webkit-box-flex:10;-ms-flex:10;flex:10}.wp-mail-smtp-setup-wizard-configuration-failure .wp-mail-smtp-setup-wizard-step-footer .wp-mail-smtp-button.wp-mail-smtp-button-main{-webkit-box-flex:11;-ms-flex:11;flex:11;margin-left:30px}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner-container{margin:50px -70px 0}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;text-align:center}.wp-mail-smtp-setup-wizard-configuration-success .upgrade-banner .checked-item-list .checked-item{margin-bottom:0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer{margin:0 30px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button{-webkit-box-flex:10;-ms-flex:10;flex:10;margin-bottom:0;margin-left:30px}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button:last-child{margin-left:0}.wp-mail-smtp-setup-wizard-configuration-success .wp-mail-smtp-setup-wizard-step-footer button.wp-mail-smtp-button-main{-webkit-box-flex:11;-ms-flex:11;flex:11}.wp-mail-smtp-plugin-item{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.wp-mail-smtp-plugin-item-title-container{margin-bottom:0}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-header{margin:75px 90px 18px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content{padding:0 90px}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-content .bonus{margin:17px -70px 0}.wp-mail-smtp-swal.wp-mail-smtp-swal-plugin-upgrade .swal2-popup .swal2-actions .swal2-styled.swal2-confirm{margin-right:30px}.wp-mail-smtp-setup-wizard-step-footer a{margin:0 30px 0 0}a .text-with-arrow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.wp-mail-smtp-pro-badge[data-v-2d9202de]{float:left;margin-top:3px;width:46px;height:26px}.wp-mail-smtp-logo-icon[data-v-2d9202de]{width:32px;height:32px}.wp-mail-smtp-setup-wizard-step-count[data-v-44fd4a93]{margin:0 0 16px;font-size:14px;line-height:18px;color:#b6b6b6}.wp-mail-smtp-notice[data-v-aaf5fc00]{margin-top:-20px;margin-bottom:30px}.wp-mail-smtp-info .icon[data-v-74a4d2ae]{color:#ccc}.wp-mail-smtp-logo-icon[data-v-2e2edfa6]{width:32px;height:32px;margin-left:10px}.wp-mail-smtp-notice[data-v-05d90eba],.wp-mail-smtp-notice[data-v-1230186a]{margin-top:-23px;margin-bottom:20px}
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/amazonses.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/amazonses.svg
new file mode 100644
index 000000000..3ac47762b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/amazonses.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/arrow.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/arrow.svg
new file mode 100644
index 000000000..13c1b3b98
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/arrow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/brevo.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/brevo.svg
new file mode 100644
index 000000000..2b35cb71a
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/brevo.svg
@@ -0,0 +1,4 @@
+
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid-white.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid-white.svg
new file mode 100644
index 000000000..02f7e4774
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid.svg
new file mode 100644
index 000000000..6aaa9742e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-circle-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-solid.svg
new file mode 100644
index 000000000..15d7ab5e8
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/check-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/chevron-down-solid-grey.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/chevron-down-solid-grey.svg
new file mode 100644
index 000000000..583c8ee47
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/chevron-down-solid-grey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/copy-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/copy-solid.svg
new file mode 100644
index 000000000..51fcb5b23
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/copy-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/exclamation-circle-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/exclamation-circle-solid.svg
new file mode 100644
index 000000000..27647c3b0
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/exclamation-circle-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail-sign-in-btn.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail-sign-in-btn.svg
new file mode 100644
index 000000000..75fe0c7bd
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail-sign-in-btn.svg
@@ -0,0 +1 @@
+
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail.svg
new file mode 100644
index 000000000..2472a43cb
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/gmail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/info-circle-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/info-circle-solid.svg
new file mode 100644
index 000000000..9e86172eb
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/info-circle-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-blue.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-blue.svg
new file mode 100644
index 000000000..5519045f9
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-blue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-pattie.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-pattie.svg
new file mode 100644
index 000000000..ffe6a6854
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-pattie.svg
@@ -0,0 +1,28 @@
+
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-white.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-white.svg
new file mode 100644
index 000000000..ae6fe144e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading.svg
new file mode 100644
index 000000000..0be46bd52
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/loading.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/lock-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/lock-solid.svg
new file mode 100644
index 000000000..af7bed5a5
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/lock-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/logo.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/logo.svg
new file mode 100644
index 000000000..8ac538625
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular-grey.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular-grey.svg
new file mode 100644
index 000000000..979049752
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular-grey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular.svg
new file mode 100644
index 000000000..0055aa1b0
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-left-regular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular-white.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular-white.svg
new file mode 100644
index 000000000..87ce9f170
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular.svg
new file mode 100644
index 000000000..45841124f
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/long-arrow-alt-right-regular.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/mailgun.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/mailgun.svg
new file mode 100644
index 000000000..a10618088
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/mailgun.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/outlook.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/outlook.svg
new file mode 100644
index 000000000..22fbc0c1a
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/outlook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/postmark.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/postmark.svg
new file mode 100644
index 000000000..e32dffe1a
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/postmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/pro-badge.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/pro-badge.svg
new file mode 100644
index 000000000..fa9e4e14c
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/pro-badge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/question-circle-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/question-circle-solid.svg
new file mode 100644
index 000000000..a7c51850e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/question-circle-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendgrid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendgrid.svg
new file mode 100644
index 000000000..27f77d339
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendgrid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendlayer.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendlayer.svg
new file mode 100644
index 000000000..25f0d650b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sendlayer.svg
@@ -0,0 +1,5 @@
+
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp.svg
new file mode 100644
index 000000000..02eb1c6f6
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp2go.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp2go.svg
new file mode 100644
index 000000000..9f2a49337
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtp2go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtpcom.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtpcom.svg
new file mode 100644
index 000000000..616fb47c4
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/smtpcom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/sparkpost.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sparkpost.svg
new file mode 100644
index 000000000..413003154
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/sparkpost.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/star-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/star-solid.svg
new file mode 100644
index 000000000..70cab3ef4
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/star-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down-hover.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down-hover.svg
new file mode 100644
index 000000000..4226b1214
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down-hover.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down.svg
new file mode 100644
index 000000000..2ccf04065
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up-hover.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up-hover.svg
new file mode 100644
index 000000000..6a9876b3c
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up-hover.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up.svg
new file mode 100644
index 000000000..9f9deaffb
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/thumbs-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid-grey.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid-grey.svg
new file mode 100644
index 000000000..47b4d985b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid-grey.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid.svg
new file mode 100644
index 000000000..814462245
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/times-solid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/working.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/working.svg
new file mode 100644
index 000000000..cadb5865d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/working.svg
@@ -0,0 +1,67 @@
+
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/img/zoho.svg b/wp-content/plugins/wp-mail-smtp/assets/vue/img/zoho.svg
new file mode 100644
index 000000000..36de119fc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/img/zoho.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wp-content/plugins/wp-mail-smtp/assets/vue/js/chunk-vendors.min.js b/wp-content/plugins/wp-mail-smtp/assets/vue/js/chunk-vendors.min.js
new file mode 100644
index 000000000..6f269137b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/assets/vue/js/chunk-vendors.min.js
@@ -0,0 +1,43 @@
+(self["wpmailsmtpjsonp"]=self["wpmailsmtpjsonp"]||[]).push([[998],{1001:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,{Z:function(){return r}})},7086:function(t,e,n){"use strict";function r(t,e){var n,r,o=0;function i(){var i,a,s=n,c=arguments.length;t:while(s){if(s.args.length===arguments.length){for(a=0;a0){if(++o>=e)return arguments[0]}else o=0;return t.apply(void 0,arguments)}}t.exports=o},7465:function(t,e,n){var r=n(8407);function o(){this.__data__=new r,this.size=0}t.exports=o},3779:function(t){function e(t){var e=this.__data__,n=e["delete"](t);return this.size=e.size,n}t.exports=e},7599:function(t){function e(t){return this.__data__.get(t)}t.exports=e},4758:function(t){function e(t){return this.__data__.has(t)}t.exports=e},4309:function(t,e,n){var r=n(8407),o=n(7071),i=n(3369),a=200;function s(t,e){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!o||s.length\n \n \n \n \n \n \n \n \n
this.$route.name.includes(t)));return t<=s&&(e+=" wp-mail-smtp-setup-wizard-timeline-line-active"),e}}},T=B,F=(0,d.Z)(T,M,E,!1,null,null,null),I=F.exports,D={name:"SetupWizardSteps",components:{TheWizardHeader:v,TheWizardTimeline:I},data(){return{text_exit_link:(0,l.__)("Close and exit the Setup Wizard","wp-mail-smtp"),exit_href:this.$wpms.exit_url,content_below:""}},computed:{display_exit_link:function(){return!this.$route.name.includes("check_configuration_step")}},methods:{displayContentBelow:function(t){this.content_below=t}},mounted(){this.$store.dispatch("$_app/start_loading"),Promise.all([this.$store.dispatch("$_settings/getSettings"),this.$store.dispatch("$_plugins/getPlugins")]).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))}},z=D,Z=(0,d.Z)(z,S,P,!1,null,null,null),O=Z.exports,L=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step wp-mail-smtp-setup-wizard-step-import"},[e("div",{staticClass:"wp-mail-smtp-setup-wizard-content-container"},[e("the-wizard-step-counter"),e("content-header",{attrs:{title:t.text_header_title,subtitle:t.text_header_subtitle}}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("form",[e("div",{staticClass:"wp-mail-smtp-setup-wizard-form-row"},[e("settings-input-radios-with-icons",{attrs:{name:"import_from_plugin",options:t.options},model:{value:t.selectedImport,callback:function(e){t.selectedImport=e},expression:"selectedImport"}})],1)])])],1),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-no-margin"}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.previousStep.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-left"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(9238),width:"16",height:"18"}}),t._v(t._s(t.text_previous_step)+" ")],1)]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer-buttons"},[e("button",{staticClass:"wp-mail-smtp-button",attrs:{type:"button",name:"skip_step"},domProps:{textContent:t._s(t.text_skip)},on:{click:function(e){return e.preventDefault(),t.nextStep.apply(null,arguments)}}}),e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main",attrs:{type:"submit",name:"next_step",disabled:null===t.selectedImport},on:{click:function(e){return e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_save)+" "),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"19"}})],1)])])])])},W=[],R=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-input-radios-with-icons"},t._l(t.options,(function(i){return e("label",{key:i.value,class:t.labelClass(i),attrs:{for:"wp-mail-smtp-settings-radio-"+t.name+"["+i.value+"]"},on:{click:function(e){return t.clicked(i)}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.selectedImport,expression:"selectedImport"}],attrs:{id:"wp-mail-smtp-settings-radio-"+t.name+"["+i.value+"]",type:"radio",name:t.name,autocomplete:"off",disabled:i.disabled||!1},domProps:{value:i.value,checked:t.isChecked(i.value),checked:t._q(t.selectedImport,i.value)},on:{change:function(e){t.selectedImport=i.value}}}),e("span",{class:t.titleClass(i.value)},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}})],1),i.logo.length?e("img",{staticClass:"wp-mail-smtp-logo-icon",attrs:{src:i.logo,alt:i.label}}):t._e(),e("span",{staticClass:"wp-mail-smtp-styled-radio-text"},[t._v(t._s(i.label))]),i.is_pro?e("inline-svg",{staticClass:"wp-mail-smtp-pro-badge",attrs:{src:s(330),width:"46",height:"26"}}):t._e()],1)})),0)},Q=[],N={name:"SettingsInputRadiosWithIcons",props:{options:Array,name:String,value:String},data(){return{has_error:!1}},computed:{selectedImport:{get(){return this.value},set(t){this.$emit("input",t)}}},methods:{titleClass(t){let e="wp-mail-smtp-styled-radio";return this.isChecked(t)&&(e+=" wp-mail-smtp-styled-radio-checked"),e},labelClass(t){let e="";return this.isChecked(t.value)&&(e+=" wp-mail-smtp-styled-radio-label-checked"),t.disabled&&(e+=" wp-mail-smtp-styled-radio-label-disabled"),t.readonly&&(e+=" wp-mail-smtp-styled-radio-label-readonly"),e},isChecked(t){return t===this.selectedImport},clicked(t){t.is_pro&&this.$emit("clicked-disabled",t)}}},U=N,G=(0,d.Z)(U,R,Q,!1,null,"2d9202de",null),H=G.exports,Y=function(){var t=this,e=t._self._c;return e("p",{staticClass:"wp-mail-smtp-setup-wizard-step-count"},[t._v(" "+t._s(t.stepValue)+" ")])},V=[],K={name:"TheWizardStepCounter",computed:{stepValue:function(){const t=this.$wizard_steps.findIndex((t=>this.$route.name.includes(t)))+1;return(0,l.gB)((0,l.__)("Step %1$s of %2$s","wp-mail-smtp"),t,this.$wizard_steps.length)}}},q=K,J=(0,d.Z)(q,Y,V,!1,null,"44fd4a93",null),X=J.exports,j={name:"WizardStepImport",components:{SettingsInputRadiosWithIcons:H,ContentHeader:h,TheWizardStepCounter:X},data(){return{text_header_title:(0,l.__)("Import data from your current plugins","wp-mail-smtp"),text_header_subtitle:(0,l.__)("We have detected other SMTP plugins installed on your website. Select which plugin's data you would like to import to WP Mail SMTP.","wp-mail-smtp"),text_save:(0,l.__)("Import Data and Continue","wp-mail-smtp"),text_skip:(0,l.__)("Skip this Step","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),options:[{value:"easy-smtp",label:(0,l.__)("Easy WP SMTP","wp-mail-smtp"),logo:s(9515),disabled:!this.$wpms.other_smtp_plugins.includes("easy-smtp"),readonly:!this.$wpms.other_smtp_plugins.includes("easy-smtp")},{value:"fluent-smtp",label:(0,l.__)("FluentSMTP","wp-mail-smtp"),logo:s(5529),disabled:!this.$wpms.other_smtp_plugins.includes("fluent-smtp"),readonly:!this.$wpms.other_smtp_plugins.includes("fluent-smtp")},{value:"post-smtp-mailer",label:(0,l.__)("Post SMTP Mailer","wp-mail-smtp"),logo:s(6557),disabled:!this.$wpms.other_smtp_plugins.includes("post-smtp-mailer"),readonly:!this.$wpms.other_smtp_plugins.includes("post-smtp-mailer")},{value:"smtp-mailer",label:(0,l.__)("SMTP Mailer","wp-mail-smtp"),logo:s(5543),disabled:!this.$wpms.other_smtp_plugins.includes("smtp-mailer"),readonly:!this.$wpms.other_smtp_plugins.includes("smtp-mailer")},{value:"wp-smtp",label:(0,l.__)("WP SMTP","wp-mail-smtp"),logo:s(7445),disabled:!this.$wpms.other_smtp_plugins.includes("wp-smtp"),readonly:!this.$wpms.other_smtp_plugins.includes("wp-smtp")}],selectedImport:null}},methods:{handleSubmit(){null!==this.selectedImport&&(this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/importOtherPlugin",{value:this.selectedImport}).then((t=>{t?this.nextStep():this.$wpms_error_toast({})})).finally((()=>{this.$store.dispatch("$_app/stop_loading")})))},nextStep(){this.$next_step()},previousStep(){this.$previous_step()}}},$=j,tt=(0,d.Z)($,L,W,!1,null,null,null),et=tt.exports,st=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step wp-mail-smtp-setup-wizard-step-choose-mailer"},[e("div",{staticClass:"wp-mail-smtp-setup-wizard-content-container"},[e("the-wizard-step-counter"),e("content-header",{attrs:{title:t.text_header_title,subtitle:t.text_header_subtitle}}),t.mailer_set_via_constants?e("div",{staticClass:"wp-mail-smtp-notice wp-mail-smtp-notice--info"},[e("p",{domProps:{innerHTML:t._s(t.text_mailer_set_via_constants)}})]):t._e(),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("form",[e("div",{staticClass:"wp-mail-smtp-setup-wizard-form-row wp-mail-smtp-setup-wizard-form-row-highlight"},[e("h3",[t._v(t._s(t.text_recommended_mailers))]),e("settings-input-radios-with-icons",{attrs:{name:"choose_mailer",options:t.recommended_options},model:{value:t.selectedMailer,callback:function(e){t.selectedMailer=e},expression:"selectedMailer"}})],1),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form-row"},[e("settings-input-radios-with-icons",{attrs:{name:"choose_mailer",options:t.options},on:{"clicked-disabled":t.clickedDisabledOption},model:{value:t.selectedMailer,callback:function(e){t.selectedMailer=e},expression:"selectedMailer"}})],1)])])],1),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-no-margin"}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.previousStep.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-left"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(9238),width:"16",height:"18"}}),t._v(t._s(t.text_previous_step)+" ")],1)]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer-buttons"},[e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main",attrs:{type:"submit",name:"next_step",disabled:null===t.selectedMailer||"mail"===t.selectedMailer},on:{click:function(e){return e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_save)+" "),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"19"}})],1)])])])])},it=[],at=s(629),nt={name:"WizardStepChooseMailer",components:{SettingsInputRadiosWithIcons:H,ContentHeader:h,TheWizardStepCounter:X},data(){return{text_header_title:(0,l.__)("Choose Your SMTP Mailer","wp-mail-smtp"),text_header_subtitle:(0,l.gB)((0,l.__)("Which mailer would you like to use to send emails? Not sure which mailer to choose? Check out our %1$scomplete mailer guide%2$s for details on each option.","wp-mail-smtp"),'',""),text_save:(0,l.__)("Save and Continue","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),text_recommended_mailers:(0,l.__)("Recommended Mailers","wp-mail-smtp"),text_mailer_set_via_constants:(0,l.__)("Your mailer is already configured in a WP Mail SMTP constant, so the options below have been disabled. To change your mailer, please edit or remove the WPMS_MAILER
constant in your wp-config.php
file.","wp-mail-smtp"),mailer_set_via_constants:this.$wpms.defined_constants.includes("WPMS_MAILER"),recommended_options:[{value:"sendlayer",label:this.$wpms.mailer_options["sendlayer"].title,logo:s(9857),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"smtpcom",label:this.$wpms.mailer_options["smtpcom"].title,logo:s(7536),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"sendinblue",label:this.$wpms.mailer_options["sendinblue"].title,logo:s(2451),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")}],options:[{value:"amazonses",label:this.$wpms.mailer_options["amazonses"].title,logo:s(7557),is_pro:!this.$wpms.is_pro,notice:this.$wpms.mailer_options["amazonses"].edu_notice,readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:!this.$wpms.is_pro||this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"gmail",label:this.$wpms.mailer_options["gmail"].title,logo:s(7526),notice:this.$wpms.mailer_options["gmail"].edu_notice,readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"mailgun",label:this.$wpms.mailer_options["mailgun"].title,logo:s(5567),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"outlook",label:this.$wpms.is_pro?(0,l.__)("Microsoft 365 / Outlook","wp-mail-smtp"):this.$wpms.mailer_options["outlook"].title,logo:s(6703),is_pro:!this.$wpms.is_pro,notice:this.$wpms.mailer_options["outlook"].edu_notice,readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:!this.$wpms.is_pro||this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"postmark",label:this.$wpms.mailer_options["postmark"].title,logo:s(5699),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"sendgrid",label:this.$wpms.mailer_options["sendgrid"].title,logo:s(2763),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"smtp2go",label:this.$wpms.mailer_options["smtp2go"].title,logo:s(3136),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"sparkpost",label:this.$wpms.mailer_options["sparkpost"].title,logo:s(2091),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"zoho",label:this.$wpms.mailer_options["zoho"].title,logo:s(9349),is_pro:!this.$wpms.is_pro,readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:!this.$wpms.is_pro||this.$wpms.defined_constants.includes("WPMS_MAILER")},{value:"smtp",label:this.$wpms.mailer_options["smtp"].title,logo:s(450),readonly:this.$wpms.defined_constants.includes("WPMS_MAILER"),disabled:this.$wpms.defined_constants.includes("WPMS_MAILER")}],selectedMailer:this.currentMailer}},watch:{currentMailer:function(t){this.selectedMailer=t}},computed:{...(0,at.Se)({currentMailer:"$_settings/mailer"}),selectedMailerOptions:function(){return this.recommended_options.concat(this.options).find((t=>t.value===this.selectedMailer))}},methods:{handleSubmit(t,e=!1){null!==this.selectedMailer&&"mail"!==this.selectedMailer&&(void 0===this.selectedMailerOptions.notice||e?(this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/updateSettings",{value:{mail:{mailer:this.selectedMailer}}}).then((t=>{t.success?(this.$store.dispatch("$_settings/setMailer",this.selectedMailer),this.nextStep()):this.$wpms_error_toast({})})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))):this.$swal({title:this.selectedMailerOptions.label+" "+(0,l.__)("Mailer","wp-mail-smtp"),html:this.selectedMailerOptions.notice,width:650,showCloseButton:!0,allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,customClass:{container:"wp-mail-smtp-swal"},confirmButtonText:(0,l.__)("I Understand, Continue","wp-mail-smtp"),cancelButtonText:(0,l.__)("Choose a Different Mailer","wp-mail-smtp"),showCancelButton:!0,reverseButtons:!0}).then((t=>{t.value?this.handleSubmit(null,!0):void 0===t.dismiss||"cancel"!==t.dismiss||this.$wpms.defined_constants.includes("WPMS_MAILER")||(this.selectedMailer=null)})))},nextStep(){const t=this.$wizard_steps.findIndex((t=>this.$route.name.includes(t)))+1;this.$router.push({name:`${this.$wizard_steps[t]}_${this.selectedMailer}`})},previousStep(){this.$previous_step()},clickedDisabledOption(t){var e=/(\?)/.test(this.$wpms.education.upgrade_url)?"&":"?",i=this.$wpms.education.upgrade_url+e+"utm_content="+encodeURIComponent(t.value);this.$swal({title:t.label+" "+(0,l.__)("is a PRO Feature","wp-mail-smtp"),html:`"+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}}},vt=bt,xt=(0,d.Z)(vt,wt,At,!1,null,null,null),kt=xt.exports,yt={name:"WizardStepPluginFeatures",components:{ContentHeader:h,TheWizardStepCounter:X,SettingsInputLongCheckbox:kt},data(){return{text_header_title:(0,l.__)("Which email features do you want to enable?","wp-mail-smtp"),text_header_subtitle:(0,l.__)("Make sure you're getting the most out of WP Mail SMTP. Just check all of the features you'd like to use, and we'll go ahead and enable those for you.","wp-mail-smtp"),text_save:(0,l.__)("Save and Continue","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),text_improved_email_deliverability:(0,l.__)("Improved Email Deliverability","wp-mail-smtp"),text_improved_email_deliverability_desc:(0,l.__)("Ensure your emails are sent successfully and reliably.","wp-mail-smtp"),text_error_tracking:(0,l.__)("Email Error Tracking","wp-mail-smtp"),text_error_tracking_desc:(0,l.__)("Easily spot errors causing delivery issues.","wp-mail-smtp"),text_smart_contact_form:(0,l.__)("Smart Contact Form","wp-mail-smtp"),text_smart_contact_form_desc:(0,l.__)("Install the WPForms plugin and create beautiful contact forms with just a few clicks.","wp-mail-smtp"),text_email_log:(0,l.__)("Detailed Email Logs","wp-mail-smtp"),text_email_log_desc:(0,l.__)("Keep records of every email that's sent out from your website.","wp-mail-smtp"),text_instant_email_alert:(0,l.__)("Instant Email Alerts","wp-mail-smtp"),text_instant_email_alert_desc:(0,l.__)("Get notifications via email, SMS, Slack, or webhook when emails fail to send.","wp-mail-smtp"),text_complete_email_report:(0,l.__)("Complete Email Reports","wp-mail-smtp"),text_complete_email_report_desc:(0,l.__)("See the delivery status, track opens and clicks, and create deliverability graphs.","wp-mail-smtp"),text_summary_report_email:(0,l.__)("Weekly Email Summary","wp-mail-smtp"),text_summary_report_email_desc:(0,l.__)("Get statistics about emails you've sent.","wp-mail-smtp"),text_manage_notifications:(0,l.__)("Manage Default Notifications","wp-mail-smtp"),text_manage_notifications_desc:(0,l.__)("Control which email notifications your WordPress site sends.","wp-mail-smtp"),text_network_settings:(0,l.__)("Multisite Network Settings","wp-mail-smtp"),text_network_settings_desc:(0,l.__)("Save time with powerful WordPress Multisite controls.","wp-mail-smtp"),is_pro:this.$wpms.is_pro,is_multisite:this.$wpms.is_multisite,email_log:!1,complete_email_report:!!this.$wpms.is_pro,summary_report_email:!1,manage_notifications:!1,network_settings:!1}},computed:{...(0,at.Se)({contact_form_already_installed:"$_plugins/contact_form_plugin_already_installed",email_log_setting:"$_settings/email_log_enabled",summary_report_email_setting:"$_settings/summary_report_email_enabled"}),...(0,_t.vn)("$_plugins",{smart_contact_form:"smart_contact_form_setting"}),...(0,_t.vn)("$_settings",{alert_email_connections:"settings.alert_email.connections",instant_email_alert:"settings.alert_email.enabled"})},watch:{smart_contact_form:function(){if(this.contact_form_already_installed)return!1;this.showPluginInstallFooterNotice()},contact_form_already_installed:function(){this.showPluginInstallFooterNotice()},email_log_setting:function(t){this.email_log=t},summary_report_email_setting:function(t){this.summary_report_email=t}},methods:{handleSubmit(){this.$store.dispatch("$_app/start_loading");let t=[],e={value:{general:{summary_report_email_disabled:!this.summary_report_email}}};if(t.push(this.$store.dispatch("$_settings/setSummaryReportEmail",!this.summary_report_email)),this.is_pro){e.value={...e.value,logs:{enabled:this.email_log}},t.push(this.$store.dispatch("$_settings/setLogs",this.email_log));let s={enabled:this.instant_email_alert};this.instant_email_alert&&0===Object.values(this.alert_email_connections).length&&(s.connections=[{send_to:this.$wpms.current_user_email}]),e.value={...e.value,alert_email:s}}if(t.push(this.$store.dispatch("$_settings/updateSettings",e)),t.push(Promise.resolve({success:!0}).then((t=>this.smart_contact_form&&!this.contact_form_already_installed?this.$store.dispatch("$_plugins/installPlugin","wpforms-lite"):t))),!this.is_pro){const e=[];this.email_log&&e.push("email_log"),this.complete_email_report&&e.push("complete_email_report"),this.instant_email_alert&&e.push("instant_email_alert"),this.manage_notifications&&e.push("manage_notifications"),this.network_settings&&e.push("network_settings"),t.push(this.$store.dispatch("$_settings/savePluginFeatures",e))}Promise.all(t).then((t=>{const e=t.filter((t=>t.success));if(e.length===t.length){this.$emit("displayContentBelow","");let t=this.is_pro&&!this.$store.getters["$_settings/email_log_enabled"]?1:0;this.$next_step(t)}})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},previousStep(){this.$emit("displayContentBelow","");const t=this.$wizard_steps.findIndex((t=>this.$route.name.includes(t)))-1;this.$router.push({name:`${this.$wizard_steps[t]}_${this.$store.getters["$_settings/mailer"]}`})},showPluginInstallFooterNotice(){let t=[];this.smart_contact_form&&!this.contact_form_already_installed&&t.push("WPForms");let e="";t.length>0&&(e=(0,l.__)("The following plugin will be installed for free:","wp-mail-smtp"),e=`"+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}},methods:{inputUpdate:function(t){if(this.disabled)return!1;if(this.has_error=!1,this.format||this.type&&"email"===this.type){const e=this.format?this.format:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;if(!e.test(t.target.value))return this.has_error=!0,this.$emit("error_detected",this.text_error),!1}},copyValue:function(){const t=this.$refs.input;t.select(),document.execCommand("copy"),this.show_copied=!0;let e=this;setTimeout((function(){e.show_copied=!1}),1e3)}}},Wt=Lt,Rt=(0,d.Z)(Wt,Bt,Tt,!1,null,null,null),Qt=Rt.exports,Nt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-input-checkbox",class:{"settings-input-checkbox-checked":t.value,"settings-input-checkbox-disabled":t.disabled}},[e("span",{staticClass:"settings-input-label-container"},[e("span",{staticClass:"label"},[t._v(t._s(t.label))]),t.tooltip?e("settings-info-tooltip",{attrs:{content:t.tooltip}}):t._e()],1),e("label",{staticClass:"settings-input-checkbox-container",attrs:{for:"wp-mail-smtp-settings-checkbox-"+t.name}},[e("input",{attrs:{id:"wp-mail-smtp-settings-checkbox-"+t.name,type:"checkbox",name:t.name,disabled:t.disabled},domProps:{checked:t.value},on:{input:function(e){return t.$emit("input",e.target.checked)}}}),e("span",{staticClass:"checkbox",class:{"checkbox-checked":t.value,"checkbox-disabled":t.disabled}},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"14",height:"14"}})],1),t.description?e("span",{staticClass:"input-label"},[t._v(t._s(t.description))]):t._e()])])},Ut=[],Gt={name:"SettingsInputCheckbox",components:{SettingsInfoTooltip:Ot},props:{label:String,name:String,value:Boolean,description:String,tooltip:String,disabled:Boolean}},Ht=Gt,Yt=(0,d.Z)(Ht,Nt,Ut,!1,null,null,null),Vt=Yt.exports,Kt={name:"WizardStepHelpImprove",components:{ContentHeader:h,TheWizardStepCounter:X,SettingsInputText:Qt,SettingsInputCheckbox:Vt},data(){return{text_header_title:(0,l.__)("Help Improve WP Mail SMTP + Smart Recommendations","wp-mail-smtp"),text_header_subtitle:(0,l.__)("Get helpful suggestions from WP Mail SMTP on how to optimize your email deliverability and grow your business.","wp-mail-smtp"),text_save:(0,l.__)("Save and Continue","wp-mail-smtp"),text_skip:(0,l.__)("Skip this Step","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),text_email_label:(0,l.__)("Your Email Address","wp-mail-smtp"),text_email_description:(0,l.__)("Your email is needed, so you can receive recommendations.","wp-mail-smtp"),text_usage_tracking_label:(0,l.__)("Help make WP Mail SMTP better for everyone","wp-mail-smtp"),text_usage_tracking_description:(0,l.__)("Yes, count me in","wp-mail-smtp"),text_usage_tracking_tooltip:(0,l.__)("By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test.","wp-mail-smtp"),is_pro:this.$wpms.is_pro,usage_tracking:!1}},computed:{...(0,_t.vn)("$_wizard",["current_user_email"])},methods:{handleSubmit(){this.$store.dispatch("$_app/start_loading");let t=[];if(this.current_user_email&&t.push(this.$store.dispatch("$_settings/subscribeToNewsletter",this.current_user_email)),this.usage_tracking){const e={value:{general:{"usage-tracking-enabled":!0}}};t.push(this.$store.dispatch("$_settings/updateSettings",e))}Promise.all(t).then((()=>{this.nextStep()})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},nextStep(){this.$next_step()},previousStep(){this.$previous_step()}}},qt=Kt,Jt=(0,d.Z)(qt,Mt,Et,!1,null,null,null),Xt=Jt.exports,jt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step wp-mail-smtp-setup-wizard-step-license"},[e("div",{staticClass:"wp-mail-smtp-setup-wizard-content-container"},[e("div",{staticClass:"wp-mail-smtp-license-header"},[e("the-wizard-step-counter"),e("content-header",{attrs:{title:t.text_header_title,subtitle:t.text_header_subtitle}})],1),t.is_pro?t._e():e("div",{staticClass:"upgrade-content"},[e("p",{staticClass:"medium-bold",domProps:{innerHTML:t._s(t.text_upgrade_paragraph)}}),e("div",{staticClass:"checked-item-list"},[e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_email_log))])],1),e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_complete_email_report))])],1),e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_instant_email_alert))])],1),e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_summary_report_email))])],1),e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_manage_notifications))])],1),e("span",{staticClass:"checked-item"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(7579),width:"16",height:"16"}}),t._v(" "),e("span",[t._v(t._s(t.text_network_settings))])],1)])]),t.verified?e("div",{staticClass:"verified-license"},[e("p",{domProps:{innerHTML:t._s(t.text_verified_license)}})]):e("div",{staticClass:"license-form",class:{"license-form-error":t.license_error}},[e("p",{domProps:{innerHTML:t._s(t.text_license_form)}}),e("div",{staticClass:"license-control"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.license,expression:"license"}],attrs:{name:"license",type:"password",placeholder:t.text_license_input_placeholder,"aria-label":t.text_aria_label_for_license_input},domProps:{value:t.license},on:{input:function(e){e.target.composing||(t.license=e.target.value)}}}),e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-success wp-mail-smtp-button-small",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.handleLicenseSubmit.apply(null,arguments)}}},[t._v(" "+t._s(t.text_license_button)+" ")])]),t.license_error?e("p",{staticClass:"error-message",domProps:{textContent:t._s(t.text_license_error)}}):t._e()])]),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-no-margin"}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.previousStep.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-left"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(9238),width:"16",height:"18"}}),t._v(t._s(t.text_previous_step)+" ")],1)]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer-buttons"},[t.verified?e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main",attrs:{type:"submit",name:"next_step"},on:{click:function(e){return e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_save)+" "),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"19"}})],1)]):e("button",{staticClass:"wp-mail-smtp-button",attrs:{type:"button",name:"skip_step"},domProps:{textContent:t._s(t.text_skip)},on:{click:function(e){return e.preventDefault(),t.nextStep.apply(null,arguments)}}})])])])},$t=[],te=s(8394),ee=s.n(te),se={name:"WizardStepLicense",components:{ContentHeader:h,TheWizardStepCounter:X},data(){return{text_header_title:(0,l.__)("Enter your WP Mail SMTP License Key","wp-mail-smtp"),text_header_subtitle:this.$wpms.is_pro?"":(0,l.gB)((0,l.__)("You're currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!","wp-mail-smtp"),'',"")+" 🙂",text_save:(0,l.__)("Continue","wp-mail-smtp"),text_skip:(0,l.__)("Skip this Step","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),text_upgrade_paragraph:(0,l.gB)((0,l.__)("To unlock selected features, %1$sUpgrade to Pro%2$s and enter your license key below.","wp-mail-smtp"),'',""),text_network_settings:(0,l.__)("Multisite Network Settings","wp-mail-smtp"),text_manage_notifications:(0,l.__)("Manage Default Notifications","wp-mail-smtp"),text_email_log:(0,l.__)("Detailed Email Logs","wp-mail-smtp"),text_summary_report_email:(0,l.__)("Enhanced Weekly Email Summary","wp-mail-smtp"),text_license_form_lite:(0,l.gB)((0,l.__)("Already purchased? Enter your license key below to connect with %1$sWP Mail SMTP Pro%2$s!","wp-mail-smtp"),"",""),text_license_form_pro:(0,l.__)("Enter your license key below to unlock plugin updates!","wp-mail-smtp"),text_license_button:this.$wpms.is_pro?(0,l.__)("Verify License Key","wp-mail-smtp"):(0,l.__)("Connect","wp-mail-smtp"),text_license_error:(0,l.__)("The License Key format is incorrect. Please enter a valid key and try again.","wp-mail-smtp"),text_verified_license:(0,l.__)("Your license was successfully verified! You are ready for the next step.","wp-mail-smtp"),text_email_log_desc:(0,l.__)("Keep records of every email that's sent out from your website.","wp-mail-smtp"),text_manage_notifications_desc:(0,l.__)("Control which email notifications your WordPress site sends.","wp-mail-smtp"),text_network_settings_desc:(0,l.__)("Save time with powerful WordPress Multisite controls.","wp-mail-smtp"),text_instant_email_alert:(0,l.__)("Instant Email Alerts","wp-mail-smtp"),text_instant_email_alert_desc:(0,l.__)("Get notifications via email, SMS, Slack, or webhook when emails fail to send.","wp-mail-smtp"),text_complete_email_report:(0,l.__)("Complete Email Reports","wp-mail-smtp"),text_complete_email_report_desc:(0,l.__)("See the delivery status, track opens and clicks, and create deliverability graphs.","wp-mail-smtp"),text_pro_badge:(0,l.__)("Pro badge","wp-mail-smtp"),text_aria_label_for_license_input:(0,l.__)("License key input","wp-mail-smtp"),text_license_input_placeholder:(0,l.__)("Paste your license key here","wp-mail-smtp"),pro_badge:s(330),is_pro:this.$wpms.is_pro,verified:!1,license:"",license_error:!1}},computed:{text_license_form:function(){return this.is_pro?this.text_license_form_pro:this.text_license_form_lite},...(0,at.Se)({selectedProFeatures:"$_settings/plugin_features"})},methods:{handleLicenseSubmit(){return this.license_error=!1,!(!this.is_pro&&0===this.license.length)&&(this.is_pro&&this.license.length<16?(this.license_error=!0,!1):(this.$store.dispatch("$_app/start_loading"),void(this.is_pro?this.$store.dispatch("$_settings/verifyLicense",this.license).then((t=>{t.success?(this.verified=!0,this.$swal({title:(0,l.__)("Successful Verification!","wp-mail-smtp"),html:t.data.message,width:450,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})):this.$swal({title:(0,l.__)("Verification Error!","wp-mail-smtp"),html:t.data,width:450,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})})).finally((()=>{this.$store.dispatch("$_app/stop_loading")})):this.$store.dispatch("$_settings/upgradePlugin",this.license).then((t=>{if(t.success&&ee()(t,"data.redirect_url"))return window.location=t.data.redirect_url;this.$store.dispatch("$_app/stop_loading"),this.$swal({title:t.success?(0,l.__)("Successful Upgrade!","wp-mail-smtp"):(0,l.__)("Upgrade Failed!","wp-mail-smtp"),html:t.data,width:450,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})})))))},handleSubmit(){this.nextStep()},nextStep(){this.$next_step()},previousStep(){let t=this.is_pro&&!this.$store.getters["$_settings/email_log_enabled"]?1:0;this.$previous_step(t)},prepareLongCheckbox(t,e){return``},prepareProFeaturesHtml(){let t="
",this.star_image_html+""+this.star_image_html+this.star_image_html+this.star_image_html+this.star_image_html)}`,width:650,showCloseButton:!0,allowEnterKey:!1,confirmButtonText:(0,l.__)("Rate on WordPress.org","wp-mail-smtp"),customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-feedback-good"}}).then((t=>{if(t.value){const t=window.open("https://wordpress.org/support/plugin/wp-mail-smtp/reviews/#new-post","_blank");t.focus()}}))},badFeedback(){this.$swal({title:(0,l.__)("What could we do to improve?","wp-mail-smtp"),html:`${(0,l.__)("We're sorry things didn't go smoothly for you, and want to keep improving. Please let us know any specific parts of this process that you think could be better. We really appreciate any details you're willing to share!","wp-mail-smtp")}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t`,width:650,showCloseButton:!0,allowEnterKey:!1,allowOutsideClick:!1,allowEscapeKey:!1,confirmButtonText:(0,l.__)("Submit Feedback","wp-mail-smtp"),customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-feedback-bad"},preConfirm:()=>[document.getElementById("feedback").value,document.getElementById("permission").checked]}).then((t=>{if(t.value){const e=t.value[0],s=t.value[1];this.$store.dispatch("$_wizard/sendFeedback",{feedback:e,permission:s})}}))},handleFeedback(){this.$swal({title:(0,l.__)("How was your WP Mail SMTP setup experience?","wp-mail-smtp"),text:(0,l.__)("Our goal is to make your SMTP setup as simple and straightforward as possible. We'd love to know how this process went for you!","wp-mail-smtp"),width:650,showCloseButton:!0,allowEnterKey:!1,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-feedback"},showCancelButton:!0}).then((t=>{t.value?this.goodFeedback():void 0!==t.dismiss&&"cancel"===t.dismiss&&this.badFeedback()}))},handleFinish(){return window.location=this.$wpms.exit_url},openUpgradePage:function(){const t=window.open(this.$wpms.upgrade_link,"_blank");t.focus()}}},Pe=Se,Me=(0,d.Z)(Pe,ce,de,!1,null,null,null),Ee=Me.exports,Be=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step wp-mail-smtp-setup-wizard-configuration-failure"},[e("div",{staticClass:"wp-mail-smtp-setup-wizard-content-container"},[e("div",{staticClass:"wp-mail-smtp-configuration-failure-header"},[e("the-wizard-step-counter"),e("content-header",{attrs:{title:t.text_header_title,subtitle:t.text_header_subtitle}})],1),e("div",{staticClass:"start-troubleshooting-arrow-container"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(1122),width:"112",height:"112"}})],1)]),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-no-margin"}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer"},[e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main",attrs:{type:"button",name:"start_troubleshooting"},domProps:{textContent:t._s(t.text_start_troubleshooting)},on:{click:function(e){return e.preventDefault(),t.handleTroubleshooting.apply(null,arguments)}}}),e("button",{staticClass:"wp-mail-smtp-button",attrs:{type:"button",name:"finish_setup"},domProps:{textContent:t._s(t.text_finish)},on:{click:function(e){return e.preventDefault(),t.handleFinish.apply(null,arguments)}}})])])},Te=[],Fe={name:"WizardStepConfigurationFailure",components:{ContentHeader:h,TheWizardStepCounter:X},data(){return{text_header_title:(0,l.__)("Whoops, looks like things aren’t configured properly.","wp-mail-smtp"),text_header_subtitle:(0,l.__)("We just tried to send a test email, but something prevented that from working. To see more details about the issue we detected, as well as our suggestions to fix it, please start troubleshooting.","wp-mail-smtp"),text_start_troubleshooting:(0,l.__)("Start Troubleshooting","wp-mail-smtp"),text_send_feedback:(0,l.__)("Send us Feedback","wp-mail-smtp"),text_finish:(0,l.__)("Finish Setup","wp-mail-smtp")}},methods:{handleTroubleshooting(){return window.location=`${this.$wpms.email_test_tab_url}&auto-start=1`},handleFinish(){return window.location=this.$wpms.exit_url}}},Ie=Fe,De=(0,d.Z)(Ie,Be,Te,!1,null,null,null),ze=De.exports,Ze=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-smtp"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"host",constant:"WPMS_SMTP_HOST",label:t.text_host_label,is_error:t.field_errors.includes("host")},on:{is_error_update:function(e){return t.removeFieldError("host")}},model:{value:t.host,callback:function(e){t.host=e},expression:"host"}}),e("settings-input-radio",{attrs:{name:"encryption",constant:"WPMS_SSL",label:t.text_encryption_label,options:t.encryptionOptions,description:t.text_encryption_description},on:{input:t.encryptionChanged},model:{value:t.encryption,callback:function(e){t.encryption=e},expression:"encryption"}}),e("settings-input-number",{attrs:{name:"port",constant:"WPMS_SMTP_PORT",label:t.text_port_label,is_error:t.field_errors.includes("port")},on:{is_error_update:function(e){return t.removeFieldError("port")}},model:{value:t.port,callback:function(e){t.port=e},expression:"port"}}),e("settings-input-switch",{directives:[{name:"show",rawName:"v-show",value:t.show_autotls,expression:"show_autotls"}],attrs:{name:"autotls",constant:"WPMS_SMTP_AUTOTLS",title:t.text_autotls_title,label:t.text_autotls_label,description:t.text_autotls_description},model:{value:t.autotls,callback:function(e){t.autotls=e},expression:"autotls"}}),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-switch",{attrs:{name:"auth",constant:"WPMS_SMTP_AUTH",title:t.text_auth_title,label:t.text_auth_label},model:{value:t.auth,callback:function(e){t.auth=e},expression:"auth"}}),e("settings-input-text",{directives:[{name:"show",rawName:"v-show",value:t.auth,expression:"auth"}],attrs:{name:"user",constant:"WPMS_SMTP_USER",label:t.text_user_label,is_error:t.field_errors.includes("user")},on:{is_error_update:function(e){return t.removeFieldError("user")}},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),e("settings-input-text",{directives:[{name:"show",rawName:"v-show",value:t.auth,expression:"auth"}],attrs:{name:"pass",constant:"WPMS_SMTP_PASS",type:"password",label:t.text_pass_label,is_error:t.field_errors.includes("pass")},on:{is_error_update:function(e){return t.removeFieldError("pass")}},model:{value:t.pass,callback:function(e){t.pass=e},expression:"pass"}}),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},Oe=[],Le=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-input-radio"},[t.label?e("span",{staticClass:"settings-input-label-container"},[e("span",{staticClass:"label"},[t._v(t._s(t.label))])]):t._e(),e("div",{staticClass:"settings-input-radio-container"},t._l(t.options,(function(s){return e("label",{key:s.value,class:t.labelClass(s.value),attrs:{for:"wp-mail-smtp-settings-radio-"+t.name+"["+s.value+"]"}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.selected,expression:"selected"}],attrs:{id:"wp-mail-smtp-settings-radio-"+t.name+"["+s.value+"]",type:"radio",name:t.name,autocomplete:"off",readonly:t.disabled,disabled:t.is_constant_set},domProps:{value:s.value,checked:t.isChecked(s.value),checked:t._q(t.selected,s.value)},on:{change:[function(e){t.selected=s.value},t.updateSetting]}}),e("span",{class:t.titleClass(s.value)}),e("span",{staticClass:"input-label"},[t._v(t._s(s.label))])])})),0),t.description?e("p",{staticClass:"description",domProps:{innerHTML:t._s(t.description)}}):t._e(),t.is_constant_set?e("p",{staticClass:"description description--constant",domProps:{innerHTML:t._s(t.text_constant)}}):t._e()])},We=[],Re={name:"SettingsInputRadio",props:{options:Array,label:String,name:String,value:String,description:String,constant:String,disabled:Boolean},data(){return{has_error:!1}},computed:{selected:{get(){return this.value},set(t){this.$emit("input",t)}},is_constant_set:function(){return this.$wpms.defined_constants.includes(this.constant)},text_constant:function(){return(0,l.__)("This setting is already configured with the WP Mail SMTP constant. To change it, please edit or remove the "+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}},methods:{updateSetting:function(){if(this.disabled)return!1},titleClass(t){let e="wp-mail-smtp-styled-radio";return this.isChecked(t)&&(e+=" wp-mail-smtp-styled-radio-checked"),this.is_constant_set&&(e+=" wp-mail-smtp-styled-radio-disabled"),e},labelClass(t){let e="";return this.isChecked(t)&&(e+=" wp-mail-smtp-styled-radio-label-checked"),this.is_constant_set&&(e+=" wp-mail-smtp-styled-radio-label-disabled"),e},isChecked(t){return t===this.selected}}},Qe=Re,Ne=(0,d.Z)(Qe,Le,We,!1,null,null,null),Ue=Ne.exports,Ge=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-input-number",class:{"settings-input-number-error":t.field_error}},[e("label",{staticClass:"settings-input-label-container",attrs:{for:t.id}},[t.label?e("span",{staticClass:"label"},[t._v(t._s(t.label))]):t._e(),t.tooltip?e("settings-info-tooltip",{attrs:{content:t.tooltip}}):t._e()],1),e("input",{directives:[{name:"model",rawName:"v-model",value:t.currentValue,expression:"currentValue"}],attrs:{id:t.id,type:"number",name:t.name,placeholder:t.placeholder,min:t.min,max:t.max,step:t.step,readonly:t.disabled,disabled:t.is_constant_set},domProps:{value:t.currentValue},on:{change:t.inputUpdate,input:function(e){e.target.composing||(t.currentValue=e.target.value)}}}),t.has_error?e("p",{staticClass:"error"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(4186),width:"16"}}),e("span",{domProps:{innerHTML:t._s(t.has_error)}})],1):t._e(),t.description?e("p",{staticClass:"description"},[t._v(" "+t._s(t.description)+" ")]):t._e(),t.is_constant_set?e("p",{staticClass:"description description--constant",domProps:{innerHTML:t._s(t.text_constant)}}):t._e()])},He=[],Ye={name:"SettingsInputNumber",components:{SettingsInfoTooltip:Ot},props:{name:String,value:[Number,String],label:String,description:String,constant:String,placeholder:String,type:{type:String,default:"text"},tooltip:String,default_value:String,min:Number,max:Number,disabled:Boolean,step:{type:Number,default:1},round:{type:Boolean,default:!1},is_error:Boolean},data(){return{has_error:!1,id:"input-"+this.name,text_error_value:(0,l.gB)((0,l.__)("Please enter a value between %1$s and %2$s","wp-mail-smtp"),""+this.min+"",""+this.max+""),text_error_round:(0,l.__)("Value has to be a round number","wp-mail-smtp")}},computed:{currentValue:{get(){return this.value},set(t){this.$emit("is_error_update",!1),this.$emit("input",parseInt(t,10))}},field_error:{get(){return this.is_error},set(t){this.$emit("is_error_update",t)}},is_constant_set:function(){return this.$wpms.defined_constants.includes(this.constant)},text_constant:function(){return(0,l.__)("This setting is already configured with the WP Mail SMTP constant. To change it, please edit or remove the "+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}},methods:{inputUpdate:function(t){if(this.disabled)return!1;this.has_error=!1;const e=parseFloat(t.target.value);return this.round&&e%1!==0?(this.has_error=this.text_error_round,!1):e>this.max||e"+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}},methods:{inputUpdate:function(){if(this.disabled)return!1},inputClicked(t){this.$emit("clicked",t)}}},$e=je,ts=(0,d.Z)($e,Je,Xe,!1,null,null,null),es=ts.exports,ss={name:"WizardStepConfigureMailerSmtp",components:{SettingsInputText:Qt,SettingsInputRadio:Ue,SettingsInputNumber:qe,SettingsInputSwitch:es},data(){return{mailer:"smtp",text_host_label:(0,l.__)("SMTP Host","wp-mail-smtp"),text_encryption_label:(0,l.__)("Encryption","wp-mail-smtp"),text_port_label:(0,l.__)("SMTP Port","wp-mail-smtp"),text_autotls_title:(0,l.__)("Auto TLS","wp-mail-smtp"),text_autotls_label:(0,l.__)("Enable Auto TLS","wp-mail-smtp"),text_autotls_description:(0,l.__)("By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled.","wp-mail-smtp"),text_auth_title:(0,l.__)("Authentication","wp-mail-smtp"),text_auth_label:(0,l.__)("Enable Authentication","wp-mail-smtp"),text_user_label:(0,l.__)("SMTP Username","wp-mail-smtp"),text_pass_label:(0,l.__)("SMTP Password","wp-mail-smtp"),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_encryption_description:(0,l.__)("For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS.","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),description:this.$wpms.mailer_options.smtp.description,encryptionOptions:[{label:(0,l.__)("None","wp-mail-smtp"),value:"none",default_port:25},{label:(0,l.__)("SSL","wp-mail-smtp"),value:"ssl",default_port:465},{label:(0,l.__)("TLS","wp-mail-smtp"),value:"tls",default_port:587}],show_autotls:!0,show_user_and_pass:!0,field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.smtp.host","settings.smtp.auth","settings.smtp.port","settings.smtp.encryption","settings.smtp.user","settings.smtp.pass","settings.smtp.autotls","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},watch:{encryption:function(t){this.show_autotls="tls"!==t}},methods:{getEncryptionDefaultPort(t){return this.encryptionOptions.find((e=>e.value===t)).default_port},encryptionChanged(t){this.port=this.getEncryptionDefaultPort(t)},areRequiredFieldsValid(){return""===this.host&&this.field_errors.push("host"),(""===this.port||isNaN(this.port))&&this.field_errors.push("port"),this.auth&&(""===this.user&&this.field_errors.push("user"),""===this.pass&&this.field_errors.push("pass")),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}},mounted(){"tls"===this.encryption&&(this.show_autotls=!1)}},is=ss,as=(0,d.Z)(is,Ze,Oe,!1,null,null,null),ns=as.exports,os=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-sendlayer"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-small wp-mail-smtp-button-secondary",attrs:{href:t.get_started_button_url,target:"_blank",rel:"noopener noreferrer"}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_get_started_button)),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"23"}})],1)]),e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SENDLAYER_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},rs=[],ls={name:"WizardStepConfigureMailerSendlayer",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"sendlayer",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get an API Key for SendLayer.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_get_started_button:(0,l.__)("Get Started with SendLayer","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up SendLayer","wp-mail-smtp"),description:this.$wpms.mailer_options.sendlayer.description.substr(0,this.$wpms.mailer_options.sendlayer.description.lastIndexOf("
")),get_started_button_url:this.$getUTMUrl("https://sendlayer.com/wp-mail-smtp/",{source:"wpmailsmtpplugin",medium:"WordPress",content:"Setup Wizard - Mailer Button"}),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-sendlayer-mailer-in-wp-mail-smtp/",{content:"Read how to set up SendLayer"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.sendlayer.api_key","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},ms=ls,ps=(0,d.Z)(ms,os,rs,!1,null,null,null),_s=ps.exports,cs=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-smtpcom"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-small wp-mail-smtp-button-secondary",attrs:{href:"https://wpmailsmtp.com/go/smtp/",target:"_blank",rel:"noopener noreferrer"}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_get_started_button)),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"23"}})],1)]),e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))]),e("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.disclosure_tooltip_data,expression:"disclosure_tooltip_data"}],staticClass:"mailer-offer-link-disclosure"},[t._v(t._s(t.text_disclosure))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SMTPCOM_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"channel",constant:"WPMS_SMTPCOM_CHANNEL",label:t.text_channel_label,description:t.text_channel_description,is_error:t.field_errors.includes("channel")},on:{is_error_update:function(e){return t.removeFieldError("channel")}},model:{value:t.channel,callback:function(e){t.channel=e},expression:"channel"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},ds=[],us={name:"WizardStepConfigureMailerSmtpCom",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"smtpcom",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_channel_label:(0,l.__)("Sender Name","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get an API Key for SMTP.com.","wp-mail-smtp"),'',""),text_channel_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get a Sender Name for SMTP.com.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_get_started_button:(0,l.__)("Get Started with SMTP.com","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up SMTP.com","wp-mail-smtp"),text_disclosure:(0,l.__)("Transparency and Disclosure","wp-mail-smtp"),disclosure_tooltip_data:{content:(0,l.__)("We believe in full transparency. The SMTP.com links above are tracking links as part of our partnership with SMTP (j2 Global). We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.","wp-mail-smtp"),autoHide:!0,trigger:"hover"},description:this.$wpms.mailer_options.smtpcom.description.substr(0,this.$wpms.mailer_options.smtpcom.description.lastIndexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-smtp-com-mailer-in-wp-mail-smtp",{content:"Read how to set up SMTP.com"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.smtpcom.api_key","settings.smtpcom.channel","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.channel&&this.field_errors.push("channel"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},hs=us,gs=(0,d.Z)(hs,cs,ds,!1,null,null,null),fs=gs.exports,ws=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-sendinblue"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-small wp-mail-smtp-button-secondary",attrs:{href:"https://wpmailsmtp.com/go/sendinblue/",target:"_blank",rel:"noopener noreferrer"}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_get_started_button)),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"23"}})],1)]),e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))]),e("span",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.disclosure_tooltip_data,expression:"disclosure_tooltip_data"}],staticClass:"mailer-offer-link-disclosure"},[t._v(t._s(t.text_disclosure))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SENDINBLUE_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"domain",constant:"WPMS_SENDINBLUE_DOMAIN",label:t.text_domain_label,description:t.text_domain_description},model:{value:t.domain,callback:function(e){t.domain=e},expression:"domain"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},As=[],bs={name:"WizardStepConfigureMailerSendinblue",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"sendinblue",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_domain_label:(0,l.__)("Sending Domain","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get an API Key for Brevo.","wp-mail-smtp"),'',""),text_domain_description:(0,l.gB)((0,l.__)("Please input the sending domain/subdomain you configured in your Brevo dashboard. More information can be found in our %1$sBrevo documentation%2$s","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_get_started_button:(0,l.__)("Get Started with Brevo","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up Brevo","wp-mail-smtp"),text_disclosure:(0,l.__)("Transparency and Disclosure","wp-mail-smtp"),disclosure_tooltip_data:{content:(0,l.__)("We believe in full transparency. The Brevo links above are tracking links as part of our partnership with Brevo. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.","wp-mail-smtp"),autoHide:!0,trigger:"hover"},description:this.$wpms.mailer_options.sendinblue.description.substr(0,this.$wpms.mailer_options.sendinblue.description.lastIndexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-wp-mail-smtp",{content:"Read how to set up Brevo"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.sendinblue.api_key","settings.sendinblue.domain","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},vs=bs,xs=(0,d.Z)(vs,ws,As,!1,null,null,null),ks=xs.exports,ys=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-mailgun"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_MAILGUN_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"domain",constant:"WPMS_MAILGUN_DOMAIN",label:t.text_domain_label,description:t.text_domain_description,is_error:t.field_errors.includes("domain")},on:{is_error_update:function(e){return t.removeFieldError("domain")}},model:{value:t.domain,callback:function(e){t.domain=e},expression:"domain"}}),e("settings-input-radio",{attrs:{name:"region",constant:"WPMS_MAILGUN_REGION",label:t.text_region_label,options:t.regionOptions,description:t.text_region_description},model:{value:t.region,callback:function(e){t.region=e},expression:"region"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},Cs=[],Ss={name:"WizardStepConfigureMailerMailgun",components:{SettingsInputText:Qt,SettingsInputRadio:Ue,SettingsInputSwitch:es},data(){return{mailer:"mailgun",text_api_key_label:(0,l.__)("Mailgun API Key","wp-mail-smtp"),text_domain_label:(0,l.__)("Domain Name","wp-mail-smtp"),text_region_label:(0,l.__)("Region","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)('%1$sFollow this link%2$s to get a Mailgun API Key. Generate a key in the "Mailgun API Keys" section.',"wp-mail-smtp"),'',""),text_domain_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get a Domain Name from Mailgun.","wp-mail-smtp"),'',""),text_region_description:(0,l.gB)((0,l.__)("Define which endpoint you want to use for sending messages. If you are operating under EU laws, you may be required to use EU region. %1$sMore information%2$s on Mailgun.com.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up Mailgun","wp-mail-smtp"),description:this.$wpms.mailer_options.mailgun.description.substr(0,this.$wpms.mailer_options.mailgun.description.indexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-mailgun-mailer-in-wp-mail-smtp/",{content:"Read how to set up Mailgun"}),regionOptions:[{label:(0,l.__)("US","wp-mail-smtp"),value:"US"},{label:(0,l.__)("EU","wp-mail-smtp"),value:"EU"}],field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.mailgun.api_key","settings.mailgun.domain","settings.mailgun.region","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.domain&&this.field_errors.push("domain"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},Ps=Ss,Ms=(0,d.Z)(Ps,ys,Cs,!1,null,null,null),Es=Ms.exports,Bs=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-sendgrid"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SENDGRID_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"domain",constant:"WPMS_SENDGRID_DOMAIN",label:t.text_domain_label,description:t.text_domain_description},model:{value:t.domain,callback:function(e){t.domain=e},expression:"domain"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},Ts=[],Fs={name:"WizardStepConfigureMailerSendgrid",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"sendgrid",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_domain_label:(0,l.__)("Sending Domain","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get an API Key for Sendgrid.","wp-mail-smtp"),'',"")+"
"+(0,l.gB)((0,l.__)("To send emails you will need only a %1$sMail Send%2$s access level for this API key.","wp-mail-smtp"),"",""),text_domain_description:(0,l.gB)((0,l.__)("Please input the sending domain/subdomain you configured in your SendGrid dashboard. More information can be found in our %1$sSendGrid documentation%2$s","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up SendGrid","wp-mail-smtp"),description:this.$wpms.mailer_options.sendgrid.description.substr(0,this.$wpms.mailer_options.sendgrid.description.indexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-wp-mail-smtp/",{content:"Read how to set up Sendgrid"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.sendgrid.api_key","settings.sendgrid.domain","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},Is=Fs,Ds=(0,d.Z)(Is,Bs,Ts,!1,null,null,null),zs=Ds.exports,Zs=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-smtp2go"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SMTP2GO_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},Os=[],Ls={name:"WizardStepConfigureMailerSMTP2GO",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"smtp2go",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_api_key_description:(0,l.gB)((0,l.__)("Generate an API key on the Sending → API Keys page in your %1$scontrol panel%2$s.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up SMTP2GO","wp-mail-smtp"),description:this.$wpms.mailer_options.smtp2go.description.substr(0,this.$wpms.mailer_options.smtp2go.description.lastIndexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-smtp2go-mailer-in-wp-mail-smtp/",{content:"Read how to set up SMTP2GO"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.smtp2go.api_key","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},Ws=Ls,Rs=(0,d.Z)(Ws,Zs,Os,!1,null,null,null),Qs=Rs.exports,Ns=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-sparkpost"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"api_key",type:"password",constant:"WPMS_SPARKPOST_API_KEY",label:t.text_api_key_label,description:t.text_api_key_description,is_error:t.field_errors.includes("api_key")},on:{is_error_update:function(e){return t.removeFieldError("api_key")}},model:{value:t.api_key,callback:function(e){t.api_key=e},expression:"api_key"}}),e("settings-input-radio",{attrs:{name:"region",constant:"WPMS_SPARKPOST_REGION",label:t.text_region_label,options:t.regionOptions,description:t.text_region_description},model:{value:t.region,callback:function(e){t.region=e},expression:"region"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},Us=[],Gs={name:"WizardStepConfigureMailerSparkPost",components:{SettingsInputText:Qt,SettingsInputRadio:Ue,SettingsInputSwitch:es},data(){return{mailer:"sparkpost",text_api_key_label:(0,l.__)("API Key","wp-mail-smtp"),text_region_label:(0,l.__)("Region","wp-mail-smtp"),text_region_description:(0,l.gB)((0,l.__)("Select your SparkPost account region. %1$sMore information%2$s on SparkPost.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up SparkPost","wp-mail-smtp"),description:this.$wpms.mailer_options.sparkpost.description.substr(0,this.$wpms.mailer_options.sparkpost.description.lastIndexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-sparkpost-mailer-in-wp-mail-smtp/",{content:"Read how to set up SparkPost"}),regionOptions:[{label:(0,l.__)("US","wp-mail-smtp"),value:"US"},{label:(0,l.__)("EU","wp-mail-smtp"),value:"EU"}],field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.sparkpost.api_key","settings.sparkpost.region","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"]),text_api_key_description:function(){let t="EU"===this.region?"eu.":"";return(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get an API Key for SparkPost.","wp-mail-smtp"),'',"")}},methods:{areRequiredFieldsValid(){return""===this.api_key&&this.field_errors.push("api_key"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},Hs=Gs,Ys=(0,d.Z)(Hs,Ns,Us,!1,null,null,null),Vs=Ys.exports,Ks=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-postmark"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link wp-mail-smtp-link-docs",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"server_api_token",type:"password",constant:"WPMS_POSTMARK_SERVER_API_TOKEN",label:t.text_server_api_token_label,description:t.text_server_api_token_description,is_error:t.field_errors.includes("server_api_token")},on:{is_error_update:function(e){return t.removeFieldError("server_api_token")}},model:{value:t.server_api_token,callback:function(e){t.server_api_token=e},expression:"server_api_token"}}),e("settings-input-text",{attrs:{name:"message_stream",constant:"WPMS_POSTMARK_MESSAGE_STREAM",label:t.text_message_stream_label,description:t.text_message_stream_description},model:{value:t.message_stream,callback:function(e){t.message_stream=e},expression:"message_stream"}}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)])},qs=[],Js={name:"WizardStepConfigureMailerPostmark",components:{SettingsInputText:Qt,SettingsInputSwitch:es},data(){return{mailer:"postmark",text_server_api_token_label:(0,l.__)("Server API Token","wp-mail-smtp"),text_message_stream_label:(0,l.__)("Message Stream ID","wp-mail-smtp"),text_server_api_token_description:(0,l.gB)((0,l.__)("%1$sFollow this link%2$s to get a Server API Token for Postmark.","wp-mail-smtp"),'',""),text_message_stream_description:(0,l.gB)((0,l.__)("Message Stream ID is optional. By default outbound (Default Transactional Stream) will be used. More information can be found in our %1$sPostmark documentation%2$s.","wp-mail-smtp"),'',""),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up Postmark","wp-mail-smtp"),description:this.$wpms.mailer_options.postmark.description.substr(0,this.$wpms.mailer_options.postmark.description.lastIndexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-postmark-mailer-in-wp-mail-smtp/",{content:"Read how to set up Postmark"}),field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.postmark.server_api_token","settings.postmark.message_stream","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"])},methods:{areRequiredFieldsValid(){return""===this.server_api_token&&this.field_errors.push("server_api_token"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}}},Xs=Js,js=(0,d.Z)(Xs,Ks,qs,!1,null,null,null),$s=js.exports,ti=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-amazonses"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("b",[e("a",{staticClass:"wp-mail-smtp-link",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])])]),t.is_ssl?e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-text",{attrs:{name:"client_id",constant:"WPMS_AMAZONSES_CLIENT_ID",label:t.text_client_id_label,is_error:t.field_errors.includes("client_id")},on:{is_error_update:function(e){return t.removeFieldError("client_id")}},model:{value:t.client_id,callback:function(e){t.client_id=e},expression:"client_id"}}),e("settings-input-text",{attrs:{name:"client_secret",type:"password",constant:"WPMS_AMAZONSES_CLIENT_SECRET",label:t.text_client_secret_label,is_error:t.field_errors.includes("client_secret")},on:{is_error_update:function(e){return t.removeFieldError("client_secret")}},model:{value:t.client_secret,callback:function(e){t.client_secret=e},expression:"client_secret"}}),e("settings-input-select",{attrs:{name:"region",constant:"WPMS_AMAZONSES_REGION",label:t.text_region_label,options:t.regionOptions,description:t.text_region_description,is_error:t.field_errors.includes("region")},on:{is_error_update:function(e){return t.removeFieldError("region")}},model:{value:t.region,callback:function(e){t.region=e},expression:"region"}}),t.is_api_auth_missing?t._e():e("div",[t.display_identities?e("div",[e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-amazon-s-e-s-identities",{attrs:{options:t.identities,label:t.text_identities_label,columns:t.identities_columns}})],1):t._e(),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)],1):e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("div",{staticClass:"wp-mail-smtp-notice wp-mail-smtp-notice--error"},[e("p",[e("span",[t._v(t._s(t.text_no_ssl))]),t._v(" "),e("a",{attrs:{href:"https://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/",target:"_blank",rel:"noopener"}},[t._v(t._s(t.text_no_ssl_link_text))]),t._v(".")]),e("p",[t._v(t._s(t.text_no_ssl_diff_mailer))])])])])},ei=[],si=s(1296),ii=s.n(si),ai=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-input-select",class:{"settings-input-select-error":t.field_error}},[e("label",{staticClass:"settings-input-label-container",attrs:{for:`wp-mail-smtp-settings-select-${t.name}`}},[e("span",{staticClass:"label"},[t._v(t._s(t.label))])]),e("div",{staticClass:"settings-input-select-container"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.selected,expression:"selected"}],attrs:{id:`wp-mail-smtp-settings-select-${t.name}`,name:t.name,readonly:t.disabled,disabled:t.is_constant_set},on:{change:function(e){var s=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){var e="_value"in t?t._value:t.value;return e}));t.selected=e.target.multiple?s:s[0]}}},t._l(t.options,(function(s){return e("option",{key:s.value,domProps:{value:s.value}},[t._v(" "+t._s(s.label)+" ")])})),0)]),t.description?e("p",{staticClass:"description",domProps:{innerHTML:t._s(t.description)}}):t._e(),t.is_constant_set?e("p",{staticClass:"description description--constant",domProps:{innerHTML:t._s(t.text_constant)}}):t._e()])},ni=[],oi={name:"SettingsInputSelect",props:{options:Array,label:String,name:String,value:String,description:String,constant:String,disabled:Boolean,is_error:Boolean},computed:{selected:{get(){return this.value},set(t){this.$emit("is_error_update",!1),this.$emit("input",t)}},field_error:{get(){return this.is_error},set(t){this.$emit("is_error_update",t)}},is_constant_set:function(){return this.$wpms.defined_constants.includes(this.constant)},text_constant:function(){return(0,l.__)("This setting is already configured with the WP Mail SMTP constant. To change it, please edit or remove the "+this.constant+"
constant in your wp-config.php
file.","wp-mail-smtp")}}},ri=oi,li=(0,d.Z)(ri,ai,ni,!1,null,null,null),mi=li.exports,pi=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-amazon-ses-identities"},[e("label",{staticClass:"settings-input-label-container"},[e("span",{staticClass:"label"},[t._v(t._s(t.label))]),t.tooltip?e("settings-info-tooltip",{attrs:{content:t.tooltip}}):t._e()],1),t.options?e("div",[t.options&&0!==t.options.length?e("p",{staticClass:"description"},[t._v(" "+t._s(t.text_identities_table_description)+" ")]):e("p",{staticClass:"description"},[e("strong",[t._v(t._s(t.text_no_registered_identities_title))]),t._v(" "+t._s(t.text_no_registered_identities_content)+" ")]),e("div",{staticClass:"ses-identities-container"},[t.options&&t.options.length>0?e("div",{staticClass:"ses-identities-table-container"},[e("table",[t.columns?e("tr",{staticClass:"ses-identity-columns"},t._l(t.filtered_columns,(function(s){return e("th",{key:s.key,class:`ses-identity-column ses-identity-column-${s.key}`},[t._v(" "+t._s(s.label)+" ")])})),0):t._e(),t._l(t.options,(function(s,i){return e("tr",{key:i},[e("td",[t._v(" "+t._s(s.value)+" ")]),e("td",[t._v(" "+t._s(s.type)+" ")]),e("td",[t._v(" "+t._s(s.status)+" ")])])})),t.show_identity_form?t._e():e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main wp-mail-smtp-button-small",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.addNewIdentity.apply(null,arguments)}}},[t._v(" "+t._s(t.text_add_new_identity)+" ")])],2)]):t._e(),t.show_identity_form||!t.options||0===t.options.length?e("div",{staticClass:"wp-mail-smtp-amazonses-identity-form"},[t.options&&0!==t.options.length?t._e():e("h3",[t._v(" "+t._s(t.text_verify_identity)+" ")]),e("div",{directives:[{name:"show",rawName:"v-show",value:1===t.verify_identity_step,expression:"verify_identity_step === 1"}],staticClass:"amazonses-identity-form-step"},[e("settings-input-radio",{attrs:{name:"identity_type",options:t.identity_type_options},model:{value:t.identity_type,callback:function(e){t.identity_type=e},expression:"identity_type"}}),e("p",{domProps:{textContent:t._s(t.verify_identity_text)}}),e("settings-input-text",{attrs:{name:"identity_value",placeholder:t.identity_value_placeholder},model:{value:t.identity_value,callback:function(e){t.identity_value=e},expression:"identity_value"}}),e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main wp-mail-smtp-button-small wp-mail-smtp-button-verify",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.verifyIdentity.apply(null,arguments)}}},[t.loading_verify_identity?e("spin-loader",{attrs:{color:"white"}}):e("span",[t._v(t._s(t.text_verify))])],1)],1),e("div",{directives:[{name:"show",rawName:"v-show",value:2===t.verify_identity_step&&"domain"===t.verify_identity_result.type,expression:"verify_identity_step === 2 && verify_identity_result.type === 'domain'"}],staticClass:"amazonses-identity-form-step amazonses-identity-form-step-domain"},[e("p",{domProps:{innerHTML:t._s(t.text_verify_identity_step2_domain_text)}}),e("div",{staticClass:"amazonses-dns-records"},[e("div",{staticClass:"amazonses-dns-records__row amazonses-dns-records__row--heading"},[e("div",{staticClass:"amazonses-dns-records__col amazonses-dns-records__col--heading"},[t._v(" "+t._s(t.text_name)+" ")]),e("div",{staticClass:"amazonses-dns-records__col amazonses-dns-records__col--heading"},[t._v(" "+t._s(t.text_value)+" ")])]),t._l(t.verify_identity_result.domain_dkim_dns_records,(function(t,s){return e("div",{key:t.value,staticClass:"amazonses-dns-records__row amazonses-dns-records__row--record"},[e("div",{staticClass:"amazonses-dns-records__col amazonses-dns-records__col--record"},[e("settings-input-text",{attrs:{name:`dns_record_name[${s}]`,value:t.name,readonly:"",copy:""}})],1),e("div",{staticClass:"amazonses-dns-records__col amazonses-dns-records__col--record"},[e("settings-input-text",{attrs:{name:`dns_record_value[${s}]`,value:t.value,readonly:"",copy:""}})],1)])}))],2)]),e("div",{directives:[{name:"show",rawName:"v-show",value:2===t.verify_identity_step&&"email"===t.verify_identity_result.type,expression:"verify_identity_step === 2 && verify_identity_result.type === 'email'"}],staticClass:"amazonses-identity-form-step"},[e("p",{staticClass:"ses-identities-email-success-notice"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(2411),width:"16",height:"16"}}),t._v(" "),e("span",{domProps:{innerHTML:t._s(t.text_verify_identity_step2_email_text)}})],1)])]):t._e()])]):e("spin-loader",{attrs:{size:"md"}})],1)},_i=[],ci={name:"SettingsAmazonSESIdentities",components:{SettingsInfoTooltip:Ot,SettingsInputRadio:Ue,SettingsInputText:Qt,SpinLoader:ve},props:{options:Array,columns:Array,label:String,tooltip:String},computed:{filtered_columns:function(){return this.columns.filter((t=>"action"!==t.key))},identity_value_placeholder:function(){return"domain"===this.identity_type?(0,l.__)("Please enter a domain","wp-mail-smtp"):(0,l.__)("Please enter a valid email address","wp-mail-smtp")},verify_identity_text:function(){return"domain"===this.identity_type?(0,l.__)("Enter the domain name to verify it on Amazon SES and generate the required DNS CNAME records.","wp-mail-smtp"):(0,l.__)("Enter a valid email address. A verification email will be sent to the email address you entered.","wp-mail-smtp")},text_verify_identity_step2_email_text:function(){return(0,l.gB)((0,l.__)("Please check the inbox of %s for a confirmation email.","wp-mail-smtp"),this.verify_identity_result.value)},text_verify:function(){return"domain"===this.identity_type?(0,l.__)("Verify Domain","wp-mail-smtp"):(0,l.__)("Verify Email","wp-mail-smtp")}},data(){return{text_no_registered_identities_title:(0,l.__)("No registered domains or emails.","wp-mail-smtp"),text_no_registered_identities_content:(0,l.__)("You will not be able to send emails until you verify at least one domain or email address for the selected Amazon SES Region.","wp-mail-smtp"),text_view_dns:(0,l.__)("View DNS","wp-mail-smtp"),text_resend:(0,l.__)("Resend","wp-mail-smtp"),text_identities_table_description:(0,l.__)("Here are the domains and email addresses that have been verified and can be used as the From Email.","wp-mail-smtp"),text_verify_identity:(0,l.__)("Verify SES Identity","wp-mail-smtp"),text_add_new_identity:(0,l.__)("Add New SES Identity","wp-mail-smtp"),text_name:(0,l.__)("Name","wp-mail-smtp"),text_value:(0,l.__)("Value","wp-mail-smtp"),text_verify_identity_step2_domain_text:(0,l.gB)((0,l.__)("Please add these CNAME records to your domain's DNS settings. For information on how to add CNAME DNS records, please refer to the %1$sAmazon SES documentation%2$s.","wp-mail-smtp"),'',""),show_identity_form:!1,identity_type:"domain",identity_type_options:[{label:(0,l.__)("Verify Domain","wp-mail-smtp"),value:"domain"},{label:(0,l.__)("Verify Email Address","wp-mail-smtp"),value:"email"}],identity_value:"",verify_identity_step:1,verify_identity_result:{},loading_verify_identity:!1}},methods:{verifyIdentity:function(){if(this.loading_verify_identity)return;this.loading_verify_identity=!0;const t=this;this.$store.dispatch("$_settings/amazonSESRegisterIdentity",{value:this.identity_value,type:this.identity_type}).then((function(e){t.loading_verify_identity=!1,e.success&&e.data&&(t.verify_identity_result=e.data,t.verify_identity_step=2)}))},addNewIdentity:function(){this.show_identity_form=!0}}},di=ci,ui=(0,d.Z)(di,pi,_i,!1,null,null,null),hi=ui.exports,gi={name:"WizardStepConfigureMailerAmazonSES",components:{SettingsInputText:Qt,SettingsInputSelect:mi,SettingsInputSwitch:es,SettingsAmazonSESIdentities:hi},data(){return{mailer:"amazonses",text_client_id_label:(0,l.__)("Access Key ID","wp-mail-smtp"),text_client_secret_label:(0,l.__)("Secret Access Key",{NODE_ENV:"production",VUE_APP_TEXTDOMAIN:"wp-mail-smtp",VUE_APP_PRODUCT_NAME:"WPMailSMTP",BASE_URL:""}.VUE_APP_TEXTclient_id),text_region_label:(0,l.__)("Region","wp-mail-smtp"),text_identities_label:(0,l.__)("SES Identities","wp-mail-smtp"),text_region_description:(0,l.__)("Please select the Amazon SES API region which is the closest to where your website is hosted. This can help to decrease network latency between your site and Amazon SES, which will speed up email sending.","wp-mail-smtp"),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up Amazon SES","wp-mail-smtp"),text_no_ssl:(0,l.__)("Amazon SES requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out ","wp-mail-smtp"),text_no_ssl_link_text:(0,l.__)("WPBeginner's tutorial on how to set up SSL","wp-mail-smtp"),text_no_ssl_diff_mailer:(0,l.__)("If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please go back and select a different mailer option.","wp-mail-smtp"),description:this.$wpms.mailer_options.amazonses.description.substr(0,this.$wpms.mailer_options.amazonses.description.indexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-amazon-ses-mailer-in-wp-mail-smtp/",{content:"Read how to set up Amazon SES"}),regionOptions:this.$wpms.mailer_options.amazonses.region_options||[],fetching_identities:!1,is_ssl:this.$wpms.is_ssl,field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.amazonses.client_id","settings.amazonses.client_secret","settings.amazonses.region","settings.mail.from_email","settings.mail.from_name","settings.mail.from_email_force","settings.mail.from_name_force"]),...(0,_t.vn)("$_settings",{identities_columns:"amazonses_identities.columns",identities:"amazonses_identities.data",display_identities:"amazonses_display_identities"}),...(0,_t.vn)("$_wizard",["blocked_step"]),is_api_auth_missing:function(){return!this.client_id||!this.client_secret||!this.region}},watch:{client_id:function(){this.getIdentitiesDelayed()},client_secret:function(){this.getIdentitiesDelayed()},region:function(){this.getIdentities()}},methods:{getIdentities:function(){this.display_identities&&(this.fetching_identities||this.client_id.length<20||this.client_secret.length<40||!this.region||(this.fetching_identities=!0,this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/getAmazonSESIdentities").then((()=>{this.fetching_identities=!1})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))))},getIdentitiesDelayed:ii()((function(){this.getIdentities()}),500),areRequiredFieldsValid(){return""===this.client_id&&this.field_errors.push("client_id"),""===this.client_secret&&this.field_errors.push("client_secret"),""===this.region&&this.field_errors.push("region"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}},mounted(){this.getIdentities(),this.$wpms.is_ssl||(this.blocked_step=!0)}},fi=gi,wi=(0,d.Z)(fi,ti,ei,!1,null,"05d90eba",null),Ai=wi.exports,bi=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-gmail"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("b",[e("a",{staticClass:"wp-mail-smtp-link",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-switch",{attrs:{classname:"wp-mail-smtp-gmail-one-click-setup-switch",name:"one_click_setup_enabled",title:t.text_one_click_setup_title,label:t.one_click_setup_enabled?t.text_enabled:t.text_disabled,description:t.text_one_click_setup_description,show_pro:!t.is_pro},on:{clicked:t.oneClickSetupOptionClicked},model:{value:t.one_click_setup_enabled,callback:function(e){t.one_click_setup_enabled=e},expression:"one_click_setup_enabled"}}),t.one_click_setup_enabled?[t.is_license_verification_required?[e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("div",{staticClass:"license-form",class:{"license-form-error":t.license_error}},[e("p",{domProps:{innerHTML:t._s(t.text_license_form)}}),e("div",{staticClass:"license-control"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.license,expression:"license"}],attrs:{name:"license",type:"password",placeholder:t.text_license_input_placeholder,"aria-label":t.text_aria_label_for_license_input},domProps:{value:t.license},on:{input:function(e){e.target.composing||(t.license=e.target.value)}}}),e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-success wp-mail-smtp-button-small",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.handleLicenseSubmit.apply(null,arguments)}}},[t._v(" "+t._s(t.text_license_button)+" ")])]),t.license_error?e("p",{staticClass:"error-message",domProps:{textContent:t._s(t.text_license_error)}}):t._e()]),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"})]:t._e(),e("settings-o-auth-connection",{attrs:{hide_description:!0,mailer:t.mailer,connected_email:t.one_click_setup_connected_email_address,is_auth_required:t.is_auth_required,disabled:t.is_license_verification_required}})]:[e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-text",{attrs:{name:"client_id",constant:"WPMS_GMAIL_CLIENT_ID",label:t.text_client_id_label,is_error:t.field_errors.includes("client_id")},on:{is_error_update:function(e){return t.removeFieldError("client_id")}},model:{value:t.client_id,callback:function(e){t.client_id=e},expression:"client_id"}}),e("settings-input-text",{attrs:{name:"client_secret",type:"password",constant:"WPMS_GMAIL_CLIENT_SECRET",label:t.text_client_secret_label,is_error:t.field_errors.includes("client_secret")},on:{is_error_update:function(e){return t.removeFieldError("client_secret")}},model:{value:t.client_secret,callback:function(e){t.client_secret=e},expression:"client_secret"}}),e("settings-input-text",{attrs:{value:t.redirect_uri,name:"redirect_uri",label:t.text_redirect_uri_label,copy:"",readonly:""}}),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-o-auth-connection",{attrs:{label:t.text_authorization_label,mailer:t.mailer,connected_email:t.connected_email_address,is_auth_required:t.is_auth_required,client_id:t.client_id,client_secret:t.client_secret}})],t.is_auth_required?t._e():e("div",{staticClass:"wp-mail-smtp-setup-wizard-form-general-settings"},[e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-big-margin"}),e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}}),e("settings-input-text",{attrs:{name:"from_email",type:"email",constant:"WPMS_MAIL_FROM",label:t.text_from_email_label,description:t.text_from_email_description,is_error:t.field_errors.includes("from_email")},on:{is_error_update:function(e){return t.removeFieldError("from_email")},error_detected:e=>t.errorDetected(e,"from_email")},model:{value:t.from_email,callback:function(e){t.from_email=e},expression:"from_email"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_email_force",constant:"WPMS_MAIL_FROM_FORCE",title:t.text_force_from_email_title,label:t.text_force_from_email_label},model:{value:t.from_email_force,callback:function(e){t.from_email_force=e},expression:"from_email_force"}})],1)],2)])},vi=[],xi=function(){var t=this,e=t._self._c;return e("div",{staticClass:"settings-oauth-connection"},[t.label?e("label",{staticClass:"settings-input-label-container"},[e("span",{staticClass:"label"},[t._v(t._s(t.label))]),t.tooltip?e("settings-info-tooltip",{attrs:{content:t.tooltip}}):t._e()],1):t._e(),t.is_auth_required?e("div",{staticClass:"add-authorization-container"},[t.hide_description?t._e():e("p",{staticClass:"description",domProps:{textContent:t._s(t.text_authorization_button_description)}}),"gmail"===t.mailer&&t.gmail_one_click_setup_enabled?e("button",{staticClass:"wp-mail-smtp-google-sign-in-btn",attrs:{type:"button",disabled:!t.are_client_details_ready||t.disabled},on:{click:function(e){return e.preventDefault(),t.authorize.apply(null,arguments)}}},[e("span",{staticClass:"wp-mail-smtp-google-sign-in-btn__icon"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(214),width:"46",height:"46"}})],1),e("span",{staticClass:"wp-mail-smtp-google-sign-in-btn__text"},[t._v(" "+t._s(t.text_google_authorization_button)+" ")])]):e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main wp-mail-smtp-button-small",attrs:{type:"button",disabled:!t.are_client_details_ready||t.disabled},on:{click:function(e){return e.preventDefault(),t.authorize.apply(null,arguments)}}},[t._v(" "+t._s(t.text_authorization_button)+" ")])]):e("div",{staticClass:"remove-authorization-container"},[t.connected_email?e("p",{staticClass:"description connected-as"},[e("span",{domProps:{innerHTML:t._s(t.text_connected_as_with_email)}}),t._v(" "),e("inline-svg",{staticClass:"icon",attrs:{src:s(2546),width:"16",height:"16"}})],1):t._e(),"gmail"===t.mailer?e("p",{staticClass:"description",domProps:{innerHTML:t._s(t.text_remove_authorization_button_description_google)}}):t._e(),e("p",{staticClass:"description",domProps:{innerHTML:t._s(t.text_remove_authorization_button_description)}}),e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-red wp-mail-smtp-button-small",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),t.removeAuthorization.apply(null,arguments)}}},[t._v(" "+t._s(t.text_remove_authorization_button)+" ")])])])},ki=[],yi={name:"SettingsOAuthConnection",components:{SettingsInfoTooltip:Ot},props:{label:String,hide_description:Boolean,mailer:String,connected_email:String,is_auth_required:Boolean,client_id:String,client_secret:String,tooltip:String,disabled:Boolean},data(){return{text_allow_button:(0,l.__)("Connect to %s","wp-mail-smtp"),text_google_authorization_button:(0,l.__)("Sign in with Google","wp-mail-smtp"),text_authorization_button_description_general:(0,l.__)("Before continuing, you'll need to allow this plugin to send emails using your %s account.","wp-mail-smtp"),text_remove_authorization_button:(0,l.__)("Remove OAuth Connection","wp-mail-smtp"),text_remove_authorization_button_description_google:(0,l.gB)((0,l.__)("If you want to use a different From Email address you can setup a Google email alias. %1$sFollow these instructions%2$s, then select the alias in the From Email section below.","wp-mail-smtp"),'',""),text_remove_authorization_button_desc_template:(0,l.__)("Removing this OAuth connection will give you the ability to redo the OAuth connection or connect to different %s account.","wp-mail-smtp"),text_connected_as:(0,l.__)("Connected as","wp-mail-smtp")}},computed:{...(0,at.Se)({gmail_one_click_setup_enabled:"$_settings/gmail_one_click_setup_enabled"}),are_client_details_ready:function(){return!("gmail"!==this.mailer||!this.gmail_one_click_setup_enabled)||!!this.client_id&&!!this.client_secret},mailer_name:function(){let t="Google";return"outlook"===this.mailer?t="Microsoft Outlook":"zoho"===this.mailer&&(t="Zoho Mail"),t},text_authorization_button:function(){return(0,l.gB)(this.text_allow_button,this.mailer_name)},text_authorization_button_description:function(){return(0,l.gB)(this.text_authorization_button_description_general,this.mailer_name)},text_remove_authorization_button_description:function(){return(0,l.gB)(this.text_remove_authorization_button_desc_template,this.mailer_name)},text_connected_as_with_email:function(){return`${this.text_connected_as} ${this.connected_email}`}},methods:{authorize:function(){this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/getAuthUrl",this.mailer).then((function(t){t.success&&t.data.oauth_url&&(window.location.href=t.data.oauth_url)})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},removeAuthorization:function(){this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/removeAuth",this.mailer).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},removeUrlParam:function(t,e,s){e.delete(s),t.search=e.toString(),window.history.replaceState({},document.title,t.toString())},catchAuthNotice:function(){const t=new URL(window.location.href),e=new URLSearchParams(t.search);let s="",i="",a=!1;switch(e.has("success")?(s=e.get("success"),a=!0,this.removeUrlParam(t,e,"success")):e.has("error")&&(s=e.get("error"),this.removeUrlParam(t,e,"error")),s){case"oauth_invalid_state":i=(0,l.__)("There was an error while processing the authentication request. The state key is invalid. Please try again.","wp-mail-smtp");break;case"google_no_code_scope":case"google_access_denied":case"zoho_access_denied":i=(0,l.__)("There was an error while processing the authentication request. Please try again.","wp-mail-smtp");break;case"google_no_clients":case"zoho_no_clients":case"microsoft_unsuccessful_oauth":case"google_unsuccessful_oauth":i=(0,l.__)("There was an error while processing the authentication request. Please recheck your Client ID and Client Secret and try again.","wp-mail-smtp");break;case"google_one_click_setup_unsuccessful_oauth":i=(0,l.__)("There was an error while processing the authentication request.","wp-mail-smtp");break;case"google_invalid_nonce":case"microsoft_invalid_nonce":case"zoho_invalid_nonce":i=(0,l.__)("There was an error while processing the authentication request. The nonce is invalid. Please try again.","wp-mail-smtp");break;case"microsoft_no_code":case"zoho_no_code":i=(0,l.__)("There was an error while processing the authentication request. The authorization code is missing. Please try again.","wp-mail-smtp");break;case"zoho_unsuccessful_oauth":i=(0,l.__)("There was an error while processing the authentication request. Please recheck your Region, Client ID and Client Secret and try again.","wp-mail-smtp");break;case"google_site_linked":i=(0,l.__)("You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail.","wp-mail-smtp");break;case"google_one_click_setup_site_linked":i=(0,l.__)("You have successfully connected your site with your Gmail account. Now you can start sending emails through Gmail.","wp-mail-smtp");break;case"microsoft_site_linked":i=(0,l.__)("You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.","wp-mail-smtp");break;case"zoho_site_linked":i=(0,l.__)("You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail.","wp-mail-smtp");break}i.length>0&&this.$swal({title:a?(0,l.__)("Successful Authorization","wp-mail-smtp"):(0,l.__)("Authorization Error!","wp-mail-smtp"),text:i,width:550,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})}},mounted(){this.catchAuthNotice()}},Ci=yi,Si=(0,d.Z)(Ci,xi,ki,!1,null,null,null),Pi=Si.exports,Mi={name:"WizardStepConfigureMailerGmail",components:{SettingsInputText:Qt,SettingsInputSwitch:es,SettingsOAuthConnection:Pi},data(){return{mailer:"gmail",text_one_click_setup_title:(0,l.__)("One-Click Setup","wp-mail-smtp"),text_one_click_setup_description:(0,l.__)("Provides a quick and easy way to connect to Google that doesn't require creating your own app.","wp-mail-smtp"),text_client_id_label:(0,l.__)("Client ID","wp-mail-smtp"),text_client_secret_label:(0,l.__)("Client Secret","wp-mail-smtp"),text_redirect_uri_label:(0,l.__)("Authorized Redirect URI","wp-mail-smtp"),text_authorization_label:(0,l.__)("Authorization","wp-mail-smtp"),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_from_email_label:(0,l.__)("From Email","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_force_from_email_title:(0,l.__)("Force From Email","wp-mail-smtp"),text_force_from_email_label:(0,l.__)("If enabled, the From Email setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_from_email_description:(0,l.__)("The email address that emails are sent from. You can use only the connected email address or its alias.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up the Gmail mailer","wp-mail-smtp"),text_enabled:(0,l.__)("Enabled","wp-mail-smtp"),text_disabled:(0,l.__)("Disabled","wp-mail-smtp"),text_one_click_setup_upgrade_title:(0,l.__)("One-Click Setup for Google Mailer
is a Pro Feature","wp-mail-smtp"),text_one_click_setup_upgrade_content:(0,l.__)("We're sorry, One-Click Setup for Google Mailer is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features.","wp-mail-smtp"),description:this.$wpms.mailer_options.gmail.description.substr(0,this.$wpms.mailer_options.gmail.description.indexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/#create-app",{content:"Read how to set up the Gmail mailer"}),redirect_uri:this.$wpms.mailer_options.gmail.redirect_uri,field_errors:[],license_verified:!1,license:"",license_error:!1,text_license_form:(0,l.__)("One-Click Setup for Google Mailer requires an active license. Verify your license to proceed with this One-Click Setup, please.","wp-mail-smtp"),text_license_input_placeholder:(0,l.__)("Paste your license key here","wp-mail-smtp"),text_aria_label_for_license_input:(0,l.__)("License key input","wp-mail-smtp"),text_license_button:(0,l.__)("Verify License Key","wp-mail-smtp"),text_license_error:(0,l.__)("The License Key format is incorrect. Please enter a valid key and try again.","wp-mail-smtp"),is_pro:this.$wpms.is_pro,one_click_setup_enabled:!1}},computed:{...(0,_t.vn)("$_settings",["settings.gmail.client_id","settings.gmail.client_secret","settings.gmail.access_token","settings.gmail.refresh_token","settings.gmail.one_click_setup_credentials","settings.mail.from_email","settings.mail.from_email_force","settings.mail.from_name","settings.mail.from_name_force"]),...(0,_t.vn)("$_wizard",["blocked_step"]),...(0,at.Se)({is_valid_license:"$_settings/is_valid_license",one_click_setup_enabled_setting:"$_settings/gmail_one_click_setup_enabled",connected_email_address:"$_settings/gmail_email",one_click_setup_connected_email_address:"$_settings/gmail_one_click_setup_email"}),is_auth_required:function(){return this.one_click_setup_enabled?!this.one_click_setup_credentials?.key||!this.one_click_setup_credentials?.token:!this.access_token||!this.refresh_token},is_license_verification_required:function(){return!this.license_verified&&!this.is_valid_license&&this.is_auth_required}},watch:{is_auth_required:function(t){this.blocked_step=t},one_click_setup_enabled:function(t){this.is_pro&&this.$store.dispatch("$_settings/setGmailUseOneClickSetup",t)},one_click_setup_enabled_setting:function(t){this.is_pro&&(this.one_click_setup_enabled=t)}},methods:{areRequiredFieldsValid(){let t=!0;return""===this.from_email&&(t=!1,this.field_errors.push("from_email")),this.one_click_setup_enabled||(""===this.client_id&&(t=!1,this.field_errors.push("client_id")),""===this.client_secret&&(t=!1,this.field_errors.push("client_secret"))),t},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},handleLicenseSubmit(){if(this.license_error=!1,this.license.length<16)return this.license_error=!0,!1;this.$store.dispatch("$_app/start_loading"),this.$store.dispatch("$_settings/verifyLicense",this.license).then((t=>{t.success?(this.license_verified=!0,this.$swal({title:(0,l.__)("Successful Verification!","wp-mail-smtp"),html:(0,l.__)("Now you can continue mailer configuration.","wp-mail-smtp"),width:450,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})):this.$swal({title:(0,l.__)("Verification Error!","wp-mail-smtp"),html:t.data,width:450,showCloseButton:!0,customClass:{container:"wp-mail-smtp-swal wp-mail-smtp-swal-alert"}})})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},oneClickSetupOptionClicked(t){this.is_pro||(t.preventDefault(),this.oneClickSetupUpgradePopup())},oneClickSetupUpgradePopup(){var t=/(\?)/.test(this.$wpms.education.upgrade_url)?"&":"?",e=this.$wpms.education.upgrade_url+t+"utm_content="+encodeURIComponent("gmail-one-click-setup");this.$swal({title:this.text_one_click_setup_upgrade_title,html:`
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-outlook-mailer-in-wp-mail-smtp/#microsoft-setup",{content:"Read how to set up Microsoft Outlook / 365"}),redirect_uri:this.$wpms.mailer_options.outlook.redirect_uri,field_errors:[],is_ssl:this.$wpms.is_ssl}},computed:{...(0,_t.vn)("$_settings",["settings.outlook.client_id","settings.outlook.client_secret","settings.outlook.access_token","settings.outlook.refresh_token","settings.mail.from_email","settings.mail.from_email_force"]),...(0,_t.vn)("$_wizard",["blocked_step"]),...(0,at.Se)({connected_email_address:"$_settings/outlook_email"}),is_auth_required:function(){return!this.access_token||!this.refresh_token}},watch:{is_auth_required:function(t){this.blocked_step=t}},methods:{areRequiredFieldsValid(){return""===this.client_id&&this.field_errors.push("client_id"),""===this.client_secret&&this.field_errors.push("client_secret"),""===this.from_email&&this.field_errors.push("from_email"),0===this.field_errors.length},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))},errorDetected(t,e){this.field_errors.push(e)}},mounted(){this.is_auth_required&&(this.blocked_step=!0),this.$wpms.is_ssl||(this.blocked_step=!0)}},zi=Di,Zi=(0,d.Z)(zi,Fi,Ii,!1,null,"1230186a",null),Oi=Zi.exports,Li=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-configure-mailer-settings wp-mail-smtp-setup-wizard-step-configure-mailer-settings-zoho"},[e("p",{staticClass:"mailer-description",domProps:{innerHTML:t._s(t.description)}}),e("p",{staticClass:"mailer-description mailer-description-links"},[e("a",{staticClass:"wp-mail-smtp-link",attrs:{href:t.documentation_link_url,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.text_documentation_link))])]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-form"},[e("settings-input-select",{attrs:{name:"domain",constant:"WPMS_ZOHO_DOMAIN",label:t.text_domain_label,options:t.domain_options,description:t.text_domain_description,is_error:t.field_errors.includes("domain")},on:{is_error_update:function(e){return t.removeFieldError("domain")}},model:{value:t.domain,callback:function(e){t.domain=e},expression:"domain"}}),e("settings-input-text",{attrs:{name:"client_id",constant:"WPMS_ZOHO_CLIENT_ID",label:t.text_client_id_label,is_error:t.field_errors.includes("client_id")},on:{is_error_update:function(e){return t.removeFieldError("client_id")}},model:{value:t.client_id,callback:function(e){t.client_id=e},expression:"client_id"}}),e("settings-input-text",{attrs:{name:"client_secret",constant:"WPMS_ZOHO_CLIENT_SECRET",type:"password",label:t.text_client_secret_label,is_error:t.field_errors.includes("client_secret")},on:{is_error_update:function(e){return t.removeFieldError("client_secret")}},model:{value:t.client_secret,callback:function(e){t.client_secret=e},expression:"client_secret"}}),e("settings-input-text",{attrs:{value:t.redirect_uri,name:"redirect_uri",label:t.text_redirect_uri_label,copy:"",readonly:""}}),e("settings-o-auth-connection",{attrs:{label:t.text_authorization_label,mailer:t.mailer,connected_email:t.connected_email_address,is_auth_required:t.is_auth_required,client_id:t.client_id,client_secret:t.client_secret}}),t.is_auth_required?t._e():e("div",[e("settings-input-text",{attrs:{name:"from_name",constant:"WPMS_MAIL_FROM_NAME",label:t.text_from_name_label,description:t.text_from_name_description},model:{value:t.from_name,callback:function(e){t.from_name=e},expression:"from_name"}}),e("settings-input-switch",{attrs:{classname:"sub_setting",name:"from_name_force",constant:"WPMS_MAIL_FROM_NAME_FORCE",title:t.text_force_from_name_title,label:t.text_force_from_name_label},model:{value:t.from_name_force,callback:function(e){t.from_name_force=e},expression:"from_name_force"}})],1)],1)])},Wi=[],Ri={name:"WizardStepConfigureMailerZoho",components:{SettingsInputText:Qt,SettingsInputSwitch:es,SettingsInputSelect:mi,SettingsOAuthConnection:Pi},data(){return{mailer:"zoho",text_domain_label:(0,l.__)("Region","wp-mail-smtp"),text_domain_description:(0,l.__)("The data center location used by your Zoho account.","wp-mail-smtp"),text_client_id_label:(0,l.__)("Client ID","wp-mail-smtp"),text_client_secret_label:(0,l.__)("Client Secret","wp-mail-smtp"),text_redirect_uri_label:(0,l.__)("Redirect URI","wp-mail-smtp"),text_authorization_label:(0,l.__)("Authorization","wp-mail-smtp"),text_from_name_label:(0,l.__)("From Name","wp-mail-smtp"),text_force_from_name_title:(0,l.__)("Force From Name","wp-mail-smtp"),text_force_from_name_label:(0,l.__)("If enabled, the From Name setting above will be used for all emails, ignoring values set by other plugins.","wp-mail-smtp"),text_from_name_description:(0,l.__)("The name that emails are sent from.","wp-mail-smtp"),text_documentation_link:(0,l.__)("Read how to set up Zoho Mail","wp-mail-smtp"),description:this.$wpms.mailer_options.zoho.description.substr(0,this.$wpms.mailer_options.zoho.description.indexOf("
")),documentation_link_url:this.$getUTMUrl("https://wpmailsmtp.com/docs/how-to-set-up-the-zoho-mailer-in-wp-mail-smtp/#zoho-account",{content:"Read how to set up Zoho Mail"}),redirect_uri:this.$wpms.mailer_options.zoho.redirect_uri,domain_options:this.$wpms.mailer_options.zoho.domain_options,field_errors:[]}},computed:{...(0,_t.vn)("$_settings",["settings.zoho.domain","settings.zoho.client_id","settings.zoho.client_secret","settings.zoho.access_token","settings.zoho.refresh_token","settings.mail.from_name","settings.mail.from_name_force"]),...(0,_t.vn)("$_wizard",["blocked_step"]),...(0,at.Se)({connected_email_address:"$_settings/zoho_email"}),is_auth_required:function(){return!this.access_token||!this.refresh_token}},watch:{is_auth_required:function(t){this.blocked_step=t}},methods:{areRequiredFieldsValid(){let t=!0;return""===this.domain&&(t=!1,this.field_errors.push("domain")),""===this.client_id&&(t=!1,this.field_errors.push("client_id")),""===this.client_secret&&(t=!1,this.field_errors.push("client_secret")),t},removeFieldError(t){this.field_errors=this.field_errors.filter((e=>e!==t))}},mounted(){this.is_auth_required&&(this.blocked_step=!0)}},Qi=Ri,Ni=(0,d.Z)(Qi,Li,Wi,!1,null,null,null),Ui=Ni.exports,Gi=function(){var t=this,e=t._self._c;return e("div",{staticClass:"wp-mail-smtp-setup-wizard-step wp-mail-smtp-setup-wizard-step-configure-email-logs"},[e("div",{staticClass:"wp-mail-smtp-setup-wizard-content-container"},[e("div",{staticClass:"wp-mail-smtp-configure-email-logs-header"},[e("the-wizard-step-counter"),e("content-header",{attrs:{title:t.text_header_title,subtitle:t.text_header_subtitle}})],1),e("div",{staticClass:"wp-mail-smtp-plugin-configure-email-logs"},[e("settings-input-long-checkbox",{attrs:{name:"log_email_content",label:t.text_log_email_content,description:t.text_log_email_content_desc},model:{value:t.log_email_content,callback:function(e){t.log_email_content=e},expression:"log_email_content"}}),e("settings-input-long-checkbox",{attrs:{name:"save_attachments",label:t.text_save_attachments,description:t.text_save_attachments_desc},model:{value:t.save_attachments,callback:function(e){t.save_attachments=e},expression:"save_attachments"}}),e("settings-input-long-checkbox",{attrs:{name:"open_email_tracking",label:t.text_open_email_tracking,description:t.text_open_email_tracking_desc},model:{value:t.open_email_tracking,callback:function(e){t.open_email_tracking=e},expression:"open_email_tracking"}}),e("settings-input-long-checkbox",{attrs:{name:"click_link_tracking",label:t.text_click_link_tracking,description:t.text_click_link_tracking_desc},model:{value:t.click_link_tracking,callback:function(e){t.click_link_tracking=e},expression:"click_link_tracking"}})],1)]),e("div",{staticClass:"wp-mail-smtp-separator wp-mail-smtp-separator-no-margin"}),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.previousStep.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-left"},[e("inline-svg",{staticClass:"icon",attrs:{src:s(9238),width:"16",height:"18"}}),t._v(t._s(t.text_previous_step)+" ")],1)]),e("div",{staticClass:"wp-mail-smtp-setup-wizard-step-footer-buttons"},[e("button",{staticClass:"wp-mail-smtp-button wp-mail-smtp-button-main",attrs:{type:"submit",name:"next_step"},on:{click:function(e){return e.preventDefault(),t.handleSubmit.apply(null,arguments)}}},[e("span",{staticClass:"text-with-arrow text-with-arrow-right"},[t._v(" "+t._s(t.text_save)+" "),e("inline-svg",{staticClass:"icon",attrs:{src:s(7706),width:"16",height:"19"}})],1)])])])])},Hi=[],Yi={name:"WizardStepConfigureEmailLogs",components:{ContentHeader:h,TheWizardStepCounter:X,SettingsInputLongCheckbox:kt},data(){return{text_header_title:(0,l.__)("Configure Email Logs","wp-mail-smtp"),text_header_subtitle:(0,l.__)("Enable these powerful logging features for more control of your WordPress emails.","wp-mail-smtp"),text_save:(0,l.__)("Save and Continue","wp-mail-smtp"),text_previous_step:(0,l.__)("Previous Step","wp-mail-smtp"),text_log_email_content:(0,l.__)("Store the content for all sent emails","wp-mail-smtp"),text_log_email_content_desc:(0,l.__)("This option must be enabled if you'd like to be able to resend emails. Please be aware that all email content will be stored in your WordPress database. This may include sensitive data, passwords, and personal details.","wp-mail-smtp"),text_save_attachments:(0,l.__)("Save file attachments sent from WordPress","wp-mail-smtp"),text_save_attachments_desc:(0,l.__)("All file attachments sent from your site will be saved to the WordPress Uploads folder. Please note that this may reduce available disk space on your server.","wp-mail-smtp"),text_open_email_tracking:(0,l.__)("Track when an email is opened","wp-mail-smtp"),text_open_email_tracking_desc:(0,l.__)("See which emails were opened by the recipients. Email open tracking works with emails that are sent in HTML format.","wp-mail-smtp"),text_click_link_tracking:(0,l.__)("Track when a link in an email is clicked","wp-mail-smtp"),text_click_link_tracking_desc:(0,l.__)("See which links were clicked in emails sent from your WordPress site. Click tracking works with emails that are sent in HTML format.","wp-mail-smtp")}},computed:{...(0,_t.vn)("$_settings",["settings.logs.log_email_content","settings.logs.save_attachments","settings.logs.open_email_tracking","settings.logs.click_link_tracking"])},methods:{handleSubmit(){this.$store.dispatch("$_app/start_loading");let t={value:{logs:{log_email_content:this.log_email_content,save_attachments:this.save_attachments,open_email_tracking:this.open_email_tracking,click_link_tracking:this.click_link_tracking}}};this.$store.dispatch("$_settings/updateSettings",t).then((t=>{t.success?this.nextStep():this.$wpms_error_toast({})})).finally((()=>{this.$store.dispatch("$_app/stop_loading")}))},previousStep(){this.$previous_step()},nextStep(){this.$next_step()}}},Vi=Yi,Ki=(0,d.Z)(Vi,Gi,Hi,!1,null,null,null),qi=Ki.exports,Ji=new n.ZP({routes:[{path:"*",redirect:"/"},{path:"/",name:"welcome",component:C},{path:"/step",name:"step",component:O,children:[{path:"import",name:"import_step",component:et},{path:"choose_mailer",name:"choose_mailer_step",component:lt},{path:"configure_mailer",name:"configure_mailer_step",component:ht,children:[{path:"smtp",name:"configure_mailer_step_smtp",component:ns},{path:"sendlayer",name:"configure_mailer_step_sendlayer",component:_s},{path:"smtpcom",name:"configure_mailer_step_smtpcom",component:fs},{path:"sendinblue",name:"configure_mailer_step_sendinblue",component:ks},{path:"mailgun",name:"configure_mailer_step_mailgun",component:Es},{path:"sendgrid",name:"configure_mailer_step_sendgrid",component:zs},{path:"smtp2go",name:"configure_mailer_step_smtp2go",component:Qs},{path:"sparkpost",name:"configure_mailer_step_sparkpost",component:Vs},{path:"postmark",name:"configure_mailer_step_postmark",component:$s},{path:"amazoneses",name:"configure_mailer_step_amazonses",component:Ai},{path:"gmail",name:"configure_mailer_step_gmail",component:Ti},{path:"outlook",name:"configure_mailer_step_outlook",component:Oi},{path:"zoho",name:"configure_mailer_step_zoho",component:Ui}]},{path:"plugin_features",name:"plugin_features_step",component:Pt},{path:"configure_email_logs",name:"configure_email_logs_step",component:qi},{path:"help_improve",name:"help_improve_step",component:Xt},{path:"license",name:"license_step",component:ne},{path:"check_configuration",name:"check_configuration_step",component:_e},{path:"successful_configuration",name:"check_configuration_step_success",component:Ee},{path:"failed_configuration",name:"check_configuration_step_failure",component:ze}]}],scrollBehavior(){return{x:0,y:0}}}),Xi={name:"SetupWizardApp",router:Ji,computed:{...(0,at.Se)({blocked:"$_app/blocked",loading:"$_app/loading"})}},ji=Xi,$i=(0,d.Z)(ji,i,a,!1,null,null,null),ta=$i.exports,ea=s(144),sa=s(9516);const ia={install(t){window.wp_mail_smtp_vue&&(t.prototype.$wpms=window.wp_mail_smtp_vue),t.prototype.$isPro=aa,t.prototype.$addQueryArg=na,t.prototype.$getUTMUrl=oa}};function aa(){return window.wp_mail_smtp_vue.is_pro}function na(t,e,s){var i=new RegExp("([?&])"+e+"=.*?(&|#|$)","i");if(t.match(i))return t.replace(i,"$1"+e+"="+s+"$2");var a="";-1!==t.indexOf("#")&&(a=t.replace(/.*#/,"#"),t=t.replace(/#.*/,""));var n=-1!==t.indexOf("?")?"&":"?";return t+n+e+"="+s+a}function oa(t,e){e={source:"WordPress",medium:"setup-wizard",campaign:aa()?"plugin":"liteplugin",content:"general",...e};for(const[s,i]of Object.entries(e))t=na(t,`utm_${s}`,encodeURIComponent(i));return t}var ra=ia;const la={install(t){t.prototype.$next_step=function(e=0){const s=t.prototype.$wizard_steps.findIndex((t=>this.$route.name.includes(t)))+1+e;this.$router.push({name:t.prototype.$wizard_steps[s]})},t.prototype.$previous_step=function(e=0){let s="welcome";const i=t.prototype.$wizard_steps.findIndex((t=>this.$route.name.includes(t)))-1-e;i>=0&&(s=t.prototype.$wizard_steps[i]),this.$router.push({name:s})},t.prototype.$swal&&(t.prototype.$wpms_success_toast=function(e){let{animation:s=!1,toast:i=!0,position:a="top-end",showConfirmButton:n=!1,icon:o="success",timer:r=3e3,showCloseButton:m=!0,title:p=(0,l.__)("Settings Updated","wp-mail-smtp"),showCancelButton:_=!1,confirmButtonText:c="",cancelButtonText:d="",text:u=""}=e;return t.prototype.$swal({animation:s,toast:i,position:a,showConfirmButton:n,icon:o,showCloseButton:m,title:p,timer:r,showCancelButton:_,confirmButtonText:c,cancelButtonText:d,text:u})},t.prototype.$wpms_error_toast=function(e){let{animation:s=!1,toast:i=!0,position:a="top-end",showConfirmButton:n=!1,icon:o="error",showCloseButton:r=!0,title:m=(0,l.__)("Could Not Save Changes","wp-mail-smtp"),text:p=""}=e;return t.prototype.$swal({animation:s,toast:i,position:a,showConfirmButton:n,icon:o,showCloseButton:r,title:m,text:p,onOpen:function(){t.prototype.$swal.hideLoading()}})},t.prototype.$wpms_error_modal=function(e){let{position:s="center",width:i=650,showConfirmButton:a=!0,confirmButtonText:n=(0,l.__)("Return to Mailer Settings","wp-mail-smtp"),customClass:o={container:"wp-mail-smtp-swal wp-mail-smtp-swal-error"},showCloseButton:r=!0,title:m=(0,l.__)("Whoops, we found an issue!","wp-mail-smtp"),subtitle:p=(0,l.__)("It looks like something went wrong...","wp-mail-smtp"),detailedError:_=""}=e;return t.prototype.$swal({position:s,width:i,showConfirmButton:a,confirmButtonText:n,customClass:o,showCloseButton:r,title:m,html:`\n\t\t\t\t\t\t${(0,l.__)("Error Message:","wp-mail-smtp")}
\n\t\t\t\t\t\t\t' . $error . '
' ),
+ WP::ADMIN_NOTICE_ERROR
+ );
+ break;
+
+ case 'google_no_code_scope':
+ WP::add_admin_notice(
+ esc_html__( 'There was an error while processing the authentication request. Please try again.', 'wp-mail-smtp' ),
+ WP::ADMIN_NOTICE_ERROR
+ );
+ break;
+
+ case 'google_no_clients':
+ WP::add_admin_notice(
+ esc_html__( 'There was an error while processing the authentication request. Please make sure that you have Client ID and Client Secret both valid and saved.', 'wp-mail-smtp' ),
+ WP::ADMIN_NOTICE_ERROR
+ );
+ break;
+
+ case 'google_unsuccessful_oauth':
+ WP::add_admin_notice(
+ esc_html__( 'There was an error while processing the authentication request.', 'wp-mail-smtp' ),
+ WP::ADMIN_NOTICE_ERROR
+ );
+ break;
+ }
+
+ switch ( $success ) {
+ case 'google_site_linked':
+ WP::add_admin_notice(
+ esc_html__( 'You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail.', 'wp-mail-smtp' ),
+ WP::ADMIN_NOTICE_SUCCESS
+ );
+ break;
+ }
+ }
+
+ /**
+ * Display notice instructing the user to complete plugin setup.
+ *
+ * @since 1.3.0
+ */
+ public function display_setup_notice() {
+
+ // Bail if we're not on a plugin page.
+ if ( ! $this->is_admin_page( 'general' ) ) {
+ return;
+ }
+
+ $default_options = wp_json_encode( Options::get_defaults() );
+ $current_options = wp_json_encode( Options::init()->get_all() );
+
+ // Check if the current settings are the same as the default settings.
+ if ( $current_options !== $default_options ) {
+ return;
+ }
+
+ // Display notice informing user further action is needed.
+ WP::add_admin_notice(
+ sprintf(
+ wp_kses( /* translators: %s - Mailer anchor link. */
+ __( 'Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, please select and configure your Mailer.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ ],
+ 'strong' => [],
+ ]
+ ),
+ wp_mail_smtp()->get_admin()->get_admin_page_url( self::SLUG . '#wp-mail-smtp-setting-row-mailer' )
+ ),
+ WP::ADMIN_NOTICE_INFO
+ );
+ }
+
+ /**
+ * Display notice explaining removal of "Email Test" tab.
+ *
+ * @since 3.9.0
+ */
+ public function display_email_test_tab_removal_notice() {
+
+ // Bail if we aren't on a "Settings" page.
+ if ( ! $this->is_admin_page( self::SLUG ) ) {
+ return;
+ }
+
+ // Bail if the notice has been dismissed.
+ if ( metadata_exists( 'user', get_current_user_id(), 'wp_mail_smtp_email_test_tab_removal_notice_dismissed' ) ) {
+ return;
+ }
+
+ /*
+ * Don't display the notice if the user installed a plugin with a new "Email Test"
+ * location (starting from v3.9.0) and is not aware of the old one. Also, don't display
+ * the notice if the `wp_mail_smtp_initial_version` option is not set (it can happen if
+ * the plugin was activated network wise in the multisite installation and plugin
+ * activation hook was not performed on the subsite level).
+ */
+ if ( version_compare( get_option( 'wp_mail_smtp_initial_version', '3.9.0' ), '3.9.0', '>=' ) ) {
+ return;
+ }
+
+ WP::add_admin_notice(
+ sprintf(
+ wp_kses(
+ /* translators: %s: Tools page URL. */
+ __( 'The Email Test tab was moved to WP Mail SMTP > Tools.', 'wp-mail-smtp' ),
+ [ 'a' => [ 'href' => [] ] ]
+ ),
+ $this->get_admin_page_url( self::SLUG . '-tools' )
+ ),
+ implode( ' ', [ WP::ADMIN_NOTICE_INFO, 'email_test_tab_removal_notice' ] )
+ );
+ }
+
+ /**
+ * Get menu item position.
+ *
+ * @since 2.8.0
+ *
+ * @return int
+ */
+ public function get_menu_item_position() {
+
+ /**
+ * Filters menu item position.
+ *
+ * @since 2.8.0
+ *
+ * @param int $position Position number.
+ */
+ return apply_filters( 'wp_mail_smtp_admin_area_get_menu_item_position', 98 );
+ }
+
+ /**
+ * Add admin area menu item.
+ *
+ * @since 1.0.0
+ * @since 1.5.0 Moved the menu to the top level. Added several more pages.
+ */
+ public function add_admin_options_page() {
+
+ // Options pages access capability.
+ $access_capability = wp_mail_smtp()->get_capability_manage_options();
+
+ $this->hook = add_menu_page(
+ esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
+ esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
+ $access_capability,
+ self::SLUG,
+ [ $this, 'display' ],
+ 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM5ZWEzYTgiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDQzIDM0Ij48cGF0aCBkPSJNMC4wMDcsMy41ODVWMjAuNDIxcTAsMy41ODYsMy43NTEsMy41ODVMMjAsMjRWMTlIMzBWMTQuMDE0bDAuOTkxLTFMMzQsMTNWMy41ODVRMzQsMCwzMC4yNDksMEgzLjc1OFEwLjAwNywwLC4wMDcsMy41ODVoMFpNMy41MjQsNi4xNTdhMS40OSwxLjQ5LDAsMCwxLS41MDgtMC45MzUsMS41ODEsMS41ODEsMCwwLDEsLjI3NC0xLjIwOCwxLjQ0OSwxLjQ0OSwwLDAsMSwxLjA5NC0uNjYzLDEuNzU2LDEuNzU2LDAsMCwxLDEuMjUuMzEybDExLjQwOSw3LjcxNkwyOC4zNzQsMy42NjNhMS45NiwxLjk2LDAsMCwxLDEuMjg5LS4zMTIsMS41NDYsMS41NDYsMCwwLDEsMS4wOTQuNjYzLDEuNCwxLjQsMCwwLDEsLjI3MywxLjIwOCwxLjY3LDEuNjcsMCwwLDEtLjU0Ny45MzVMMTcuMDQzLDE3LjIyNVoiLz48cGF0aCBkPSJNMjIsMjhIMzJsLTAuMDA5LDQuNjI0YTEuMTI2LDEuMTI2LDAsMCwwLDEuOTIyLjhsOC4yNS04LjIzNmExLjEyNiwxLjEyNiwwLDAsMCwwLTEuNTk0bC04LjI1LTguMjQxYTEuMTI2LDEuMTI2LDAsMCwwLTEuOTIyLjh2NC44NjZMMjIsMjF2N1oiLz48L3N2Zz4=',
+ $this->get_menu_item_position()
+ );
+
+ add_submenu_page(
+ self::SLUG,
+ $this->get_current_tab_title() . ' ‹ ' . \esc_html__( 'Settings', 'wp-mail-smtp' ),
+ esc_html__( 'Settings', 'wp-mail-smtp' ),
+ $access_capability,
+ self::SLUG,
+ [ $this, 'display' ]
+ );
+
+ add_submenu_page(
+ self::SLUG,
+ esc_html__( 'Email Log', 'wp-mail-smtp' ),
+ esc_html__( 'Email Log', 'wp-mail-smtp' ),
+ $this->get_logs_access_capability(),
+ self::SLUG . '-logs',
+ [ $this, 'display' ]
+ );
+
+ foreach ( $this->get_parent_pages() as $page ) {
+ add_submenu_page(
+ self::SLUG,
+ esc_html( $page->get_title() ),
+ esc_html( $page->get_label() ),
+ $access_capability,
+ self::SLUG . '-' . $page->get_slug(),
+ [ $this, 'display' ]
+ );
+ }
+
+ if ( ! wp_mail_smtp()->is_pro() ) {
+ add_submenu_page(
+ self::SLUG,
+ esc_html__( 'Upgrade to Pro', 'wp-mail-smtp' ),
+ esc_html__( 'Upgrade to Pro', 'wp-mail-smtp' ),
+ $access_capability,
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_upgrade_link( [ 'medium' => 'admin-menu', 'content' => 'Upgrade to Pro' ] ) )
+ );
+ }
+ }
+
+ /**
+ * Add network admin settings page for the WPMS product education.
+ *
+ * @since 2.5.0
+ */
+ public function add_wpms_network_wide_setting_product_education_page() {
+
+ add_menu_page(
+ esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
+ esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
+ wp_mail_smtp()->get_capability_manage_options(),
+ self::SLUG,
+ [ $this, 'display_network_product_education_page' ],
+ 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM5ZWEzYTgiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDQzIDM0Ij48cGF0aCBkPSJNMC4wMDcsMy41ODVWMjAuNDIxcTAsMy41ODYsMy43NTEsMy41ODVMMjAsMjRWMTlIMzBWMTQuMDE0bDAuOTkxLTFMMzQsMTNWMy41ODVRMzQsMCwzMC4yNDksMEgzLjc1OFEwLjAwNywwLC4wMDcsMy41ODVoMFpNMy41MjQsNi4xNTdhMS40OSwxLjQ5LDAsMCwxLS41MDgtMC45MzUsMS41ODEsMS41ODEsMCwwLDEsLjI3NC0xLjIwOCwxLjQ0OSwxLjQ0OSwwLDAsMSwxLjA5NC0uNjYzLDEuNzU2LDEuNzU2LDAsMCwxLDEuMjUuMzEybDExLjQwOSw3LjcxNkwyOC4zNzQsMy42NjNhMS45NiwxLjk2LDAsMCwxLDEuMjg5LS4zMTIsMS41NDYsMS41NDYsMCwwLDEsMS4wOTQuNjYzLDEuNCwxLjQsMCwwLDEsLjI3MywxLjIwOCwxLjY3LDEuNjcsMCwwLDEtLjU0Ny45MzVMMTcuMDQzLDE3LjIyNVoiLz48cGF0aCBkPSJNMjIsMjhIMzJsLTAuMDA5LDQuNjI0YTEuMTI2LDEuMTI2LDAsMCwwLDEuOTIyLjhsOC4yNS04LjIzNmExLjEyNiwxLjEyNiwwLDAsMCwwLTEuNTk0bC04LjI1LTguMjQxYTEuMTI2LDEuMTI2LDAsMCwwLTEuOTIyLjh2NC44NjZMMjIsMjF2N1oiLz48L3N2Zz4=',
+ $this->get_menu_item_position()
+ );
+ }
+
+ /**
+ * HTML output for the network admin settings page (for the WPMS product education).
+ *
+ * @since 2.5.0
+ */
+ public function display_network_product_education_page() {
+
+ // Skip if not on multisite and not on network admin site.
+ if ( ! is_multisite() || ! is_network_admin() ) {
+ return;
+ }
+
+ ?>
+
+
applied at checkout.', 'wp-mail-smtp' ),
+ [
+ 'strong' => [],
+ 'span' => [],
+ 'br' => [],
+ ]
+ ),
+ '$50'
+ )
+ . '
is a Pro Feature', 'wp-mail-smtp' ), [ 'br' => [] ] ),
+ 'one_click_setup_upgrade_content' => esc_html__( 'We\'re sorry, One-Click Setup for Google Mailer is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features.', 'wp-mail-smtp' ),
+ ],
+ 'rate_limit' => [
+ 'upgrade_title' => wp_kses( __( 'Email Rate Limiting
is a Pro Feature', 'wp-mail-smtp' ), [ 'br' => [] ] ),
+ 'upgrade_content' => esc_html__( 'We\'re sorry, Email Rate Limiting is not available on your plan. Please upgrade to the Pro plan to unlock all these awesome features.', 'wp-mail-smtp' ),
+ ],
+ ],
+ 'all_mailers_supports' => wp_mail_smtp()->get_providers()->get_supports_all(),
+ 'nonce' => wp_create_nonce( 'wp-mail-smtp-admin' ),
+ 'is_network_admin' => is_network_admin(),
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
+ 'lang_code' => sanitize_key( WP::get_language_code() ),
+ ];
+
+ /**
+ * Filters plugin script data.
+ *
+ * @since 2.9.0
+ *
+ * @param array $script_data Data.
+ * @param string $hook Current hook.
+ */
+ $script_data = apply_filters( 'wp_mail_smtp_admin_area_enqueue_assets_scripts_data', $script_data, $hook );
+
+ wp_localize_script( 'wp-mail-smtp-admin', 'wp_mail_smtp', $script_data );
+
+ /*
+ * jQuery Confirm library v3.3.4.
+ */
+ wp_enqueue_style(
+ 'wp-mail-smtp-admin-jconfirm',
+ wp_mail_smtp()->assets_url . '/css/vendor/jquery-confirm.min.css',
+ [ 'wp-mail-smtp-admin' ],
+ '3.3.4'
+ );
+ wp_enqueue_script(
+ 'wp-mail-smtp-admin-jconfirm',
+ wp_mail_smtp()->assets_url . '/js/vendor/jquery-confirm.min.js',
+ [ 'wp-mail-smtp-admin' ],
+ '3.3.4',
+ false
+ );
+
+ /*
+ * Logs page.
+ */
+ if ( $this->is_admin_page( 'logs' ) ) {
+ wp_enqueue_style(
+ 'wp-mail-smtp-admin-logs',
+ apply_filters( 'wp_mail_smtp_admin_enqueue_assets_logs_css', '' ),
+ [ 'wp-mail-smtp-admin' ],
+ WPMS_PLUGIN_VER
+ );
+
+ wp_enqueue_script(
+ 'wp-mail-smtp-admin-logs',
+ apply_filters( 'wp_mail_smtp_admin_enqueue_assets_logs_js', '' ),
+ [ 'wp-mail-smtp-admin' ],
+ WPMS_PLUGIN_VER,
+ false
+ );
+ }
+
+ /*
+ * About page.
+ */
+ if ( $this->is_admin_page( 'about' ) ) {
+
+ wp_enqueue_style(
+ 'wp-mail-smtp-admin-about',
+ wp_mail_smtp()->assets_url . '/css/smtp-about.min.css',
+ [ 'wp-mail-smtp-admin' ],
+ WPMS_PLUGIN_VER
+ );
+
+ wp_enqueue_script(
+ 'wp-mail-smtp-admin-about',
+ wp_mail_smtp()->assets_url . '/js/smtp-about' . WP::asset_min() . '.js',
+ [ 'wp-mail-smtp-admin' ],
+ '0.7.2',
+ false
+ );
+
+ $settings = [
+ 'ajax_url' => admin_url( 'admin-ajax.php' ),
+ 'nonce' => wp_create_nonce( 'wp-mail-smtp-about' ),
+ // Strings.
+ 'plugin_activate' => esc_html__( 'Activate', 'wp-mail-smtp' ),
+ 'plugin_activated' => esc_html__( 'Activated', 'wp-mail-smtp' ),
+ 'plugin_active' => esc_html__( 'Active', 'wp-mail-smtp' ),
+ 'plugin_inactive' => esc_html__( 'Inactive', 'wp-mail-smtp' ),
+ 'plugin_processing' => esc_html__( 'Processing...', 'wp-mail-smtp' ),
+ 'plugin_visit' => esc_html__( 'Visit Site', 'wp-mail-smtp' ),
+ 'plugin_install_error' => esc_html__( 'Could not install a plugin. Please download from WordPress.org and install manually.', 'wp-mail-smtp' ),
+ 'plugin_install_activate_btn' => esc_html__( 'Install and Activate', 'wp-mail-smtp' ),
+ 'plugin_activate_btn' => esc_html__( 'Activate', 'wp-mail-smtp' ),
+ 'plugin_download_btn' => esc_html__( 'Download', 'wp-mail-smtp' ),
+ ];
+
+ wp_localize_script(
+ 'wp-mail-smtp-admin-about',
+ 'wp_mail_smtp_about',
+ $settings
+ );
+
+ wp_enqueue_script(
+ 'wp-mail-smtp-admin-about-matchheight',
+ wp_mail_smtp()->assets_url . '/js/vendor/jquery.matchHeight.min.js',
+ [ 'wp-mail-smtp-admin' ],
+ '0.7.2',
+ false
+ );
+ }
+
+ /**
+ * Fires after enqueue plugin assets.
+ *
+ * @since 1.5.0
+ *
+ * @param string $hook Current hook.
+ */
+ do_action( 'wp_mail_smtp_admin_area_enqueue_assets', $hook );
+ }
+
+ /**
+ * Outputs the plugin admin header.
+ *
+ * @since 1.0.0
+ */
+ public function display_admin_header() {
+
+ // Bail if we're not on a plugin page.
+ if ( ! $this->is_admin_page() ) {
+ return;
+ }
+
+ do_action( 'wp_mail_smtp_admin_header_before' );
+ ?>
+
+
+
+ get_current_tab_title() ); ?>
+
+
+
+
+ display_current_tab_content(); ?>
+
+
+
+
+
+ get_total_emails_sent();
+
+ $output_data = [
+ 'all' => [
+ 'type' => 'all',
+ 'icon' => wp_mail_smtp()->assets_url . '/images/dash-widget/wp/total.svg',
+ /* translators: %d number of total emails sent. */
+ 'title' => esc_html( sprintf( esc_html__( '%d total', 'wp-mail-smtp' ), $total_sent ) ),
+ ],
+ 'delivered' => [
+ 'type' => 'delivered',
+ 'icon' => wp_mail_smtp()->assets_url . '/images/dash-widget/wp/delivered.svg',
+ /* translators: %s fixed string of 'N/A'. */
+ 'title' => esc_html( sprintf( esc_html__( 'Confirmed %s', 'wp-mail-smtp' ), 'N/A' ) ),
+ ],
+ 'sent' => [
+ 'type' => 'sent',
+ 'icon' => wp_mail_smtp()->assets_url . '/images/dash-widget/wp/sent.svg',
+ /* translators: %s fixed string of 'N/A'. */
+ 'title' => esc_html( sprintf( esc_html__( 'Unconfirmed %s', 'wp-mail-smtp' ), 'N/A' ) ),
+ ],
+ 'unsent' => [
+ 'type' => 'unsent',
+ 'icon' => wp_mail_smtp()->assets_url . '/images/dash-widget/wp/unsent.svg',
+ /* translators: %s fixed string of 'N/A'. */
+ 'title' => esc_html( sprintf( esc_html__( 'Failed %s', 'wp-mail-smtp' ), 'N/A' ) ),
+ ],
+ ];
+
+ if ( Helpers::mailer_without_send_confirmation() ) {
+
+ // Skip the 'unconfirmed sent' section.
+ unset( $output_data['sent'] );
+
+ // Change the 'confirmed sent' section into a general 'sent' section.
+ $output_data['delivered']['title'] = esc_html( /* translators: %s fixed string of 'N/A'. */
+ sprintf( esc_html__( 'Sent %s', 'wp-mail-smtp' ), 'N/A' )
+ );
+ }
+
+ return $output_data;
+ }
+
+ /**
+ * Get/set a widget meta.
+ *
+ * @since 2.9.0
+ *
+ * @param string $action Possible value: 'get' or 'set'.
+ * @param string $meta Meta name.
+ * @param int $value Value to set.
+ *
+ * @return mixed
+ */
+ protected function widget_meta( $action, $meta, $value = 0 ) {
+
+ $allowed_actions = [ 'get', 'set' ];
+
+ if ( ! in_array( $action, $allowed_actions, true ) ) {
+ return false;
+ }
+
+ if ( $action === 'get' ) {
+ return $this->get_widget_meta( $meta );
+ }
+
+ $meta_key = $this->get_widget_meta_key( $meta );
+ $value = sanitize_key( $value );
+
+ if ( 'set' === $action && ! empty( $value ) ) {
+ return update_user_meta( get_current_user_id(), $meta_key, $value );
+ }
+
+ if ( 'set' === $action && empty( $value ) ) {
+ return delete_user_meta( get_current_user_id(), $meta_key );
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the widget meta value.
+ *
+ * @since 3.9.0
+ *
+ * @param string $meta Meta name.
+ *
+ * @return mixed
+ */
+ private function get_widget_meta( $meta ) {
+
+ $defaults = [
+ 'hide_graph' => 0,
+ 'hide_summary_report_email_block' => 0,
+ 'hide_email_alerts_banner' => 0,
+ ];
+
+ $meta_value = get_user_meta( get_current_user_id(), $this->get_widget_meta_key( $meta ), true );
+
+ if ( ! empty( $meta_value ) ) {
+ return $meta_value;
+ }
+
+ if ( isset( $defaults[ $meta ] ) ) {
+ return $defaults[ $meta ];
+ }
+
+ return null;
+ }
+
+ /**
+ * Retrieve the meta key.
+ *
+ * @since 3.9.0
+ *
+ * @param string $meta Meta name.
+ *
+ * @return string
+ */
+ private function get_widget_meta_key( $meta ) {
+
+ return 'wp_mail_smtp_' . static::SLUG . '_' . $meta;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/DebugEvents.php b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/DebugEvents.php
new file mode 100644
index 000000000..f70332e8d
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/DebugEvents.php
@@ -0,0 +1,438 @@
+is_const_defined( 'debug_events', 'retention_period' ) ) {
+ add_action( 'admin_init', [ $this, 'detect_debug_events_retention_period_constant_change' ] );
+ }
+ }
+
+ /**
+ * Detect debug events retention period constant change.
+ *
+ * @since 3.6.0
+ */
+ public function detect_debug_events_retention_period_constant_change() {
+
+ if ( ! WP::in_wp_admin() ) {
+ return;
+ }
+
+ if ( Options::init()->is_const_changed( 'debug_events', 'retention_period' ) ) {
+ ( new DebugEventsCleanupTask() )->cancel();
+ }
+ }
+
+ /**
+ * Cancel previous debug events cleanup task if retention period option was changed.
+ *
+ * @since 3.6.0
+ *
+ * @param array $options Currently processed options passed to a filter hook.
+ *
+ * @return array
+ */
+ public function maybe_cancel_debug_events_cleanup_task( $options ) {
+
+ if ( isset( $options['debug_events']['retention_period'] ) ) {
+ // If this option has changed, cancel the recurring cleanup task and init again.
+ if ( Options::init()->is_option_changed( $options['debug_events']['retention_period'], 'debug_events', 'retention_period' ) ) {
+ ( new DebugEventsCleanupTask() )->cancel();
+ }
+ }
+
+ return $options;
+ }
+
+ /**
+ * Process AJAX request for deleting all debug event entries.
+ *
+ * @since 3.0.0
+ */
+ public function process_ajax_delete_all_debug_events() {
+
+ if (
+ empty( $_POST['nonce'] ) ||
+ ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'wp_mail_smtp_debug_events' )
+ ) {
+ wp_send_json_error( esc_html__( 'Access rejected.', 'wp-mail-smtp' ) );
+ }
+
+ if ( ! current_user_can( wp_mail_smtp()->get_capability_manage_options() ) ) {
+ wp_send_json_error( esc_html__( 'You don\'t have the capability to perform this action.', 'wp-mail-smtp' ) );
+ }
+
+ if ( ! self::is_valid_db() ) {
+ wp_send_json_error( esc_html__( 'For some reason the database table was not installed correctly. Please contact plugin support team to diagnose and fix the issue.', 'wp-mail-smtp' ) );
+ }
+
+ global $wpdb;
+
+ $table = self::get_table_name();
+
+ $sql = "TRUNCATE TABLE `$table`;";
+
+ // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
+ $result = $wpdb->query( $sql );
+
+ if ( $result !== false ) {
+ wp_send_json_success( esc_html__( 'All debug event entries were deleted successfully.', 'wp-mail-smtp' ) );
+ }
+
+ wp_send_json_error(
+ sprintf( /* translators: %s - WPDB error message. */
+ esc_html__( 'There was an issue while trying to delete all debug event entries. Error message: %s', 'wp-mail-smtp' ),
+ $wpdb->last_error
+ )
+ );
+ }
+
+ /**
+ * Process AJAX request for debug event preview.
+ *
+ * @since 3.0.0
+ */
+ public function process_ajax_debug_event_preview() {
+
+ if (
+ empty( $_POST['nonce'] ) ||
+ ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'wp_mail_smtp_debug_events' )
+ ) {
+ wp_send_json_error( esc_html__( 'Access rejected.', 'wp-mail-smtp' ) );
+ }
+
+ if ( ! current_user_can( wp_mail_smtp()->get_capability_manage_options() ) ) {
+ wp_send_json_error( esc_html__( 'You don\'t have the capability to perform this action.', 'wp-mail-smtp' ) );
+ }
+
+ if ( ! self::is_valid_db() ) {
+ wp_send_json_error( esc_html__( 'For some reason the database table was not installed correctly. Please contact plugin support team to diagnose and fix the issue.', 'wp-mail-smtp' ) );
+ }
+
+ $event_id = isset( $_POST['id'] ) ? intval( $_POST['id'] ) : false;
+
+ if ( empty( $event_id ) ) {
+ wp_send_json_error( esc_html__( 'No Debug Event ID provided!', 'wp-mail-smtp' ) );
+ }
+
+ $event = new Event( $event_id );
+
+ wp_send_json_success(
+ [
+ 'title' => $event->get_title(),
+ 'content' => $event->get_details_html(),
+ ]
+ );
+ }
+
+ /**
+ * Add the debug event to the DB.
+ *
+ * @since 3.0.0
+ *
+ * @param string $message The event's message.
+ * @param int $type The event's type.
+ *
+ * @return bool|int
+ */
+ public static function add( $message = '', $type = 0 ) {
+
+ if ( ! self::is_valid_db() ) {
+ return false;
+ }
+
+ if ( ! in_array( $type, array_keys( Event::get_types() ), true ) ) {
+ return false;
+ }
+
+ if ( $type === Event::TYPE_DEBUG && ! self::is_debug_enabled() ) {
+ return false;
+ }
+
+ try {
+ $event = new Event();
+ $event->set_type( $type );
+ $event->set_content( $message );
+ $event->set_initiator();
+
+ return $event->save()->get_id();
+ } catch ( \Exception $exception ) {
+ return false;
+ }
+ }
+
+ /**
+ * Save the debug message.
+ *
+ * @since 3.0.0
+ * @since 3.5.0 Returns Event ID.
+ *
+ * @param string $message The debug message.
+ *
+ * @return bool|int
+ */
+ public static function add_debug( $message = '' ) {
+
+ return self::add( $message, Event::TYPE_DEBUG );
+ }
+
+ /**
+ * Get the debug message from the provided debug event IDs.
+ *
+ * @since 3.0.0
+ *
+ * @param array|string|int $ids A single or a list of debug event IDs.
+ *
+ * @return array
+ */
+ public static function get_debug_messages( $ids ) {
+
+ global $wpdb;
+
+ if ( empty( $ids ) ) {
+ return [];
+ }
+
+ if ( ! self::is_valid_db() ) {
+ return [];
+ }
+
+ // Convert to a string.
+ if ( is_array( $ids ) ) {
+ $ids = implode( ',', $ids );
+ }
+
+ $ids = explode( ',', (string) $ids );
+ $ids = array_map( 'intval', $ids );
+ $placeholders = implode( ', ', array_fill( 0, count( $ids ), '%d' ) );
+
+ $table = self::get_table_name();
+
+ // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
+ $events_data = $wpdb->get_results(
+ $wpdb->prepare( "SELECT id, content, initiator, event_type, created_at FROM {$table} WHERE id IN ( {$placeholders} )", $ids )
+ );
+ // phpcs:enable
+
+ if ( empty( $events_data ) ) {
+ return [];
+ }
+
+ return array_map(
+ function ( $event_item ) {
+ $event = new Event( $event_item );
+
+ return $event->get_short_details();
+ },
+ $events_data
+ );
+ }
+
+ /**
+ * Returns the number of error debug events in a given time span.
+ *
+ * By default it returns the number of error debug events in the last 30 days.
+ *
+ * @since 3.9.0
+ *
+ * @param string $span_of_time The time span to count the events for. Default '-30 days'.
+ *
+ * @return int|WP_Error The number of error debug events or WP_Error on failure.
+ */
+ public static function get_error_debug_events_count( $span_of_time = '-30 days' ) {
+
+ $timestamp = strtotime( $span_of_time );
+
+ if ( ! $timestamp || $timestamp > time() ) {
+ return new WP_Error( 'wp_mail_smtp_admin_debug_events_get_error_debug_events_count_invalid_time', 'Invalid time span.' );
+ }
+
+ if ( ! self::is_valid_db() ) {
+ return 0;
+ }
+
+ $transient_key = self::ERROR_DEBUG_EVENTS_TRANSIENT . '_' . sanitize_title_with_dashes( $span_of_time );
+ $cached_error_events_count = get_transient( $transient_key );
+
+ if ( $cached_error_events_count !== false ) {
+ return (int) $cached_error_events_count;
+ }
+
+ global $wpdb;
+
+ // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder
+ $sql = $wpdb->prepare(
+ 'SELECT COUNT(*) FROM `%1$s` WHERE event_type = %2$d AND created_at >= "%3$s"',
+ self::get_table_name(),
+ Event::TYPE_ERROR,
+ gmdate( WP::datetime_mysql_format(), $timestamp )
+ );
+ // phpcs:enable WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
+ $error_events_count = (int) $wpdb->get_var( $sql );
+
+ set_transient( $transient_key, $error_events_count, HOUR_IN_SECONDS );
+
+ return $error_events_count;
+ }
+
+ /**
+ * Register the screen options for the debug events page.
+ *
+ * @since 3.0.0
+ */
+ public function screen_options() {
+
+ $screen = get_current_screen();
+
+ if (
+ ! is_object( $screen ) ||
+ strpos( $screen->id, 'wp-mail-smtp_page_wp-mail-smtp-tools' ) === false ||
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ ! isset( $_GET['tab'] ) || $_GET['tab'] !== 'debug-events'
+ ) {
+ return;
+ }
+
+ add_screen_option(
+ 'per_page',
+ [
+ 'label' => esc_html__( 'Number of events per page:', 'wp-mail-smtp' ),
+ 'option' => 'wp_mail_smtp_debug_events_per_page',
+ 'default' => EventsCollection::PER_PAGE,
+ ]
+ );
+ }
+
+ /**
+ * Set the screen options for the debug events page.
+ *
+ * @since 3.0.0
+ *
+ * @param bool $keep Whether to save or skip saving the screen option value.
+ * @param string $option The option name.
+ * @param int $value The number of items to use.
+ *
+ * @return bool|int
+ */
+ public function set_screen_options( $keep, $option, $value ) {
+
+ if ( 'wp_mail_smtp_debug_events_per_page' === $option ) {
+ return (int) $value;
+ }
+
+ return $keep;
+ }
+
+ /**
+ * Whether the email debug for debug events is enabled or not.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public static function is_debug_enabled() {
+
+ return (bool) Options::init()->get( 'debug_events', 'email_debug' );
+ }
+
+ /**
+ * Get the debug events page URL.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public static function get_page_url() {
+
+ return add_query_arg(
+ [
+ 'tab' => 'debug-events',
+ ],
+ wp_mail_smtp()->get_admin()->get_admin_page_url( Area::SLUG . '-tools' )
+ );
+ }
+
+ /**
+ * Get the DB table name.
+ *
+ * @since 3.0.0
+ *
+ * @return string Table name, prefixed.
+ */
+ public static function get_table_name() {
+
+ global $wpdb;
+
+ return $wpdb->prefix . 'wpmailsmtp_debug_events';
+ }
+
+ /**
+ * Whether the DB table exists.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public static function is_valid_db() {
+
+ global $wpdb;
+
+ static $is_valid = null;
+
+ // Return cached value only if table already exists.
+ if ( $is_valid === true ) {
+ return true;
+ }
+
+ $table = self::get_table_name();
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching
+ $is_valid = (bool) $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s;', $table ) );
+
+ return $is_valid;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Event.php b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Event.php
new file mode 100644
index 000000000..c187380fc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Event.php
@@ -0,0 +1,597 @@
+populate_event( $id_or_row );
+ }
+
+ /**
+ * Get and prepare the event data.
+ *
+ * @since 3.0.0
+ *
+ * @param int|object $id_or_row The event ID or object with event attributes.
+ */
+ private function populate_event( $id_or_row ) {
+
+ $event = null;
+
+ if ( is_numeric( $id_or_row ) ) {
+ // Get by ID.
+ $collection = new EventsCollection( [ 'id' => (int) $id_or_row ] );
+ $events = $collection->get();
+
+ if ( $events->valid() ) {
+ $event = $events->current();
+ }
+ } elseif (
+ is_object( $id_or_row ) &&
+ isset(
+ $id_or_row->id,
+ $id_or_row->content,
+ $id_or_row->initiator,
+ $id_or_row->event_type,
+ $id_or_row->created_at
+ )
+ ) {
+ $event = $id_or_row;
+ }
+
+ if ( $event !== null ) {
+ foreach ( get_object_vars( $event ) as $key => $value ) {
+ $this->{$key} = $value;
+ }
+ }
+ }
+
+ /**
+ * Event ID as per our DB table.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ public function get_id() {
+
+ return (int) $this->id;
+ }
+
+ /**
+ * Get the event title.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_title() {
+
+ /* translators: %d the event ID. */
+ return sprintf( esc_html__( 'Event #%d', 'wp-mail-smtp' ), $this->get_id() );
+ }
+
+ /**
+ * Get the content of the event.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_content() {
+
+ return $this->content;
+ }
+
+ /**
+ * Get the event's type.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ public function get_type() {
+
+ return (int) $this->event_type;
+ }
+
+ /**
+ * Get the list of all event types.
+ *
+ * @since 3.0.0
+ *
+ * @return array
+ */
+ public static function get_types() {
+
+ return [
+ self::TYPE_ERROR => esc_html__( 'Error', 'wp-mail-smtp' ),
+ self::TYPE_DEBUG => esc_html__( 'Debug', 'wp-mail-smtp' ),
+ ];
+ }
+
+ /**
+ * Get human readable type name.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_type_name() {
+
+ $types = self::get_types();
+
+ return isset( $types[ $this->get_type() ] ) ? $types[ $this->get_type() ] : '';
+ }
+
+ /**
+ * Get the date/time when this event was created.
+ *
+ * @since 3.0.0
+ *
+ * @throws \Exception Emits exception on incorrect date.
+ *
+ * @return \DateTime
+ */
+ public function get_created_at() {
+
+ $timezone = new \DateTimeZone( 'UTC' );
+ $date = false;
+
+ if ( ! empty( $this->created_at ) ) {
+ $date = \DateTime::createFromFormat( WP::datetime_mysql_format(), $this->created_at, $timezone );
+ }
+
+ if ( $date === false ) {
+ $date = new \DateTime( 'now', $timezone );
+ }
+
+ return $date;
+ }
+
+ /**
+ * Get the date/time when this event was created in a nicely formatted string.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_created_at_formatted() {
+
+ try {
+ $date = $this->get_created_at();
+ } catch ( \Exception $e ) {
+ $date = null;
+ }
+
+ if ( empty( $date ) ) {
+ return esc_html__( 'N/A', 'wp-mail-smtp' );
+ }
+
+ return esc_html(
+ date_i18n(
+ WP::datetime_format(),
+ strtotime( get_date_from_gmt( $date->format( WP::datetime_mysql_format() ) ) )
+ )
+ );
+ }
+
+ /**
+ * Get the event's initiator raw data.
+ * Who called the `wp_mail` function?
+ *
+ * @since 3.0.0
+ *
+ * @return array
+ */
+ public function get_initiator_raw() {
+
+ return json_decode( $this->initiator, true );
+ }
+
+ /**
+ * Get the event's initiator name.
+ * Which plugin/theme (or WP core) called the `wp_mail` function?
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_initiator() {
+
+ $initiator = (array) $this->get_initiator_raw();
+
+ if ( empty( $initiator['file'] ) ) {
+ return '';
+ }
+
+ return WP::get_initiator_name( $initiator['file'] );
+ }
+
+ /**
+ * Get the event's initiator file path.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_initiator_file_path() {
+
+ $initiator = (array) $this->get_initiator_raw();
+
+ if ( empty( $initiator['file'] ) ) {
+ return '';
+ }
+
+ return $initiator['file'];
+ }
+
+ /**
+ * Get the event's initiator file line.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_initiator_file_line() {
+
+ $initiator = (array) $this->get_initiator_raw();
+
+ if ( empty( $initiator['line'] ) ) {
+ return '';
+ }
+
+ return $initiator['line'];
+ }
+
+ /**
+ * Get the event's initiator backtrace.
+ *
+ * @since 3.6.0
+ *
+ * @return array
+ */
+ private function get_initiator_backtrace() {
+
+ $initiator = (array) $this->get_initiator_raw();
+
+ if ( empty( $initiator['backtrace'] ) ) {
+ return [];
+ }
+
+ return $initiator['backtrace'];
+ }
+
+ /**
+ * Get the event preview HTML.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_details_html() {
+
+ $initiator = $this->get_initiator();
+ $initiator_backtrace = $this->get_initiator_backtrace();
+
+ ob_start();
+ ?>
+
+ ';
+ }
+
+ $count++;
+ ?>
+
+
+
+
+
+
+
+
+ $item ) {
+ printf(
+ /* translators: %1$d - index number; %2$s - function name; %3$s - file path; %4$s - line number. */
+ esc_html__( '[%1$d] %2$s called at [%3$s:%4$s]', 'wp-mail-smtp' ),
+ $i,
+ isset( $item['class'] ) ? esc_html( $item['class'] . $item['type'] . $item['function'] ) : esc_html( $item['function'] ),
+ isset( $item['file'] ) ? esc_html( $item['file'] ) : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ isset( $item['line'] ) ? esc_html( $item['line'] ) : '' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ );
+ echo '
';
+ }
+ ?>
+
+
', "\r\n", $content ), false );
+ }
+ }
+
+ /**
+ * Set the initiator by checking the backtrace for the wp_mail function call.
+ *
+ * @since 3.0.0
+ */
+ public function set_initiator() {
+
+ $initiator = wp_mail_smtp()->get_wp_mail_initiator();
+
+ if ( empty( $initiator->get_file() ) ) {
+ return;
+ }
+
+ $data['file'] = $initiator->get_file();
+
+ if ( ! empty( $initiator->get_line() ) ) {
+ $data['line'] = $initiator->get_line();
+ }
+
+ if ( DebugEvents::is_debug_enabled() ) {
+ $data['backtrace'] = $initiator->get_backtrace();
+ }
+
+ $this->initiator = wp_json_encode( $data );
+ }
+
+ /**
+ * Set the type of this event.
+ *
+ * @since 3.0.0
+ *
+ * @param int $type The event's type.
+ */
+ public function set_type( $type ) {
+
+ $this->event_type = (int) $type;
+ }
+
+ /**
+ * Whether the event instance is a valid entity to work with.
+ *
+ * @since 3.0.0
+ */
+ public function is_valid() {
+
+ return ! ( empty( $this->id ) || empty( $this->created_at ) );
+ }
+
+ /**
+ * Whether this is an error event.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public function is_error() {
+
+ return self::TYPE_ERROR === $this->get_type();
+ }
+
+ /**
+ * Whether this is a debug event.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public function is_debug() {
+
+ return self::TYPE_DEBUG === $this->get_type();
+ }
+}
+
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/EventsCollection.php b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/EventsCollection.php
new file mode 100644
index 000000000..07b55b4ca
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/EventsCollection.php
@@ -0,0 +1,421 @@
+ 0 ] );
+ *
+ * @since 3.0.0
+ *
+ * @param array $params The events collection parameters.
+ */
+ public function __construct( array $params = [] ) {
+
+ $this->set_per_page();
+ $this->params = $this->process_params( $params );
+ }
+
+ /**
+ * Set the per page attribute to the screen options value.
+ *
+ * @since 3.0.0
+ */
+ protected function set_per_page() {
+
+ $per_page = (int) get_user_meta(
+ get_current_user_id(),
+ 'wp_mail_smtp_debug_events_per_page',
+ true
+ );
+
+ if ( $per_page < 1 ) {
+ $per_page = self::PER_PAGE;
+ }
+
+ self::$per_page = $per_page;
+ }
+
+ /**
+ * Verify, sanitize, and populate with default values
+ * all the passed parameters, which participate in DB queries.
+ *
+ * @since 3.0.0
+ *
+ * @param array $params The events collection parameters.
+ *
+ * @return array
+ */
+ public function process_params( $params ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded
+
+ $params = (array) $params;
+ $processed = [];
+
+ /*
+ * WHERE.
+ */
+ // Single ID.
+ if ( ! empty( $params['id'] ) ) {
+ $processed['id'] = (int) $params['id'];
+ }
+
+ // Multiple IDs.
+ if (
+ ! empty( $params['ids'] ) &&
+ is_array( $params['ids'] )
+ ) {
+ $processed['ids'] = array_unique( array_filter( array_map( 'intval', array_values( $params['ids'] ) ) ) );
+ }
+
+ // Type.
+ if (
+ isset( $params['type'] ) &&
+ in_array( $params['type'], array_keys( Event::get_types() ), true )
+ ) {
+ $processed['type'] = (int) $params['type'];
+ }
+
+ // Search.
+ if ( ! empty( $params['search'] ) ) {
+ $processed['search'] = sanitize_text_field( $params['search'] );
+ }
+
+ /*
+ * LIMIT.
+ */
+ if ( ! empty( $params['offset'] ) ) {
+ $processed['offset'] = (int) $params['offset'];
+ }
+
+ if ( ! empty( $params['per_page'] ) ) {
+ $processed['per_page'] = (int) $params['per_page'];
+ }
+
+ /*
+ * Sent date.
+ */
+ if ( ! empty( $params['date'] ) ) {
+ if ( is_string( $params['date'] ) ) {
+ $params['date'] = array_fill( 0, 2, $params['date'] );
+ } elseif ( is_array( $params['date'] ) && count( $params['date'] ) === 1 ) {
+ $params['date'] = array_fill( 0, 2, $params['date'][0] );
+ }
+
+ // We pass array and treat it as a range from:to.
+ if ( is_array( $params['date'] ) && count( $params['date'] ) === 2 ) {
+ $date_start = WP::get_day_period_date( 'start_of_day', strtotime( $params['date'][0] ), 'Y-m-d H:i:s', true );
+ $date_end = WP::get_day_period_date( 'end_of_day', strtotime( $params['date'][1] ), 'Y-m-d H:i:s', true );
+
+ if ( ! empty( $date_start ) && ! empty( $date_end ) ) {
+ $processed['date'] = [ $date_start, $date_end ];
+ }
+ }
+ }
+
+ // Merge missing values with defaults.
+ return wp_parse_args(
+ $processed,
+ $this->get_default_params()
+ );
+ }
+
+ /**
+ * Get the list of default params for a usual query.
+ *
+ * @since 3.0.0
+ *
+ * @return array
+ */
+ protected function get_default_params() {
+
+ return [
+ 'offset' => 0,
+ 'per_page' => self::$per_page,
+ 'order' => 'DESC',
+ 'orderby' => 'id',
+ 'search' => '',
+ ];
+ }
+
+ /**
+ * Get the SQL-ready string of WHERE part for a query.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ private function build_where() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
+
+ global $wpdb;
+
+ $where = [ '1=1' ];
+
+ // Shortcut single ID or multiple IDs.
+ if ( ! empty( $this->params['id'] ) || ! empty( $this->params['ids'] ) ) {
+ if ( ! empty( $this->params['id'] ) ) {
+ $where[] = $wpdb->prepare( 'id = %d', $this->params['id'] );
+ } elseif ( ! empty( $this->params['ids'] ) ) {
+ $where[] = 'id IN (' . implode( ',', $this->params['ids'] ) . ')';
+ }
+
+ // When some ID(s) defined - we should ignore all other possible filtering options.
+ return implode( ' AND ', $where );
+ }
+
+ // Type.
+ if ( isset( $this->params['type'] ) ) {
+ $where[] = $wpdb->prepare( 'event_type = %d', $this->params['type'] );
+ }
+
+ // Search.
+ if ( ! empty( $this->params['search'] ) ) {
+ $where[] = '(' .
+ $wpdb->prepare(
+ 'content LIKE %s',
+ '%' . $wpdb->esc_like( $this->params['search'] ) . '%'
+ )
+ . ' OR ' .
+ $wpdb->prepare(
+ 'initiator LIKE %s',
+ '%' . $wpdb->esc_like( $this->params['search'] ) . '%'
+ )
+ . ')';
+ }
+
+ // Sent date.
+ if (
+ ! empty( $this->params['date'] ) &&
+ is_array( $this->params['date'] ) &&
+ count( $this->params['date'] ) === 2
+ ) {
+ $where[] = $wpdb->prepare(
+ '( created_at >= %s AND created_at <= %s )',
+ $this->params['date'][0],
+ $this->params['date'][1]
+ );
+ }
+
+ return implode( ' AND ', $where );
+ }
+
+ /**
+ * Get the SQL-ready string of ORDER part for a query.
+ * Order is always in the params, as per our defaults.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ private function build_order() {
+
+ return 'ORDER BY ' . $this->params['orderby'] . ' ' . $this->params['order'];
+ }
+
+ /**
+ * Get the SQL-ready string of LIMIT part for a query.
+ * Limit is always in the params, as per our defaults.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ private function build_limit() {
+
+ return 'LIMIT ' . $this->params['offset'] . ', ' . $this->params['per_page'];
+ }
+
+ /**
+ * Count the number of DB records according to filters.
+ * Do not retrieve actual records.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ public function get_count() {
+
+ $table = DebugEvents::get_table_name();
+
+ $where = $this->build_where();
+
+ // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
+ return (int) WP::wpdb()->get_var(
+ "SELECT COUNT(id) FROM $table
+ WHERE {$where}"
+ );
+ // phpcs:enable
+ }
+
+ /**
+ * Get the list of DB records.
+ * You can either use array returned there OR iterate over the whole object,
+ * as it implements Iterator interface.
+ *
+ * @since 3.0.0
+ *
+ * @return EventsCollection
+ */
+ public function get() {
+
+ $table = DebugEvents::get_table_name();
+
+ $where = $this->build_where();
+ $limit = $this->build_limit();
+ $order = $this->build_order();
+
+ // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
+ $data = WP::wpdb()->get_results(
+ "SELECT * FROM $table
+ WHERE {$where}
+ {$order}
+ {$limit}"
+ );
+ // phpcs:enable
+
+ if ( ! empty( $data ) ) {
+ // As we got raw data we need to convert each row to Event.
+ foreach ( $data as $row ) {
+ $this->list[] = new Event( $row );
+ }
+ }
+
+ return $this;
+ }
+
+ /*********************************************************************************************
+ * ****************************** \Counter interface method. *********************************
+ *********************************************************************************************/
+
+ /**
+ * Count number of Record in a Queue.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ #[\ReturnTypeWillChange]
+ public function count() {
+
+ return count( $this->list );
+ }
+
+ /*********************************************************************************************
+ * ****************************** \Iterator interface methods. *******************************
+ *********************************************************************************************/
+
+ /**
+ * Rewind the Iterator to the first element.
+ *
+ * @since 3.0.0
+ */
+ #[\ReturnTypeWillChange]
+ public function rewind() {
+
+ $this->iterator_position = 0;
+ }
+
+ /**
+ * Return the current element.
+ *
+ * @since 3.0.0
+ *
+ * @return Event|null Return null when no items in collection.
+ */
+ #[\ReturnTypeWillChange]
+ public function current() {
+
+ return $this->valid() ? $this->list[ $this->iterator_position ] : null;
+ }
+
+ /**
+ * Return the key of the current element.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ #[\ReturnTypeWillChange]
+ public function key() {
+
+ return $this->iterator_position;
+ }
+
+ /**
+ * Move forward to next element.
+ *
+ * @since 3.0.0
+ */
+ #[\ReturnTypeWillChange]
+ public function next() {
+
+ ++ $this->iterator_position;
+ }
+
+ /**
+ * Checks if current position is valid.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ #[\ReturnTypeWillChange]
+ public function valid() {
+
+ return isset( $this->list[ $this->iterator_position ] );
+ }
+
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Migration.php b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Migration.php
new file mode 100644
index 000000000..0c778a91c
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Migration.php
@@ -0,0 +1,69 @@
+get_charset_collate();
+
+ $sql = "CREATE TABLE IF NOT EXISTS `$table` (
+ `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ `content` TEXT DEFAULT NULL,
+ `initiator` TEXT DEFAULT NULL,
+ `event_type` TINYINT UNSIGNED NOT NULL DEFAULT '0',
+ `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (id)
+ )
+ ENGINE='InnoDB'
+ {$charset_collate};";
+
+ $result = $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
+
+ if ( ! empty( $wpdb->last_error ) ) {
+ update_option( self::ERROR_OPTION_NAME, $wpdb->last_error, false );
+ }
+
+ // Save the current version to DB.
+ if ( $result !== false ) {
+ $this->update_db_ver( 1 );
+ }
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Table.php b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Table.php
new file mode 100644
index 000000000..49a01c1f2
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/DebugEvents/Table.php
@@ -0,0 +1,582 @@
+ 'event',
+ 'plural' => 'events',
+ 'ajax' => false,
+ ]
+ );
+
+ // Include polyfill if mbstring PHP extension is not enabled.
+ if ( ! function_exists( 'mb_substr' ) || ! function_exists( 'mb_strlen' ) ) {
+ Helpers::include_mbstring_polyfill();
+ }
+ }
+
+ /**
+ * Get the debug event types for filtering purpose.
+ *
+ * @since 3.0.0
+ *
+ * @return array Associative array of debug event types StatusCode=>Name.
+ */
+ public function get_types() {
+
+ return Event::get_types();
+ }
+
+ /**
+ * Get the items counts for various types of debug logs.
+ *
+ * @since 3.0.0
+ */
+ public function get_counts() {
+
+ $this->counts = [];
+
+ // Base params with applied filters.
+ $base_params = $this->get_filters_query_params();
+
+ $total_params = $base_params;
+ unset( $total_params['type'] );
+ $this->counts['total'] = ( new EventsCollection( $total_params ) )->get_count();
+
+ foreach ( $this->get_types() as $type => $name ) {
+ $collection = new EventsCollection( array_merge( $base_params, [ 'type' => $type ] ) );
+
+ $this->counts[ 'type_' . $type ] = $collection->get_count();
+ }
+
+ /**
+ * Filters items counts by various types of debug events.
+ *
+ * @since 3.0.0
+ *
+ * @param array $counts {
+ * Items counts by types.
+ *
+ * @type integer $total Total items count.
+ * @type integer $status_{$type_key} Items count by type.
+ * }
+ */
+ $this->counts = apply_filters( 'wp_mail_smtp_admin_debug_events_table_get_counts', $this->counts );
+ }
+
+ /**
+ * Retrieve the view types.
+ *
+ * @since 3.0.0
+ */
+ public function get_views() {
+
+ $base_url = $this->get_filters_base_url();
+ $current_type = $this->get_filtered_types();
+
+ $views = [];
+
+ $views['all'] = sprintf(
+ '%3$s (%4$d)',
+ esc_url( remove_query_arg( 'type', $base_url ) ),
+ $current_type === false ? 'class="current"' : '',
+ esc_html__( 'All', 'wp-mail-smtp' ),
+ intval( $this->counts['total'] )
+ );
+
+ foreach ( $this->get_types() as $type => $type_label ) {
+
+ $count = intval( $this->counts[ 'type_' . $type ] );
+
+ // Skipping types with no events.
+ if ( $count === 0 && $current_type !== $type ) {
+ continue;
+ }
+
+ $views[ $type ] = sprintf(
+ '%3$s (%4$d)',
+ esc_url( add_query_arg( 'type', $type, $base_url ) ),
+ $current_type === $type ? 'class="current"' : '',
+ esc_html( $type_label ),
+ $count
+ );
+
+ }
+
+ /**
+ * Filters debug event item views.
+ *
+ * @since 3.0.0
+ *
+ * @param array $views {
+ * Debug event items views by types.
+ *
+ * @type string $all Total items view.
+ * @type integer $status_key Items views by type.
+ * }
+ * @param array $counts {
+ * Items counts by types.
+ *
+ * @type integer $total Total items count.
+ * @type integer $status_{$status_key} Items count by types.
+ * }
+ */
+ return apply_filters( 'wp_mail_smtp_admin_debug_events_table_get_views', $views, $this->counts );
+ }
+
+ /**
+ * Define the table columns.
+ *
+ * @since 3.0.0
+ *
+ * @return array Associative array of slug=>Name columns data.
+ */
+ public function get_columns() {
+
+ return [
+ 'event' => esc_html__( 'Event', 'wp-mail-smtp' ),
+ 'type' => esc_html__( 'Type', 'wp-mail-smtp' ),
+ 'content' => esc_html__( 'Content', 'wp-mail-smtp' ),
+ 'initiator' => esc_html__( 'Source', 'wp-mail-smtp' ),
+ 'created_at' => esc_html__( 'Date', 'wp-mail-smtp' ),
+ ];
+ }
+
+ /**
+ * Display the main event title with a link to open event details.
+ *
+ * @since 3.0.0
+ *
+ * @param Event $item Event object.
+ *
+ * @return string
+ */
+ public function column_event( $item ) {
+
+ return '' .
+ '' .
+ esc_html( $item->get_title() ) .
+ '' .
+ '';
+ }
+
+ /**
+ * Display event's type.
+ *
+ * @since 3.0.0
+ *
+ * @param Event $item Event object.
+ *
+ * @return string
+ */
+ public function column_type( $item ) {
+
+ return esc_html( $item->get_type_name() );
+ }
+
+ /**
+ * Display event's content.
+ *
+ * @since 3.0.0
+ *
+ * @param Event $item Event object.
+ *
+ * @return string
+ */
+ public function column_content( $item ) {
+
+ $content = $item->get_content();
+
+ if ( mb_strlen( $content ) > 100 ) {
+ $content = mb_substr( $content, 0, 100 ) . '...';
+ }
+
+ return wp_kses_post( $content );
+ }
+
+ /**
+ * Display event's wp_mail initiator.
+ *
+ * @since 3.0.0
+ *
+ * @param Event $item Event object.
+ *
+ * @return string
+ */
+ public function column_initiator( $item ) {
+
+ return esc_html( $item->get_initiator() );
+ }
+
+ /**
+ * Display event's created date.
+ *
+ * @since 3.0.0
+ *
+ * @param Event $item Event object.
+ *
+ * @return string
+ */
+ public function column_created_at( $item ) {
+
+ return $item->get_created_at_formatted();
+ }
+
+ /**
+ * Return type filter value or FALSE.
+ *
+ * @since 3.0.0
+ *
+ * @return bool|integer
+ */
+ public function get_filtered_types() {
+
+ if ( ! isset( $_REQUEST['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ return false;
+ }
+
+ return intval( $_REQUEST['type'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ }
+
+ /**
+ * Return date filter value or FALSE.
+ *
+ * @since 3.0.0
+ *
+ * @return bool|array
+ */
+ public function get_filtered_dates() {
+
+ if ( empty( $_REQUEST['date'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ return false;
+ }
+
+ $dates = (array) explode( ' - ', sanitize_text_field( wp_unslash( $_REQUEST['date'] ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+
+ return array_map( 'sanitize_text_field', $dates );
+ }
+
+ /**
+ * Return search filter values or FALSE.
+ *
+ * @since 3.0.0
+ *
+ * @return bool|array
+ */
+ public function get_filtered_search() {
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( empty( $_REQUEST['search'] ) ) {
+ return false;
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ return sanitize_text_field( wp_unslash( $_REQUEST['search'] ) );
+ }
+
+ /**
+ * Whether the event log is filtered or not.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public function is_filtered() {
+
+ $is_filtered = false;
+
+ if (
+ $this->get_filtered_search() !== false ||
+ $this->get_filtered_dates() !== false ||
+ $this->get_filtered_types() !== false
+ ) {
+ $is_filtered = true;
+ }
+
+ return $is_filtered;
+ }
+
+ /**
+ * Get current filters query parameters.
+ *
+ * @since 3.0.0
+ *
+ * @return array
+ */
+ public function get_filters_query_params() {
+
+ $params = [
+ 'search' => $this->get_filtered_search(),
+ 'type' => $this->get_filtered_types(),
+ 'date' => $this->get_filtered_dates(),
+ ];
+
+ return array_filter(
+ $params,
+ function ( $v ) {
+ return $v !== false;
+ }
+ );
+ }
+
+ /**
+ * Get current filters base url.
+ *
+ * @since 3.0.0
+ *
+ * @return string
+ */
+ public function get_filters_base_url() {
+
+ $base_url = DebugEvents::get_page_url();
+ $filters_params = $this->get_filters_query_params();
+
+ if ( isset( $filters_params['search'] ) ) {
+ $base_url = add_query_arg( 'search', $filters_params['search'], $base_url );
+ }
+
+ if ( isset( $filters_params['type'] ) ) {
+ $base_url = add_query_arg( 'type', $filters_params['type'], $base_url );
+ }
+
+ if ( isset( $filters_params['date'] ) ) {
+ $base_url = add_query_arg( 'date', implode( ' - ', $filters_params['date'] ), $base_url );
+ }
+
+ return $base_url;
+ }
+
+ /**
+ * Get the data, prepare pagination, process bulk actions.
+ * Prepare columns for display.
+ *
+ * @since 3.0.0
+ */
+ public function prepare_items() {
+
+ // Retrieve count.
+ $this->get_counts();
+
+ // Prepare all the params to pass to our Collection. All sanitization is done in that class.
+ $params = $this->get_filters_query_params();
+
+ // Total amount for pagination with WHERE clause - super quick count DB request.
+ $total_items = ( new EventsCollection( $params ) )->get_count();
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( ! empty( $_REQUEST['orderby'] ) && in_array( $_REQUEST['orderby'], [ 'event', 'type', 'content', 'initiator', 'created_at' ], true ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $params['orderby'] = sanitize_key( $_REQUEST['orderby'] );
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( ! empty( $_REQUEST['order'] ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $params['order'] = strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['order'] ) ) ) === 'DESC' ? 'DESC' : 'ASC';
+ }
+
+ $params['offset'] = ( $this->get_pagenum() - 1 ) * EventsCollection::$per_page;
+
+ // Get the data from the DB using parameters defined above.
+ $collection = new EventsCollection( $params );
+ $this->items = $collection->get();
+
+ /*
+ * Register our pagination options & calculations.
+ */
+ $this->set_pagination_args(
+ [
+ 'total_items' => $total_items,
+ 'per_page' => EventsCollection::$per_page,
+ ]
+ );
+ }
+
+ /**
+ * Display the search box.
+ *
+ * @since 1.7.0
+ *
+ * @param string $text The 'submit' button label.
+ * @param string $input_id ID attribute value for the search input field.
+ */
+ public function search_box( $text, $input_id ) {
+
+ if ( ! $this->is_filtered() && ! $this->has_items() ) {
+ return;
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $search = ! empty( $_REQUEST['search'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['search'] ) ) : '';
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( ! empty( $_REQUEST['orderby'] ) && in_array( $_REQUEST['orderby'], [ 'event', 'type', 'content', 'initiator', 'created_at' ], true ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $order_by = sanitize_text_field( wp_unslash( $_REQUEST['orderby'] ) );
+ echo '';
+ }
+
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ if ( ! empty( $_REQUEST['order'] ) ) {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $order = strtoupper( sanitize_text_field( wp_unslash( $_REQUEST['order'] ) ) ) === 'DESC' ? 'DESC' : 'ASC';
+ echo '';
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ esc_html__( 'The deliverability verification process detects a hard bounce', 'wp-mail-smtp' ),
+ 'disabled' => true,
+ ]
+ );
+ ?>
+
' .
+ '' . esc_html__( 'Disabling this option will block users from being able to export their personal data, as they will not receive an email with a link.', 'wp-mail-smtp' ) . '',
+ ],
+ ],
+ ],
+ 'auto_updates' => [
+ 'title' => esc_html__( 'Automatic Updates', 'wp-mail-smtp' ),
+ 'emails' => [
+ 'dis_auto_updates_plugin_status' => [
+ 'label' => esc_html__( 'Plugin Status', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'Completion or failure of a background automatic plugin update. Sent to the site or network admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_auto_updates_theme_status' => [
+ 'label' => esc_html__( 'Theme Status', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'Completion or failure of a background automatic theme update. Sent to the site or network admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_auto_updates_status' => [
+ 'label' => esc_html__( 'WP Core Status', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'Completion or failure of a background automatic core update. Sent to the site or network admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_auto_updates_full_log' => [
+ 'label' => esc_html__( 'Full Log', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'Full log of background update results which includes information about WordPress core, plugins, themes, and translations updates. Only sent when you are using a development version of WordPress. Sent to the site or network admin.', 'wp-mail-smtp' ),
+ ],
+ ],
+ ],
+ 'new_user' => [
+ 'title' => esc_html__( 'New User', 'wp-mail-smtp' ),
+ 'emails' => [
+ 'dis_new_user_created_to_admin' => [
+ 'label' => esc_html__( 'Created (Admin)', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'A new user was created. Sent to the site admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_user_created_to_user' => [
+ 'label' => esc_html__( 'Created (User)', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'A new user was created. Sent to the new user.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_user_invited_to_site_network' => [
+ 'label' => esc_html__( 'Invited To Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'A new user was invited to a site from Users -> Add New -> Add New User. Sent to the invited user.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_user_created_network' => [
+ 'label' => esc_html__( 'Created On Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'A new user account was created. Sent to Network Admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_user_added_activated_network' => [
+ 'label' => esc_html__( 'Added / Activated on Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'A user has been added, or their account activation has been successful. Sent to the user, that has been added/activated.', 'wp-mail-smtp' ),
+ ],
+ ],
+ ],
+ 'network_new_site' => [
+ 'title' => esc_html__( 'New Site', 'wp-mail-smtp' ),
+ 'emails' => [
+ 'dis_new_site_user_registered_site_network' => [
+ 'label' => esc_html__( 'User Created Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'User registered for a new site. Sent to the site admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_site_user_added_activated_site_in_network_to_admin' => [
+ 'label' => esc_html__( 'Network Admin: User Activated / Added Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'User activated their new site, or site was added from Network Admin -> Sites -> Add New. Sent to Network Admin.', 'wp-mail-smtp' ),
+ ],
+ 'dis_new_site_user_added_activated_site_in_network_to_site' => [
+ 'label' => esc_html__( 'Site Admin: Activated / Added Site', 'wp-mail-smtp' ),
+ 'desc' => esc_html__( 'User activated their new site, or site was added from Network Admin -> Sites -> Add New. Sent to Site Admin.', 'wp-mail-smtp' ),
+ ],
+ ],
+ ],
+ ];
+ }
+
+ /**
+ * Output HTML of the email controls settings preview.
+ *
+ * @since 1.6.0
+ * @since 2.1.0 Replaced images with SVGs.
+ * @since 3.1.0 Updated layout to inactive settings preview.
+ */
+ public function display() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh
+
+ $top_upgrade_button_url = add_query_arg(
+ [ 'discount' => 'LITEUPGRADE' ],
+ wp_mail_smtp()->get_upgrade_link(
+ [
+ 'medium' => 'Email Controls',
+ 'content' => 'Upgrade to WP Mail SMTP Pro Button Top',
+ ]
+ )
+ );
+ $bottom_upgrade_button_url = add_query_arg(
+ [ 'discount' => 'LITEUPGRADE' ],
+ wp_mail_smtp()->get_upgrade_link(
+ [
+ 'medium' => 'Email Controls',
+ 'content' => 'Upgrade to WP Mail SMTP Pro Button',
+ ]
+ )
+ );
+ ?>
+
+
';
+ echo '' . esc_html( $error_message ) . '
';
+ } else {
+ echo wp_kses(
+ sprintf( /* translators: %1$s - create missing tables link; %2$s - contact support link. */
+ __( 'WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to create the missing DB tables by clicking on this link. If this issue persists, please contact our support.', 'wp-mail-smtp' ),
+ esc_url( $create_missing_tables_url ),
+ esc_url( $contact_support_url )
+ ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ );
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ is_pro() ) {
+ // WP Mail SMTP Pro paid installed.
+ $message =
+'Congrats, test email was sent successfully!
+
+Thank you for trying out WP Mail SMTP. We are on a mission to make sure your emails actually get delivered.
+
+- Jared Atchison
+Co-Founder, WP Mail SMTP';
+ } else {
+ // Free WP Mail SMTP is installed.
+ $message =
+'Congrats, test email was sent successfully!
+
+Thank you for trying out WP Mail SMTP. We are on a mission to make sure your emails actually get delivered.
+
+If you find this free plugin useful, please consider giving WP Mail SMTP Pro a try!
+
+https://wpmailsmtp.com/lite-upgrade/
+
+Unlock These Powerful Features with WP Mail SMTP Pro:
+
++ Log all emails and resend failed emails from your email log
++ Track opens and clicks to measure the engagement
++ Get email reports with a weekly summary of your email activity
++ Use a backup mailer if your mail service goes down
++ Get notified of failed emails via email, Slack, or SMS
++ Get help from our world-class support team
+
+- Jared Atchison
+Co-Founder, WP Mail SMTP';
+ }
+ // phpcs:enable
+
+ return $message;
+ }
+
+ /**
+ * Set the HTML content type for a test email.
+ *
+ * @since 1.4.0
+ *
+ * @return string
+ */
+ public static function set_test_html_content_type() {
+
+ return 'text/html';
+ }
+
+ /**
+ * Prepare debug information, that will help users to identify the error.
+ *
+ * @since 1.0.0
+ *
+ * @param MailCatcherInterface $phpmailer The MailCatcher object.
+ * @param string $smtp_debug The SMTP debug message.
+ *
+ * @return string
+ */
+ protected function get_debug_messages( $phpmailer, $smtp_debug ) {
+
+ $connection_options = $this->connection->get_options();
+ $conflicts = new Conflicts();
+
+ $this->debug['mailer'] = $connection_options->get( 'mail', 'mailer' );
+
+ /*
+ * Versions Debug.
+ */
+
+ $versions_text = 'Versions:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ is_pro() ) : ?>
+
+
+
Co-Founder, WP Mail SMTP
+
+
+
+
+
+
+
+ Unlock Powerful Features with WP Mail SMTP Pro
+
+
+ Open & Click Tracking
+ Email Reports with Weekly Summary
+ Backup Mailer
+ Failed Email Alerts via Email, Slack, and SMS
+ World-Class Support
+
+
+
+
+
+
+
+
+
+
+
+
+ Upgrade to Pro Today
+
+
+
';
+
+ $versions_text .= 'WordPress: ' . get_bloginfo( 'version' ) . '
';
+ $versions_text .= 'WordPress MS: ' . ( is_multisite() ? 'Yes' : 'No' ) . '
';
+ $versions_text .= 'PHP: ' . PHP_VERSION . '
';
+ $versions_text .= 'WP Mail SMTP: ' . WPMS_PLUGIN_VER . '
';
+
+ /*
+ * Mailer Debug.
+ */
+
+ $mailer_text = 'Params:
';
+
+ $mailer_text .= 'Mailer: ' . $this->debug['mailer'] . '
';
+ $mailer_text .= 'Constants: ' . ( $connection_options->is_const_enabled() ? 'Yes' : 'No' ) . '
';
+
+ if ( $conflicts->is_detected() ) {
+ $conflict_plugin_names = implode( ', ', $conflicts->get_all_conflict_names() );
+
+ $mailer_text .= 'Conflicts: ' . esc_html( $conflict_plugin_names ) . '
';
+ }
+
+ // Display different debug info based on the mailer.
+ $mailer = wp_mail_smtp()->get_providers()->get_mailer( $this->debug['mailer'], $phpmailer, $this->connection );
+
+ if ( $mailer ) {
+ $mailer_text .= $mailer->get_debug_info();
+ }
+
+ $phpmailer_error = $phpmailer->ErrorInfo; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
+
+ // Append any PHPMailer errors to the mailer debug (except SMTP mailer, which has the full error output below).
+ if (
+ ! empty( $phpmailer_error ) &&
+ ! $connection_options->is_mailer_smtp()
+ ) {
+ $mailer_text .= '
PHPMailer Debug:
' .
+ wp_strip_all_tags( $phpmailer_error ) .
+ '
';
+ }
+
+ /*
+ * General Debug.
+ */
+
+ $debug_text = implode( '
', Debug::get() );
+ Debug::clear();
+ if ( ! empty( $debug_text ) ) {
+ $debug_text = '
Debug:
' . $debug_text . '
';
+ }
+
+ /*
+ * SMTP Debug.
+ */
+
+ $smtp_text = '';
+ if ( $connection_options->is_mailer_smtp() ) {
+ $smtp_text = 'SMTP Debug:
';
+ if ( ! empty( $smtp_debug ) ) {
+ $smtp_text .= '' . $smtp_debug . '
';
+ } else {
+ $smtp_text .= '[empty]';
+ }
+ }
+
+ $errors = apply_filters(
+ 'wp_mail_smtp_admin_test_get_debug_messages',
+ array(
+ $versions_text,
+ $mailer_text,
+ $debug_text,
+ $smtp_text,
+ )
+ );
+
+ return '' . implode( '
';
+ }
+
+ /**
+ * Returns debug information for detection, processing, and display.
+ *
+ * @since 1.3.0
+ *
+ * @return array
+ */
+ protected function get_debug_details() {
+
+ $connection_options = $this->connection->get_options();
+ $smtp_host = $connection_options->get( 'smtp', 'host' );
+ $smtp_port = $connection_options->get( 'smtp', 'port' );
+ $smtp_encryption = $connection_options->get( 'smtp', 'encryption' );
+
+ $details = [
+ // [any] - cURL error 60/77.
+ [
+ 'mailer' => 'any',
+ 'errors' => [
+ [ 'cURL error 60' ],
+ [ 'cURL error 77' ],
+ ],
+ 'title' => esc_html__( 'SSL certificate issue.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means your web server cannot reliably make secure connections (make requests to HTTPS sites).', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned when web server is not configured properly.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Contact your web hosting provider and inform them your site has an issue with SSL certificates.', 'wp-mail-smtp' ),
+ esc_html__( 'The exact error you can provide them is in the Error log, available at the bottom of this page.', 'wp-mail-smtp' ),
+ esc_html__( 'Ask them to resolve the issue then try again.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [any] - cURL error 6/7.
+ [
+ 'mailer' => 'any',
+ 'errors' => [
+ [ 'cURL error 6' ],
+ [ 'cURL error 7' ],
+ ],
+ 'title' => esc_html__( 'Could not connect to host.', 'wp-mail-smtp' ),
+ 'description' => [
+ ! empty( $smtp_host )
+ ? sprintf( /* translators: %s - SMTP host address. */
+ esc_html__( 'This means your web server was unable to connect to %s.', 'wp-mail-smtp' ),
+ $smtp_host
+ )
+ : esc_html__( 'This means your web server was unable to connect to the host server.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned your web server is blocking the connections or the SMTP host denying the request.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ sprintf( /* translators: %s - SMTP host address. */
+ esc_html__( 'Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection.', 'wp-mail-smtp' ),
+ $smtp_host
+ ),
+ esc_html__( 'If using "Other SMTP" Mailer, triple check your SMTP settings including host address, email, and password.', 'wp-mail-smtp' ),
+ esc_html__( 'If using "Other SMTP" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc).', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [sendgrid] - cURL error 18 - potential incorrect API key.
+ [
+ 'mailer' => 'sendgrid',
+ 'errors' => [
+ [ 'cURL error 18' ],
+ ],
+ 'title' => esc_html__( 'Invalid SendGrid API key', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'It looks like your SendGrid API Key is invalid.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Go to WP Mail SMTP plugin Settings page.', 'wp-mail-smtp' ),
+ esc_html__( 'Make sure your API Key in the SendGrid mailer settings is correct and valid.', 'wp-mail-smtp' ),
+ esc_html__( 'Save the plugin settings.', 'wp-mail-smtp' ),
+ esc_html__( 'If updating the API Key doesn\'t resolve this issue, please contact our support.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [any] - cURL error XX (other).
+ [
+ 'mailer' => 'any',
+ 'errors' => [
+ [ 'cURL error' ],
+ ],
+ 'title' => esc_html__( 'Could not connect to your host.', 'wp-mail-smtp' ),
+ 'description' => [
+ ! empty( $smtp_host )
+ ? sprintf( /* translators: %s - SMTP host address. */
+ esc_html__( 'This means your web server was unable to connect to %s.', 'wp-mail-smtp' ),
+ $smtp_host
+ )
+ : esc_html__( 'This means your web server was unable to connect to the host server.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned when web server is not configured properly.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Contact your web hosting provider and inform them you are having issues making outbound connections.', 'wp-mail-smtp' ),
+ esc_html__( 'The exact error you can provide them is in the Error log, available at the bottom of this page.', 'wp-mail-smtp' ),
+ esc_html__( 'Ask them to resolve the issue then try again.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [smtp] - SMTP Error: Count not authenticate.
+ [
+ 'mailer' => 'smtp',
+ 'errors' => [
+ [ 'SMTP Error: Could not authenticate.' ],
+ ],
+ 'title' => esc_html__( 'Could not authenticate your SMTP account.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings.', 'wp-mail-smtp' ),
+ esc_html__( 'Contact your SMTP host to confirm you are using the correct username and password.', 'wp-mail-smtp' ),
+ esc_html__( 'Verify with your SMTP host that your account has permissions to send emails using outside connections.', 'wp-mail-smtp' ),
+ sprintf(
+ wp_kses( /* translators: %s - URL to the wpmailsmtp.com doc page. */
+ __( 'Visit our documentation for additional tips on how to resolve this error.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ ),
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/#auth-type', [ 'medium' => 'email-test', 'content' => 'Other SMTP auth debug - our documentation' ] ) )
+ ),
+ ],
+ ],
+ // [smtp] - Sending bulk email, hitting rate limit.
+ [
+ 'mailer' => 'smtp',
+ 'errors' => [
+ [ 'We do not authorize the use of this system to transport unsolicited' ],
+ ],
+ 'title' => esc_html__( 'Error due to unsolicited and/or bulk e-mail.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means the connection to your SMTP host was made successfully, but the host rejected the email.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Make sure you are not sending emails with too many recipients. Example: single email should not have 10+ recipients. You can install any WordPress e-mail logging plugin to check your recipients (TO, CC and BCC).', 'wp-mail-smtp' ),
+ esc_html__( 'Contact your SMTP host to ask about sending/rate limits.', 'wp-mail-smtp' ),
+ esc_html__( 'Verify with them your SMTP account is in good standing and your account has not been flagged.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [smtp] - Unauthenticated senders not allowed.
+ [
+ 'mailer' => 'smtp',
+ 'errors' => [
+ [ 'Unauthenticated senders not allowed' ],
+ ],
+ 'title' => esc_html__( 'Unauthenticated senders are not allowed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Go to WP Mail SMTP plugin Settings page.', 'wp-mail-smtp' ),
+ esc_html__( 'Enable Authentication', 'wp-mail-smtp' ),
+ esc_html__( 'Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [smtp] - certificate verify failed.
+ // Has to be defined before "SMTP connect() failed" error, since this is a more specific error,
+ // which contains the "SMTP connect() failed" error message as well.
+ [
+ 'mailer' => 'smtp',
+ 'errors' => [
+ [ 'certificate verify failed' ],
+ ],
+ 'title' => esc_html__( 'Misconfigured server certificate.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means OpenSSL on your server isn\'t able to verify the host certificate.', 'wp-mail-smtp' ),
+ esc_html__( 'There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server\'s OpenSSL is using an outdated CA bundle.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Verify that the host\'s SSL certificate is valid.', 'wp-mail-smtp' ),
+ sprintf(
+ wp_kses( /* translators: %s - URL to the PHP openssl manual */
+ __( 'Contact your hosting support, show them the "full Error Log for debugging" below and share this link with them.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ ),
+ 'https://www.php.net/manual/en/migration56.openssl.php'
+ ),
+ ],
+ ],
+ // [smtp] - SMTP connect() failed.
+ [
+ 'mailer' => 'smtp',
+ 'errors' => [
+ [ 'SMTP connect() failed' ],
+ ],
+ 'title' => esc_html__( 'Could not connect to the SMTP host.', 'wp-mail-smtp' ),
+ 'description' => [
+ ! empty( $smtp_host )
+ ? sprintf( /* translators: %s - SMTP host address. */
+ esc_html__( 'This means your web server was unable to connect to %s.', 'wp-mail-smtp' ),
+ $smtp_host
+ )
+ : esc_html__( 'This means your web server was unable to connect to the host server.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned for one of the following reasons:', 'wp-mail-smtp' ),
+ '
', array_filter( $errors ) ) . ''
+ . '
',
+ ],
+ 'steps' => [
+ esc_html__( 'Triple check your SMTP settings including host address, email, and password, port, and security.', 'wp-mail-smtp' ),
+ sprintf(
+ wp_kses( /* translators: %1$s - SMTP host address, %2$s - SMTP port, %3$s - SMTP encryption. */
+ __( 'Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ 'strong' => [],
+ 'br' => [],
+ ]
+ ),
+ $smtp_host,
+ $smtp_port,
+ 'none' === $smtp_encryption ? esc_html__( 'no', 'wp-mail-smtp' ) : $smtp_encryption
+ ),
+ esc_html__( 'Contact your SMTP host to confirm you are using the correct username and password.', 'wp-mail-smtp' ),
+ esc_html__( 'Verify with your SMTP host that your account has permissions to send emails using outside connections.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [mailgun] - Please activate your Mailgun account.
+ [
+ 'mailer' => 'mailgun',
+ 'errors' => [
+ [ 'Please activate your Mailgun account' ],
+ ],
+ 'title' => esc_html__( 'Mailgun failed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'It seems that you forgot to activate your Mailgun account.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun.', 'wp-mail-smtp' ),
+ esc_html__( 'If you do not see activation email, go to your Mailgun control panel and resend the activation email.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [mailgun] - Forbidden.
+ [
+ 'mailer' => 'mailgun',
+ 'errors' => [
+ [ 'Forbidden' ],
+ ],
+ 'title' => esc_html__( 'Mailgun failed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Typically this error occurs because there is an issue with your Mailgun settings, in many cases Mailgun API Key, Domain Name, or Region is incorrect.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ sprintf(
+ wp_kses( /* translators: %1$s - Mailgun API Key area URL. */
+ __( 'Go to your Mailgun account and verify that your Mailgun API Key is correct.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://app.mailgun.com/settings/api_security'
+ ),
+ sprintf(
+ wp_kses( /* translators: %1$s - Mailgun domains area URL. */
+ __( 'Verify your Domain Name is correct.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://app.mailgun.com/app/sending/domains'
+ ),
+ esc_html__( 'Verify your domain Region is correct.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [mailgun] - Free accounts are for test purposes only.
+ [
+ 'mailer' => 'mailgun',
+ 'errors' => [
+ [ 'Free accounts are for test purposes only' ],
+ ],
+ 'title' => esc_html__( 'Mailgun failed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Your Mailgun account does not have access to send emails.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error occurs because you have not set up and/or complete domain name verification for your Mailgun account.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ sprintf(
+ wp_kses( /* translators: %s - Mailgun documentation URL. */
+ __( 'Go to our how-to guide for setting up Mailgun with WP Mail SMTP.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-mailgun-mailer-in-wp-mail-smtp/', [ 'medium' => 'email-test', 'content' => 'Mailgun with WP Mail SMTP' ] ) )
+ ),
+ esc_html__( 'Complete the steps in section "2. Verify Your Domain".', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [gmail] - 401: Login Required.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ '401', 'Login Required' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'You have not properly configured Gmail mailer.', 'wp-mail-smtp' ),
+ esc_html__( 'Make sure that you have clicked the "Allow plugin to send emails using your Google account" button under Gmail settings.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Go to plugin Settings page and click the "Allow plugin to send emails using your Google account" button.', 'wp-mail-smtp' ),
+ esc_html__( 'After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf.', 'wp-mail-smtp' ),
+ esc_html__( 'Please click "Agree", if you see that button. If not - you will need to enable less secure apps first:', 'wp-mail-smtp' )
+ . ''
+ . '
',
+ ],
+ ],
+ // [gmail] - 400: Recipient address required.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ '400', 'Recipient address required' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Typically this error occurs because the address to which the email was sent to is invalid or was empty.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Check the "Send To" email address used and confirm it is a valid email and was not empty.', 'wp-mail-smtp' ),
+ sprintf( /* translators: 1 - correct email address example. 2 - incorrect email address example. */
+ esc_html__( 'It should be something like this: %1$s. These are incorrect values: %2$s.', 'wp-mail-smtp' ),
+ 'info@example.com
',
+ 'info@localhost
, info@192.168.1.1
'
+ ),
+ esc_html__( 'Make sure that the generated email has a TO header, useful when you are responsible for email creation.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [gmail] - Token has been expired or revoked.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ 'invalid_grant', 'Token has been expired or revoked' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Unfortunately, this error can be due to many different reasons.', 'wp-mail-smtp' ),
+ sprintf(
+ wp_kses( /* translators: %s - Blog article URL. */
+ __( 'Please read this article to learn more about what can cause this error and follow the steps below.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'target' => [],
+ 'rel' => [],
+ ],
+ ]
+ ),
+ 'https://blog.timekit.io/google-oauth-invalid-grant-nightmare-and-how-to-fix-it-9f4efaf1da35'
+ ),
+ ],
+ 'steps' => [
+ esc_html__( 'Go to WP Mail SMTP plugin settings page. Click the “Remove OAuth Connection” button.', 'wp-mail-smtp' ),
+ esc_html__( 'Then click the “Allow plugin to send emails using your Google account” button and re-enable access.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [gmail] - Code was already redeemed.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ 'invalid_grant', 'Code was already redeemed' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Authentication code that Google returned to you has already been used on your previous auth attempt.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Make sure that you are not trying to manually clean up the plugin options to retry the "Allow..." step.', 'wp-mail-smtp' ),
+ esc_html__( 'Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry.', 'wp-mail-smtp' ),
+ esc_html__( 'Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [gmail] - 400: Mail service not enabled.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ '400', 'Mail service not enabled' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'There are various reasons for that, please review the steps below.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ sprintf(
+ wp_kses( /* translators: %s - Google Workspace Admin area URL. */
+ __( 'Make sure that your Google Workspace trial period has not expired. You can check the status here.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://admin.google.com'
+ ),
+ sprintf(
+ wp_kses( /* translators: %s - Google Workspace Admin area URL. */
+ __( 'Make sure that Gmail app in your Google Workspace is actually enabled. You can check that in Apps list in Google Workspace Admin area.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://admin.google.com'
+ ),
+ sprintf(
+ wp_kses( /* translators: %s - Google Developers Console URL. */
+ __( 'Make sure that you have Gmail API enabled, and you can do that here.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ 'https://console.developers.google.com/'
+ ),
+ ],
+ ],
+ // [gmail] - 403: Project X is not found and cannot be used for API calls.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ '403', 'is not found and cannot be used for API calls' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [],
+ 'steps' => [
+ esc_html__( 'Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled.', 'wp-mail-smtp' ),
+ sprintf(
+ wp_kses( /* translators: %s - Gmail documentation URL. */
+ esc_html__( 'Please follow our Gmail tutorial to be sure that all the correct project and data is applied.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/', [ 'medium' => 'email-test', 'content' => 'Gmail tutorial' ] ) )
+ ),
+ ],
+ ],
+ // [gmail] - The OAuth client was disabled.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ 'disabled_client', 'The OAuth client was disabled' ],
+ ],
+ 'title' => esc_html__( 'Google API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'You may have added a new API to a project', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled.', 'wp-mail-smtp' ),
+ esc_html__( 'Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [SMTP.com] - The "channel - not found" issue.
+ [
+ 'mailer' => 'smtpcom',
+ 'errors' => [
+ [ 'channel - not found' ],
+ ],
+ 'title' => esc_html__( 'SMTP.com API Error.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Your Sender Name option is incorrect.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [gmail] - GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.
+ [
+ 'mailer' => 'gmail',
+ 'errors' => [
+ [ 'GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler' ],
+ ],
+ 'title' => esc_html__( 'GuzzleHttp requirements.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Edit your php.ini file on your hosting server.', 'wp-mail-smtp' ),
+ esc_html__( '(Recommended) Enable PHP extension: cURL, by adding "extension=curl" to the php.ini file (without the quotation marks) OR', 'wp-mail-smtp' ),
+ esc_html__( '(If cURL can\'t be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding "allow_url_fopen = On" to the php.ini file (without the quotation marks)', 'wp-mail-smtp' ),
+ esc_html__( 'If you don\'t know how to do the above we strongly suggest contacting your hosting support and provide them the "full Error Log for debugging" below and these steps. They should be able to fix this issue for you.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [sparkpost] - Forbidden.
+ [
+ 'mailer' => 'sparkpost',
+ 'errors' => [
+ [ 'Forbidden' ],
+ ],
+ 'title' => esc_html__( 'SparkPost API failed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Typically this error occurs because there is an issue with your SparkPost settings, in many cases an incorrect API key.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ sprintf(
+ wp_kses( /* translators: %1$s - SparkPost API Keys area URL, %1$s - SparkPost EU API Keys area URL. */
+ __( 'Go to your SparkPost account or SparkPost EU account and verify that your API key is correct.', 'wp-mail-smtp' ),
+ [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ 'b' => [],
+ ]
+ ),
+ 'https://app.sparkpost.com/account/api-keys',
+ 'https://app.eu.sparkpost.com/account/api-keys'
+ ),
+ esc_html__( 'Verify that your API key has "Transmissions: Read/Write" permission.', 'wp-mail-smtp' ),
+ ],
+ ],
+ // [sparkpost] - Unauthorized.
+ [
+ 'mailer' => 'sparkpost',
+ 'errors' => [
+ [ 'Unauthorized' ],
+ ],
+ 'title' => esc_html__( 'SparkPost API failed.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'Typically this error occurs because there is an issue with your SparkPost settings, in many cases an incorrect region.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Verify that your SparkPost account region is selected in WP Mail SMTP settings.', 'wp-mail-smtp' ),
+ ],
+ ],
+ ];
+
+ /**
+ * [any] - PHP 7.4.x and PCRE library issues.
+ *
+ * @see https://wordpress.org/support/topic/cant-send-emails-using-php-7-4/
+ */
+ if (
+ version_compare( phpversion(), '7.4', '>=' ) &&
+ defined( 'PCRE_VERSION' ) &&
+ version_compare( PCRE_VERSION, '10.0', '>' ) &&
+ version_compare( PCRE_VERSION, '10.32', '<=' )
+ ) {
+ $details[] = [
+ 'mailer' => 'any',
+ 'errors' => [
+ [ 'Invalid address: (setFrom)' ],
+ ],
+ 'title' => esc_html__( 'PCRE library issue', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation.', 'wp-mail-smtp' ),
+ esc_html__( 'There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33.', 'wp-mail-smtp' ),
+ ],
+ 'steps' => [
+ esc_html__( 'Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4.', 'wp-mail-smtp' ),
+ esc_html__( 'They should be able to resolve this issue for you.', 'wp-mail-smtp' ),
+ esc_html__( 'For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server.', 'wp-mail-smtp' ),
+ ],
+ ];
+ }
+
+ // Error detection logic.
+ foreach ( $details as $data ) {
+
+ // Check for appropriate mailer.
+ if ( 'any' !== $data['mailer'] && $this->debug['mailer'] !== $data['mailer'] ) {
+ continue;
+ }
+
+ $match = false;
+
+ // Attempt to detect errors.
+ foreach ( $data['errors'] as $error_group ) {
+ foreach ( $error_group as $error_message ) {
+ $match = false !== strpos( $this->debug['error_log'], $error_message );
+ if ( ! $match ) {
+ break;
+ }
+ }
+ if ( $match ) {
+ break;
+ }
+ }
+
+ if ( $match ) {
+ return $data;
+ }
+ }
+
+ // Return defaults.
+ return [
+ 'title' => esc_html__( 'An issue was detected.', 'wp-mail-smtp' ),
+ 'description' => [
+ esc_html__( 'This means your test email was unable to be sent.', 'wp-mail-smtp' ),
+ esc_html__( 'Typically this error is returned for one of the following reasons:', 'wp-mail-smtp' ),
+ ''
+ . '
',
+ ],
+ 'steps' => [
+ esc_html__( 'Triple-check the plugin settings and consider reconfiguring to make sure everything is correct. Maybe there was an issue with copy&pasting.', 'wp-mail-smtp' ),
+ wp_kses(
+ __( 'Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue.', 'wp-mail-smtp' ),
+ [
+ 'strong' => [],
+ 'br' => [],
+ ]
+ ),
+ esc_html__( 'Try using a different mailer.', 'wp-mail-smtp' ),
+ ],
+ ];
+ }
+
+ /**
+ * Displays all the various error and debug details.
+ *
+ * @since 1.3.0
+ */
+ protected function display_debug_details() {
+
+ if ( empty( $this->debug ) ) {
+ return;
+ }
+
+ $debug = $this->get_debug_details();
+ $allowed_tags = [
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ 'p' => [],
+ 'strong' => [],
+ 'b' => [],
+ 'i' => [],
+ 'br' => [],
+ 'code' => [],
+ 'ul' => [],
+ 'ol' => [],
+ 'li' => [],
+ 'pre' => [],
+ ];
+
+ $this->display_title_section();
+ ?>
+
+
+
+
+
+
+
+
+ is_pro() ) : ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ get_license_features() as $slug => $name ) {
+ $current = $this->get_license_data( $slug, $license );
+ $pro = $this->get_license_data( $slug, 'pro' );
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
' . esc_html__( 'Access is limited to standard mailer options only', 'wp-mail-smtp' ),
+ ],
+ ],
+ 'pro' => [
+ 'status' => 'full',
+ 'text' => [
+ '' . esc_html__( 'Additional Mailer Options', 'wp-mail-smtp' ) . '
' . esc_html__( 'Microsoft Outlook (with Office365 support), Amazon SES and Zoho Mail', 'wp-mail-smtp' ),
+ ],
+ ],
+ ],
+ 'multisite' => [
+ 'lite' => [
+ 'status' => 'none',
+ 'text' => [
+ '' . esc_html__( 'No Global Network Settings', 'wp-mail-smtp' ) . '',
+ ],
+ ],
+ 'pro' => [
+ 'status' => 'full',
+ 'text' => [
+ '' . esc_html__( 'All Global Network Settings', 'wp-mail-smtp' ) . '
' . esc_html__( 'Optionally configure settings at the network level or manage separately for each subsite', 'wp-mail-smtp' ),
+ ],
+ ],
+ ],
+ 'support' => [
+ 'lite' => [
+ 'status' => 'none',
+ 'text' => [
+ '' . esc_html__( 'Limited Support', 'wp-mail-smtp' ) . '',
+ ],
+ ],
+ 'pro' => [
+ 'status' => 'full',
+ 'text' => [
+ '' . esc_html__( 'Priority Support', 'wp-mail-smtp' ) . '',
+ ],
+ ],
+ ],
+ ];
+
+ // Wrong feature?
+ if ( ! isset( $data[ $feature ] ) ) {
+ return false;
+ }
+
+ // Wrong license type?
+ if ( ! isset( $data[ $feature ][ $license ] ) ) {
+ return false;
+ }
+
+ return $data[ $feature ][ $license ];
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Admin/ParentPageAbstract.php b/wp-content/plugins/wp-mail-smtp/src/Admin/ParentPageAbstract.php
new file mode 100644
index 000000000..9f9b536ac
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Admin/ParentPageAbstract.php
@@ -0,0 +1,381 @@
+slug . '_tabs', $tabs );
+
+ if ( wp_mail_smtp()->get_admin()->is_admin_page( $this->slug ) ) {
+ $this->init_tabs( $tabs );
+ $this->hooks();
+ }
+
+ if ( WP::is_doing_self_ajax() ) {
+ $this->init_ajax( $tabs );
+ }
+ }
+
+ /**
+ * Hooks.
+ *
+ * @since 2.8.0
+ */
+ protected function hooks() {
+
+ add_action( 'admin_init', [ $this, 'process_actions' ] );
+
+ // Register tab related hooks.
+ if ( isset( $this->tabs[ $this->get_current_tab() ] ) ) {
+ $this->tabs[ $this->get_current_tab() ]->hooks();
+ }
+ }
+
+ /**
+ * Initialize ajax actions.
+ *
+ * @since 3.0.0
+ *
+ * @param array $tabs Page tabs.
+ */
+ private function init_ajax( $tabs ) {
+
+ foreach ( $tabs as $tab ) {
+ if ( $this->is_valid_tab( $tab ) ) {
+ ( new $tab( $this ) )->ajax();
+ }
+ }
+ }
+
+ /**
+ * Get the page slug.
+ *
+ * @since 2.8.0
+ *
+ * @return string
+ */
+ public function get_slug() {
+
+ return $this->slug;
+ }
+
+ /**
+ * Get the page tabs.
+ *
+ * @since 2.8.0
+ *
+ * @return PageAbstract[]
+ */
+ public function get_tabs() {
+
+ return $this->tabs;
+ }
+
+ /**
+ * Get the page tabs slugs.
+ *
+ * @since 2.8.0
+ *
+ * @return string[]
+ */
+ public function get_tabs_slugs() {
+
+ return array_map(
+ function ( $tab ) {
+ return $tab->get_slug();
+ },
+ $this->tabs
+ );
+ }
+
+ /**
+ * Get the page/tab link.
+ *
+ * @since 2.8.0
+ *
+ * @param string $tab Tab to generate a link to.
+ *
+ * @return string
+ */
+ public function get_link( $tab = '' ) {
+
+ return add_query_arg(
+ 'tab',
+ $this->get_defined_tab( $tab ),
+ WP::admin_url( 'admin.php?page=' . Area::SLUG . '-' . $this->slug )
+ );
+ }
+
+ /**
+ * Get the current tab.
+ *
+ * @since 2.8.0
+ *
+ * @return string
+ */
+ public function get_current_tab() {
+
+ $tab = isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+
+ return $this->get_defined_tab( $tab );
+ }
+
+ /**
+ * Get the tab label.
+ *
+ * @since 2.9.0
+ *
+ * @param string $tab Tab key.
+ *
+ * @return string
+ */
+ public function get_tab_label( $tab ) {
+
+ $tabs = $this->get_tabs();
+
+ return isset( $tabs[ $tab ] ) ? $tabs[ $tab ]->get_label() : '';
+ }
+
+ /**
+ * Get the tab title.
+ *
+ * @since 2.9.0
+ *
+ * @param string $tab Tab key.
+ *
+ * @return string
+ */
+ public function get_tab_title( $tab ) {
+
+ $tabs = $this->get_tabs();
+
+ return isset( $tabs[ $tab ] ) ? $tabs[ $tab ]->get_title() : '';
+ }
+
+ /**
+ * Get the defined or default tab.
+ *
+ * @since 2.8.0
+ *
+ * @param string $tab Tab to check.
+ *
+ * @return string Defined tab. Fallback to default one if it doesn't exist.
+ */
+ protected function get_defined_tab( $tab ) {
+
+ $tab = sanitize_key( $tab );
+
+ return in_array( $tab, $this->get_tabs_slugs(), true ) ? $tab : $this->default_tab;
+ }
+
+ /**
+ * Initialize tabs.
+ *
+ * @since 2.8.0
+ *
+ * @param array $tabs Page tabs.
+ */
+ public function init_tabs( $tabs ) {
+
+ foreach ( $tabs as $key => $tab ) {
+ if ( ! $this->is_valid_tab( $tab ) ) {
+ continue;
+ }
+
+ $this->tabs[ $key ] = new $tab( $this );
+ }
+
+ // Sort tabs by priority.
+ $this->sort_tabs();
+ }
+
+ /**
+ * All possible plugin forms manipulation and hooks registration will be done here.
+ *
+ * @since 2.8.0
+ */
+ public function process_actions() {
+
+ $tabs = $this->get_tabs_slugs();
+
+ // Allow to process only own tabs.
+ if ( ! array_key_exists( $this->get_current_tab(), $tabs ) ) {
+ return;
+ }
+
+ // Process POST only if it exists.
+ // phpcs:disable WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
+ if ( ! empty( $_POST ) && isset( $_POST['wp-mail-smtp-post'] ) ) {
+ if ( ! empty( $_POST['wp-mail-smtp'] ) ) {
+ $post = $_POST['wp-mail-smtp'];
+ } else {
+ $post = [];
+ }
+
+ $this->tabs[ $this->get_current_tab() ]->process_post( $post );
+ }
+ // phpcs:enable
+
+ // This won't do anything for most pages.
+ // Works for plugin page only, when GET params are allowed.
+ $this->tabs[ $this->get_current_tab() ]->process_auth();
+ }
+
+ /**
+ * Display page content based on the current tab.
+ *
+ * @since 2.8.0
+ */
+ public function display() {
+
+ $current_tab = $this->get_current_tab();
+ $page_slug = $this->slug;
+ ?>
+ %s
', esc_html( $tab->get_title() ) );
+
+ /**
+ * Fires before tab content.
+ *
+ * @since 2.8.0
+ *
+ * @param PageAbstract $tab Current tab.
+ */
+ do_action( 'wp_mail_smtp_admin_pages_before_content', $tab );
+
+ /**
+ * Fires before tab content.
+ *
+ * @since 2.9.0
+ *
+ * @param PageAbstract $tab Current tab.
+ */
+ do_action( "wp_mail_smtp_admin_page_{$page_slug}_{$current_tab}_display_before", $tab );
+
+ $tab->display();
+
+ /**
+ * Fires after tab content.
+ *
+ * @since 2.8.0
+ *
+ * @param PageAbstract $tab Current tab.
+ */
+ do_action( "wp_mail_smtp_admin_page_{$page_slug}_{$current_tab}_display_after", $tab );
+
+ break;
+ }
+ }
+ ?>
+
applied at checkout.', 'wp-mail-smtp' ),
+ [
+ 'strong' => [],
+ 'span' => [
+ 'class' => [],
+ ],
+ 'br' => [],
+ ]
+ ),
+ '$50'
+ ),
+ 'upgrade_doc' => sprintf(
+ '%2$s',
+ // phpcs:ignore WordPress.Arrays.ArrayDeclarationSpacing.AssociativeArrayFound
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-upgrade-wp-mail-smtp-to-pro-version/', [ 'medium' => 'setup-wizard', 'content' => 'Wizard Pro Mailer Popup - Already purchased' ] ) ),
+ esc_html__( 'Already purchased?', 'wp-mail-smtp' )
+ )
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Outputs the simplified header used for the Setup Wizard.
+ *
+ * @since 2.6.0
+ */
+ public function setup_wizard_header() {
+ ?>
+
+ >
+
+
+
+
+
+ WPMS_DO_NOT_SEND
',
+ 'false
'
+ );
+ } else {
+ $notices[] = sprintf(
+ /* translators: %s - plugin Misc settings page URL. */
+ __( 'To send emails, go to plugin Misc settings and disable the "Do Not Send" option.', 'wp-mail-smtp' ),
+ esc_url( add_query_arg( 'tab', 'misc', wp_mail_smtp()->get_admin()->get_admin_page_url() ) )
+ );
+ }
+
+ if (
+ wp_mail_smtp()->get_admin()->is_admin_page( 'tools' ) &&
+ (
+ ! isset( $_GET['tab'] ) ||
+ ( isset( $_GET['tab'] ) && $_GET['tab'] === 'test' )
+ )
+ ) {
+ $notices[] = esc_html__( 'If you create a test email on this page, it will still be sent.', 'wp-mail-smtp' );
+ }
+
+ echo wp_kses_post( implode( ' ', $notices ) );
+ ?>
+
+
+
+
+
' . sprintf(
+ /* translators: %s - plugin name. */
+ esc_html__( 'It looks like the "%s" plugin is overwriting the "wp_mail" function. Please reach out to the plugin developer on how to disable or remove the "wp_mail" function overwrite to prevent conflicts with WP Mail SMTP.', 'wp-mail-smtp' ),
+ esc_html( $conflict['name'] )
+ );
+ } elseif ( $conflict['type'] === 'mu-plugin' ) {
+ $message .= '
' . sprintf(
+ /* translators: %s - must-use plugin name. */
+ esc_html__( 'It looks like the "%s" must-use plugin is overwriting the "wp_mail" function. Please reach out to your hosting provider on how to disable or remove the "wp_mail" function overwrite to prevent conflicts with WP Mail SMTP.', 'wp-mail-smtp' ),
+ esc_html( $conflict['name'] )
+ );
+ } elseif ( $wp_mail_filepath === ABSPATH . 'wp-config.php' ) {
+ $message .= '
' . esc_html__( 'It looks like it\'s overwritten in the "wp-config.php" file. Please reach out to your hosting provider on how to disable or remove the "wp_mail" function overwrite to prevent conflicts with WP Mail SMTP.', 'wp-mail-smtp' );
+ }
+
+ $message .= '
' . sprintf(
+ /* translators: %s - path. */
+ esc_html__( 'Current function path: %s', 'wp-mail-smtp' ),
+ $wp_mail_filepath . ':' . $wp_mail_reflection->getStartLine()
+ );
+
+ printf(
+ '
%s',
+ [
+ 'br' => [],
+ ]
+ ),
+ implode( '
', $reasons )
+ );
+ } else {
+ $msg = esc_html__( 'Some DB Tables are still missing.', 'wp-mail-smtp' );
+ }
+
+ WP::add_admin_notice(
+ $msg,
+ WP::ADMIN_NOTICE_ERROR
+ );
+ }
+ }
+
+ /**
+ * Get the missing tables.
+ *
+ * @since 3.6.0
+ *
+ * @return array The array of the missing tables.
+ */
+ protected function get_missing_tables() {
+
+ $site_health = new SiteHealth();
+
+ return $site_health->get_missing_db_tables();
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Debug.php b/wp-content/plugins/wp-mail-smtp/src/Debug.php
new file mode 100644
index 000000000..91ed2ded9
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Debug.php
@@ -0,0 +1,199 @@
+ $e->getMessage() );
+ * $debug = Debug::get(); // array
+ * $debug = Debug::get_last(); // string
+ *
+ * @since 1.2.0
+ */
+class Debug {
+
+ /**
+ * Key for options table where all messages will be saved to.
+ *
+ * @since 1.2.0
+ */
+ const OPTION_KEY = 'wp_mail_smtp_debug';
+
+ /**
+ * Hold the cached error messages.
+ *
+ * @since 3.0.0
+ *
+ * @var array
+ */
+ private static $cached_messages;
+
+ /**
+ * Save unique debug message to a debug log.
+ * Adds one more to a list, at the end.
+ *
+ * @since 1.2.0
+ * @since 3.0.0 Start saving the Debug Event IDs, instead of error messages.
+ * @since 3.5.0 Returns Event ID.
+ *
+ * @param mixed $message An array or string error message.
+ *
+ * @return bool|int
+ */
+ public static function set( $message ) {
+
+ if ( empty( $message ) ) {
+ return false;
+ }
+
+ self::clear_cache();
+
+ // Log the error message to the Debug Events.
+ $event_id = DebugEvents::add( $message );
+
+ $all = self::get_raw();
+
+ if ( ! empty( $event_id ) ) {
+ array_push( $all, $event_id );
+ } else {
+ if ( ! is_string( $message ) ) {
+ $message = wp_json_encode( $message );
+ } else {
+ $message = wp_strip_all_tags( $message, false );
+ }
+
+ array_push( $all, $message );
+ }
+
+ update_option( self::OPTION_KEY, array_unique( $all ), false );
+
+ return $event_id;
+ }
+
+ /**
+ * Remove all messages for a debug log.
+ *
+ * @since 1.2.0
+ */
+ public static function clear() {
+
+ self::clear_cache();
+
+ update_option( self::OPTION_KEY, [], false );
+ }
+
+ /**
+ * Clear cached error messages.
+ *
+ * @since 3.0.0
+ */
+ private static function clear_cache() {
+
+ self::$cached_messages = null;
+ }
+
+ /**
+ * Get the raw DB debug option values.
+ *
+ * @since 3.0.0
+ */
+ private static function get_raw() {
+
+ $all = get_option( self::OPTION_KEY, [] );
+
+ if ( ! is_array( $all ) ) {
+ $all = (array) $all;
+ }
+
+ return $all;
+ }
+
+ /**
+ * Retrieve all messages from a debug log.
+ *
+ * @since 1.2.0
+ *
+ * @return array
+ */
+ public static function get() {
+
+ if ( isset( self::$cached_messages ) ) {
+ return self::$cached_messages;
+ }
+
+ $all = self::get_raw();
+
+ if ( empty( $all ) ) {
+ self::$cached_messages = [];
+
+ return [];
+ }
+
+ $event_ids = [];
+ $old_messages = [];
+
+ foreach ( $all as $item ) {
+ if ( is_int( $item ) ) {
+ $event_ids[] = (int) $item;
+ } else {
+ $old_messages[] = $item;
+ }
+ }
+
+ $event_messages = DebugEvents::get_debug_messages( $event_ids );
+ self::$cached_messages = array_unique( array_merge( $old_messages, $event_messages ) );
+
+ return self::$cached_messages;
+ }
+
+ /**
+ * Get the last message that was saved to a debug log.
+ *
+ * @since 1.2.0
+ *
+ * @return string
+ */
+ public static function get_last() {
+
+ $all = self::get();
+
+ if ( ! empty( $all ) && is_array( $all ) ) {
+ return (string) end( $all );
+ }
+
+ return '';
+ }
+
+ /**
+ * Get the proper variable content output to debug.
+ *
+ * @since 1.2.0
+ *
+ * @param mixed $var Variable to output.
+ *
+ * @return string
+ */
+ public static function pvar( $var = '' ) {
+
+ ob_start();
+
+ echo '';
+
+ if ( is_bool( $var ) || empty( $var ) ) {
+ var_dump( $var );
+ } else {
+ print_r( $var );
+ }
+
+ echo '
';
+
+ $output = ob_get_clean();
+
+ return str_replace( array( "\r\n", "\r", "\n" ), '', $output );
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Geo.php b/wp-content/plugins/wp-mail-smtp/src/Geo.php
new file mode 100644
index 000000000..86e51edfc
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Geo.php
@@ -0,0 +1,225 @@
+ sanitize_text_field( $request['latitude'] ),
+ 'longitude' => sanitize_text_field( $request['longitude'] ),
+ 'city' => isset( $request['city'] ) ? sanitize_text_field( $request['city'] ) : '',
+ 'region' => isset( $request['region_name'] ) ? sanitize_text_field( $request['region_name'] ) : '',
+ 'country' => isset( $request['country_iso'] ) ? sanitize_text_field( $request['country_iso'] ) : '',
+ 'postal' => isset( $request['zip_code'] ) ? sanitize_text_field( $request['zip_code'] ) : '',
+ ];
+
+ return $data;
+ }
+ }
+
+ $request = wp_remote_get( 'https://ipapi.co/' . $ip . '/json' );
+
+ if ( ! is_wp_error( $request ) ) {
+
+ $request = json_decode( wp_remote_retrieve_body( $request ), true );
+
+ if ( ! empty( $request['latitude'] ) && ! empty( $request['longitude'] ) ) {
+
+ $data = [
+ 'latitude' => sanitize_text_field( $request['latitude'] ),
+ 'longitude' => sanitize_text_field( $request['longitude'] ),
+ 'city' => isset( $request['city'] ) ? sanitize_text_field( $request['city'] ) : '',
+ 'region' => isset( $request['region'] ) ? sanitize_text_field( $request['region'] ) : '',
+ 'country' => isset( $request['country'] ) ? sanitize_text_field( $request['country'] ) : '',
+ 'postal' => isset( $request['postal'] ) ? sanitize_text_field( $request['postal'] ) : '',
+ ];
+
+ return $data;
+ }
+ }
+
+ $request = wp_remote_get(
+ 'https://tools.keycdn.com/geo.json?host=' . $ip,
+ [
+ 'user-agent' => 'keycdn-tools:' . get_home_url(),
+ ]
+ );
+
+ if ( ! is_wp_error( $request ) ) {
+
+ $request = json_decode( wp_remote_retrieve_body( $request ), true );
+
+ if ( ! empty( $request['data']['geo']['latitude'] ) && ! empty( $request['data']['geo']['longitude'] ) ) {
+
+ $data = [
+ 'latitude' => sanitize_text_field( $request['data']['geo']['latitude'] ),
+ 'longitude' => sanitize_text_field( $request['data']['geo']['longitude'] ),
+ 'city' => isset( $request['data']['geo']['city'] ) ? sanitize_text_field( $request['data']['geo']['city'] ) : '',
+ 'region' => isset( $request['data']['geo']['region_name'] ) ? sanitize_text_field( $request['data']['geo']['region_name'] ) : '',
+ 'country' => isset( $request['data']['geo']['country_code'] ) ? sanitize_text_field( $request['data']['geo']['country_code'] ) : '',
+ 'postal' => isset( $request['data']['geo']['postal_code'] ) ? sanitize_text_field( $request['data']['geo']['postal_code'] ) : '',
+ ];
+
+ return $data;
+ }
+ }
+
+ return [];
+ }
+
+ /**
+ * This routine calculates the distance between two points (given the latitude/longitude of those points).
+ * Definitions: South latitudes are negative, east longitudes are positive.
+ *
+ * @see https://www.geodatasource.com/developers/php
+ *
+ * @since 1.5.0
+ *
+ * @param float $lat1 Latitude of point 1 (in decimal degrees).
+ * @param float $lon1 Longitude of point 1 (in decimal degrees).
+ * @param float $lat2 Latitude of point 2 (in decimal degrees).
+ * @param float $lon2 Longitude of point 2 (in decimal degrees).
+ * @param string $unit Supported values: M, K, N. Miles by default.
+ *
+ * @return float|int
+ */
+ public static function get_distance_between( $lat1, $lon1, $lat2, $lon2, $unit = 'M' ) {
+
+ if ( ( $lat1 === $lat2 ) && ( $lon1 === $lon2 ) ) {
+ return 0;
+ }
+
+ $theta = $lon1 - $lon2;
+ $dist = sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $theta ) );
+ $dist = acos( $dist );
+ $dist = rad2deg( $dist );
+ $miles = $dist * 60 * 1.1515;
+ $unit = strtoupper( $unit );
+
+ if ( $unit === 'K' ) {
+ return ( $miles * 1.609344 );
+ } elseif ( $unit === 'N' ) {
+ return ( $miles * 0.8684 );
+ }
+
+ return $miles;
+ }
+
+ /**
+ * Get the user IP address.
+ *
+ * @since 3.11.0
+ *
+ * Code based on the:
+ * - WordPress method \WP_Community_Events::get_unsafe_client_ip
+ * - Cloudflare documentation https://support.cloudflare.com/hc/en-us/articles/206776727
+ *
+ * @return string
+ */
+ public static function get_ip() {
+
+ $ip = '127.0.0.1';
+
+ $address_headers = [
+ 'HTTP_TRUE_CLIENT_IP',
+ 'HTTP_CF_CONNECTING_IP',
+ 'HTTP_X_REAL_IP',
+ 'HTTP_CLIENT_IP',
+ 'HTTP_X_FORWARDED_FOR',
+ 'HTTP_X_FORWARDED',
+ 'HTTP_X_CLUSTER_CLIENT_IP',
+ 'HTTP_FORWARDED_FOR',
+ 'HTTP_FORWARDED',
+ 'REMOTE_ADDR',
+ ];
+
+ foreach ( $address_headers as $header ) {
+ if ( empty( $_SERVER[ $header ] ) ) {
+ continue;
+ }
+
+ /*
+ * HTTP_X_FORWARDED_FOR can contain a chain of comma-separated addresses, with or without spaces.
+ * The first address is the original client. It can't be trusted for authenticity,
+ * but we don't need to for this purpose.
+ */
+
+ // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
+ $address_chain = explode( ',', wp_unslash( $_SERVER[ $header ] ) );
+ $ip = filter_var( trim( $address_chain[0] ), FILTER_VALIDATE_IP );
+
+ break;
+ }
+
+ /**
+ * Filter detected IP address.
+ *
+ * @since 3.11.0
+ *
+ * @param string $ip IP address.
+ */
+ return filter_var( apply_filters( 'wp_mail_smtp_geo_get_ip', $ip ), FILTER_VALIDATE_IP );
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Helpers/Crypto.php b/wp-content/plugins/wp-mail-smtp/src/Helpers/Crypto.php
new file mode 100644
index 000000000..4f617d807
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Helpers/Crypto.php
@@ -0,0 +1,163 @@
+prepare(
+ 'SELECT COUNT(1) IndexIsThere
+ FROM INFORMATION_SCHEMA.STATISTICS
+ WHERE table_schema = DATABASE()
+ AND table_name = %s
+ AND index_name = %s',
+ $table,
+ $index
+ );
+
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
+ $result = $wpdb->get_var( $query );
+
+ return $result === '1';
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Helpers/Helpers.php b/wp-content/plugins/wp-mail-smtp/src/Helpers/Helpers.php
new file mode 100644
index 000000000..e9e7821f9
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Helpers/Helpers.php
@@ -0,0 +1,181 @@
+get( 'mail', 'mailer' ),
+ [
+ 'sendlayer',
+ 'smtpcom',
+ 'sendinblue',
+ 'mailgun',
+ 'postmark',
+ 'sparkpost',
+ 'smtp2go',
+ ],
+ true
+ );
+ }
+
+ /**
+ * Include mbstring polyfill.
+ *
+ * @since 3.1.0
+ */
+ public static function include_mbstring_polyfill() {
+
+ static $included = false;
+
+ if ( $included === true ) {
+ return;
+ }
+
+ require_once wp_mail_smtp()->plugin_path . '/vendor_prefixed/symfony/polyfill-mbstring/Mbstring.php';
+ require_once wp_mail_smtp()->plugin_path . '/vendor_prefixed/symfony/polyfill-mbstring/bootstrap.php';
+
+ $included = true;
+ }
+
+ /**
+ * Test if the REST API is accessible.
+ *
+ * @since 3.3.0
+ *
+ * @return true|\WP_Error
+ */
+ public static function test_rest_availability() {
+
+ $headers = [
+ 'Cache-Control' => 'no-cache',
+ ];
+
+ /** This filter is documented in wp-includes/class-wp-http-streams.php */
+ $sslverify = apply_filters( 'https_local_ssl_verify', false );
+
+ $url = rest_url( 'wp-mail-smtp/v1' );
+
+ $response = wp_remote_get(
+ $url,
+ [
+ 'headers' => $headers,
+ 'sslverify' => $sslverify,
+ ]
+ );
+
+ if ( is_wp_error( $response ) ) {
+ return $response;
+ } elseif ( wp_remote_retrieve_response_code( $response ) !== 200 ) {
+ return new WP_Error( wp_remote_retrieve_response_code( $response ), wp_remote_retrieve_body( $response ) );
+ }
+
+ return true;
+ }
+
+ /**
+ * Get string size in bytes.
+ *
+ * @since 3.4.0
+ *
+ * @param string $str String.
+ *
+ * @return int
+ */
+ public static function strsize( $str ) {
+
+ if ( ! function_exists( 'mb_strlen' ) ) {
+ self::include_mbstring_polyfill();
+ }
+
+ return mb_strlen( $str, '8bit' );
+ }
+
+ /**
+ * Format error message.
+ *
+ * @since 3.4.0
+ *
+ * @param string $message Error message.
+ * @param string $code Error code.
+ * @param string $description Error description.
+ *
+ * @return string
+ */
+ public static function format_error_message( $message, $code = '', $description = '' ) {
+
+ $error_text = '';
+
+ if ( ! empty( $code ) ) {
+ $error_text .= $code . ': ';
+ }
+
+ if ( ! is_string( $message ) ) {
+ $error_text .= wp_json_encode( $message );
+ } else {
+ $error_text .= $message;
+ }
+
+ if ( ! empty( $description ) ) {
+ $error_text .= WP::EOL . $description;
+ }
+
+ return $error_text;
+ }
+
+ /**
+ * Get the default user agent.
+ *
+ * @since 3.9.0
+ *
+ * @return string
+ */
+ public static function get_default_user_agent() {
+
+ $license_type = wp_mail_smtp()->get_license_type();
+
+ return 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ) . '; WPMailSMTP/' . $license_type . '-' . WPMS_PLUGIN_VER;
+ }
+
+ /**
+ * Import Plugin_Upgrader class from core.
+ *
+ * @since 3.11.0
+ */
+ public static function include_plugin_upgrader() {
+
+ /** \WP_Upgrader class */
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+
+ /** \Plugin_Upgrader class */
+ require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
+ }
+
+ /**
+ * Whether the current request is a WP CLI request.
+ *
+ * @since 4.0.0
+ */
+ public static function is_wp_cli() {
+
+ return defined( 'WP_CLI' ) && WP_CLI;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Helpers/PluginImportDataRetriever.php b/wp-content/plugins/wp-mail-smtp/src/Helpers/PluginImportDataRetriever.php
new file mode 100644
index 000000000..1561c935e
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Helpers/PluginImportDataRetriever.php
@@ -0,0 +1,323 @@
+slug = $slug;
+ }
+
+ /**
+ * Get the data for the current plugin slug.
+ *
+ * @since 2.6.0
+ *
+ * @return false|array
+ */
+ public function get() {
+
+ $method_name = preg_replace( '/[\-]/', '_', sanitize_key( "get_$this->slug" ) );
+
+ if ( method_exists( $this, $method_name ) ) {
+ return $this->$method_name();
+ }
+
+ return false;
+ }
+
+ /**
+ * Check if Easy WP SMTP plugin settings are present and extract them.
+ *
+ * @since 2.6.0
+ *
+ * @return array
+ */
+ private function get_easy_smtp() {
+
+ $options = get_option( 'swpsmtp_options' );
+
+ if ( empty( $options ) ) {
+ return [];
+ }
+
+ return [
+ 'mail' => [
+ 'mailer' => 'smtp',
+ 'from_email' => isset( $options['from_email_field'] ) ? $options['from_email_field'] : '',
+ 'from_name' => isset( $options['from_name_field'] ) ? $options['from_name_field'] : '',
+ 'from_name_force' => isset( $options['force_from_name_replace'] ) ? $options['force_from_name_replace'] : false,
+ ],
+ 'smtp' => [
+ 'host' => isset( $options['smtp_settings']['host'] ) ? $options['smtp_settings']['host'] : '',
+ 'encryption' => isset( $options['smtp_settings']['type_encryption'] ) ? $options['smtp_settings']['type_encryption'] : 'none',
+ 'port' => isset( $options['smtp_settings']['port'] ) ? $options['smtp_settings']['port'] : 25,
+ 'auth' => isset( $options['smtp_settings']['autentication'] ) ? $options['smtp_settings']['autentication'] : true,
+ 'user' => isset( $options['smtp_settings']['username'] ) ? $options['smtp_settings']['username'] : '',
+ 'pass' => '',
+ 'autotls' => true,
+ ],
+ ];
+ }
+
+ /**
+ * Check if FluentSMTP plugin settings are present and extract them.
+ *
+ * @since 3.2.0
+ *
+ * @return array
+ */
+ private function get_fluent_smtp() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded
+
+ $options = get_option( 'fluentmail-settings' );
+
+ if ( empty( $options ) ) {
+ return [];
+ }
+
+ if ( empty( $options['misc']['default_connection'] ) || empty( $options['connections'][ $options['misc']['default_connection'] ]['provider_settings'] ) ) {
+ return [];
+ }
+
+ $fluent_data = $options['connections'][ $options['misc']['default_connection'] ]['provider_settings'];
+
+ $allowed_mailers = [
+ 'smtp' => 'smtp',
+ 'ses' => 'amazonses',
+ 'mailgun' => 'mailgun',
+ 'sendgrid' => 'sendgrid',
+ 'sendinblue' => 'sendinblue',
+ 'sparkpost' => 'sparkpost',
+ 'postmark' => 'postmark',
+ 'outlook' => 'outlook',
+ ];
+
+ if ( empty( $fluent_data['provider'] ) || ! in_array( $fluent_data['provider'], array_keys( $allowed_mailers ), true ) ) {
+ return [];
+ }
+
+ $data = [
+ 'mail' => [
+ 'mailer' => $allowed_mailers[ $fluent_data['provider'] ],
+ 'from_email' => isset( $fluent_data['sender_email'] ) ? $fluent_data['sender_email'] : '',
+ 'from_name' => isset( $fluent_data['sender_name'] ) ? $fluent_data['sender_name'] : '',
+ 'from_email_force' => isset( $fluent_data['force_from_email'] ) && $fluent_data['force_from_email'] === 'yes',
+ 'from_name_force' => isset( $fluent_data['force_from_name'] ) && $fluent_data['force_from_name'] === 'yes',
+ ],
+ ];
+
+ switch ( $data['mail']['mailer'] ) {
+ case 'smtp':
+ $data['smtp'] = [
+ 'host' => isset( $fluent_data['host'] ) ? $fluent_data['host'] : '',
+ 'encryption' => isset( $fluent_data['encryption'] ) && in_array( $fluent_data['encryption'], [ 'none', 'ssl', 'tls' ], true ) ? $fluent_data['encryption'] : 'none',
+ 'port' => isset( $fluent_data['port'] ) ? $fluent_data['port'] : 25,
+ 'auth' => isset( $fluent_data['auth'] ) && $fluent_data['auth'] === 'yes',
+ 'user' => isset( $fluent_data['username'] ) ? $fluent_data['username'] : '',
+ 'pass' => isset( $fluent_data['password'] ) ? $fluent_data['password'] : '',
+ 'autotls' => isset( $fluent_data['auto_tls'] ) && $fluent_data['auto_tls'] === 'yes',
+ ];
+ break;
+
+ case 'amazonses':
+ $data['amazonses'] = [
+ 'client_id' => isset( $fluent_data['access_key'] ) ? $fluent_data['access_key'] : '',
+ 'client_secret' => isset( $fluent_data['secret_key'] ) ? $fluent_data['secret_key'] : '',
+ 'region' => isset( $fluent_data['region'] ) ? $fluent_data['region'] : '',
+ ];
+ break;
+
+ case 'mailgun':
+ $data['mailgun'] = [
+ 'api_key' => isset( $fluent_data['api_key'] ) ? $fluent_data['api_key'] : '',
+ 'domain' => isset( $fluent_data['domain_name'] ) ? $fluent_data['domain_name'] : '',
+ 'region' => isset( $fluent_data['region'] ) && in_array( $fluent_data['region'], [ 'us', 'eu' ], true ) ? strtoupper( $fluent_data['region'] ) : '',
+ ];
+ break;
+
+ case 'sendgrid':
+ $data['sendgrid'] = [
+ 'api_key' => isset( $fluent_data['api_key'] ) ? $fluent_data['api_key'] : '',
+ ];
+ break;
+
+ case 'sendinblue':
+ $data['sendinblue'] = [
+ 'api_key' => isset( $fluent_data['api_key'] ) ? $fluent_data['api_key'] : '',
+ ];
+ break;
+
+ case 'sparkpost':
+ $data['sparkpost'] = [
+ 'api_key' => isset( $fluent_data['api_key'] ) ? $fluent_data['api_key'] : '',
+ ];
+ break;
+
+ case 'postmark':
+ $data['postmark'] = [
+ 'api_key' => isset( $fluent_data['api_key'] ) ? $fluent_data['api_key'] : '',
+ 'message_stream' => isset( $fluent_data['message_stream'] ) ? $fluent_data['message_stream'] : '',
+ ];
+ break;
+
+ case 'outlook':
+ $data['outlook'] = [
+ 'client_id' => isset( $fluent_data['client_id'] ) ? $fluent_data['client_id'] : '',
+ 'client_secret' => isset( $fluent_data['client_secret'] ) ? $fluent_data['client_secret'] : '',
+ ];
+ break;
+ }
+
+ return $data;
+ }
+
+ /**
+ * Check if Post SMTP Mailer plugin settings are present and extract them.
+ *
+ * @since 2.6.0
+ *
+ * @return array
+ */
+ private function get_post_smtp_mailer() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded
+
+ $options = get_option( 'postman_options' );
+
+ if ( empty( $options ) ) {
+ return [];
+ }
+
+ $allowed_mailers = [
+ 'smtp' => 'smtp',
+ 'gmail_api' => 'gmail',
+ 'sendgrid_api' => 'sendgrid',
+ 'mailgun_api' => 'mailgun',
+ ];
+
+ $data = [
+ 'mail' => [
+ 'mailer' => ( isset( $options['transport_type'] ) && in_array( $options['transport_type'], array_keys( $allowed_mailers ), true ) ) ? $allowed_mailers[ $options['transport_type'] ] : 'mail',
+ 'from_email' => isset( $options['sender_email'] ) ? $options['sender_email'] : '',
+ 'from_name' => isset( $options['sender_name'] ) ? $options['sender_name'] : '',
+ ],
+ 'smtp' => [
+ 'host' => isset( $options['hostname'] ) ? $options['hostname'] : '',
+ 'encryption' => isset( $options['enc_type'] ) ? $options['enc_type'] : 'none',
+ 'port' => isset( $options['port'] ) ? $options['port'] : 25,
+ 'auth' => isset( $options['auth_type'] ) && $options['auth_type'] !== 'none',
+ 'user' => isset( $options['basic_auth_username'] ) ? $options['basic_auth_username'] : '',
+ 'pass' => ! empty( $options['basic_auth_password'] ) ? base64_decode( $options['basic_auth_password'] ) : '', // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
+ 'autotls' => true,
+ ],
+ 'gmail' => [
+ 'client_id' => isset( $options['oauth_client_id'] ) ? $options['oauth_client_id'] : '',
+ 'client_secret' => isset( $options['oauth_client_secret'] ) ? $options['oauth_client_secret'] : '',
+ ],
+ 'sendgrid' => [
+ 'api_key' => ! empty( $options['sendgrid_api_key'] ) ? base64_decode( $options['sendgrid_api_key'] ) : '', // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
+ ],
+ 'mailgun' => [
+ 'api_key' => ! empty( $options['mailgun_api_key'] ) ? base64_decode( $options['mailgun_api_key'] ) : '', // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
+ 'domain' => isset( $options['mailgun_domain_name'] ) ? $options['mailgun_domain_name'] : '',
+ 'region' => ( isset( $options['mailgun_region'] ) && ! empty( $options['mailgun_region'] ) ) ? 'EU' : 'US',
+ ],
+ ];
+
+ if ( class_exists( '\PostmanOptions' ) ) {
+ $pm_options = \PostmanOptions::getInstance();
+
+ $data['sendgrid']['api_key'] = $pm_options->getSendGridApiKey();
+ $data['mailgun']['api_key'] = $pm_options->getMailgunApiKey();
+ $data['smtp']['pass'] = $pm_options->getPassword();
+ }
+
+ return $data;
+ }
+
+ /**
+ * Check if SMTP Mailer plugin settings are present and extract them.
+ *
+ * @since 2.6.0
+ *
+ * @return array
+ */
+ private function get_smtp_mailer() {
+
+ $options = get_option( 'smtp_mailer_options' );
+
+ if ( empty( $options ) ) {
+ return [];
+ }
+
+ return [
+ 'mail' => [
+ 'mailer' => 'smtp',
+ 'from_email' => isset( $options['from_email'] ) ? $options['from_email'] : '',
+ 'from_name' => isset( $options['from_name'] ) ? $options['from_name'] : '',
+ ],
+ 'smtp' => [
+ 'host' => isset( $options['smtp_host'] ) ? $options['smtp_host'] : '',
+ 'encryption' => isset( $options['type_of_encryption'] ) ? $options['type_of_encryption'] : 'none',
+ 'port' => isset( $options['smtp_port'] ) ? $options['smtp_port'] : 25,
+ 'auth' => isset( $options['smtp_auth'] ) && $options['smtp_auth'] === 'true',
+ 'user' => isset( $options['smtp_username'] ) ? $options['smtp_username'] : '',
+ 'pass' => ! empty( $options['smtp_password'] ) ? base64_decode( $options['smtp_password'] ) : '', // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode
+ 'autotls' => true,
+ ],
+ ];
+ }
+
+ /**
+ * Check if WP SMTP plugin settings are present and extract them.
+ *
+ * @since 2.6.0
+ *
+ * @return array
+ */
+ private function get_wp_smtp() {
+
+ $options = get_option( 'wp_smtp_options' );
+
+ if ( empty( $options ) ) {
+ return [];
+ }
+
+ return [
+ 'mail' => [
+ 'mailer' => 'smtp',
+ 'from_email' => isset( $options['from'] ) ? $options['from'] : '',
+ 'from_name' => isset( $options['fromname'] ) ? $options['fromname'] : '',
+ ],
+ 'smtp' => [
+ 'host' => isset( $options['host'] ) ? $options['host'] : '',
+ 'encryption' => ! empty( $options['smtpsecure'] ) ? $options['smtpsecure'] : 'none',
+ 'port' => isset( $options['port'] ) ? $options['port'] : 25,
+ 'auth' => isset( $options['smtpauth'] ) && $options['smtpauth'] === 'yes',
+ 'user' => isset( $options['username'] ) ? $options['username'] : '',
+ 'pass' => isset( $options['password'] ) ? $options['password'] : '',
+ 'autotls' => true,
+ ],
+ ];
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Helpers/UI.php b/wp-content/plugins/wp-mail-smtp/src/Helpers/UI.php
new file mode 100644
index 000000000..4946cfe34
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Helpers/UI.php
@@ -0,0 +1,118 @@
+ '',
+ 'value' => 'yes',
+ 'label' => [
+ esc_html__( 'On', 'wp-mail-smtp' ),
+ esc_html__( 'Off', 'wp-mail-smtp' ),
+ ],
+ 'id' => '',
+ 'class' => '',
+ 'checked' => false,
+ 'disabled' => false,
+ ]
+ );
+ ?>
+
+ '',
+ 'id' => '',
+ 'value' => '',
+ 'clear_text' => esc_html__( 'Remove', 'wp-mail-smtp' ),
+ ]
+ );
+
+ $value = str_repeat( '*', strlen( $args['value'] ) );
+
+ // phpcs:disable Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace
+ ?>
+
+ migration from v' . static::get_cur_version() . ' to v' . static::VERSION . ' failed. Plugin version: v' . WPMS_PLUGIN_VER . '
'
+ );
+
+ WP::add_admin_notice( $message, WP::ADMIN_NOTICE_ERROR );
+ }
+ }
+ }
+
+ /**
+ * Update migration version in options table.
+ *
+ * @since 2.1.0
+ *
+ * @param int $version Migration version.
+ */
+ protected function update_db_ver( $version = 0 ) {
+
+ if ( empty( $version ) ) {
+ $version = static::VERSION;
+ }
+
+ // Autoload it, because this value is checked all the time
+ // and no need to request it separately from all autoloaded options.
+ update_option( static::OPTION_NAME, $version, true );
+ }
+
+ /**
+ * Prevent running the same migration twice.
+ * Run migration only when required.
+ *
+ * @since 2.1.0
+ *
+ * @param string $version The version of migration to check for potential execution.
+ */
+ protected function maybe_required_older_migrations( $version ) {
+
+ if ( version_compare( $this->cur_ver, $version, '<' ) ) {
+ $this->run( $version );
+ }
+ }
+
+ /**
+ * Migration from 0.x to 1.0.0.
+ * Move separate plugin WP options to one main plugin WP option setting.
+ *
+ * @since 2.1.0
+ */
+ private function migrate_to_1() {
+
+ if ( $this->is_migrated() ) {
+ return;
+ }
+
+ $this->old_values = $this->get_old_values();
+ $this->new_values = $this->get_converted_options();
+
+ Options::init()->set( $this->new_values, true );
+
+ $this->update_db_ver( 1 );
+ }
+
+ /**
+ * Migration from 1.x to 2.1.0.
+ * Create Tasks\Meta table, if it does not exist.
+ *
+ * @since 2.1.0
+ */
+ private function migrate_to_2() {
+
+ $this->maybe_required_older_migrations( 1 );
+
+ $meta = new Meta();
+
+ // Create the table if it doesn't exist.
+ if ( $meta && ! $meta->table_exists() ) {
+ $meta->create_table();
+ }
+
+ $this->update_db_ver( 2 );
+ }
+
+ /**
+ * Migration to 2.6.0.
+ * Cancel all recurring ActionScheduler tasks, so they will be newly created and no longer
+ * cause PHP fatal error on PHP 8 (because of the named parameter 'tasks_meta_id').
+ *
+ * @since 2.6.0
+ */
+ private function migrate_to_3() {
+
+ $this->maybe_required_older_migrations( 2 );
+
+ $tasks = [];
+ $ut = new UsageTracking\UsageTracking();
+
+ if ( $ut->is_enabled() ) {
+ $tasks[] = '\WPMailSMTP\UsageTracking\SendUsageTask';
+ }
+
+ $recurring_tasks = apply_filters( 'wp_mail_smtp_migration_cancel_recurring_tasks', $tasks );
+
+ foreach ( $recurring_tasks as $task ) {
+ ( new $task() )->cancel();
+ }
+
+ $this->update_db_ver( 3 );
+ }
+
+ /**
+ * Migration to 3.0.0.
+ * Disable summary report email for Lite users and Multisite installations after update.
+ * For new installations we have default values in Options::get_defaults.
+ *
+ * @since 3.0.0
+ */
+ protected function migrate_to_4() {
+
+ $this->maybe_required_older_migrations( 3 );
+
+ $options = Options::init();
+
+ $value = $options->get( 'general', SummaryReportEmail::SETTINGS_SLUG );
+
+ // If option was not already set, then plugin was updated from lower version.
+ if (
+ ( $value === '' || $value === null ) &&
+ ( is_multisite() || ! wp_mail_smtp()->is_pro() )
+ ) {
+ $data = [
+ 'general' => [
+ SummaryReportEmail::SETTINGS_SLUG => true,
+ ],
+ ];
+
+ $options->set( $data, false, false );
+
+ // Just to be safe cancel summary report email task.
+ ( new SummaryReportEmailTask() )->cancel();
+ }
+
+ $this->update_db_ver( 4 );
+ }
+
+ /**
+ * Cleanup scheduled actions meta table.
+ *
+ * @since 3.5.0
+ */
+ protected function migrate_to_5() {
+
+ $this->maybe_required_older_migrations( 4 );
+
+ global $wpdb;
+
+ $meta = new Meta();
+
+ if (
+ $meta->table_exists() &&
+ $meta->table_exists( $wpdb->prefix . 'actionscheduler_actions' ) &&
+ $meta->table_exists( $wpdb->prefix . 'actionscheduler_groups' )
+ ) {
+ $group = Tasks::GROUP;
+ $sql = "SELECT DISTINCT a.args FROM {$wpdb->prefix}actionscheduler_actions a
+ JOIN {$wpdb->prefix}actionscheduler_groups g ON g.group_id = a.group_id
+ WHERE g.slug = '$group' AND a.status IN ('pending', 'in-progress')";
+
+ // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
+ $results = $wpdb->get_results( $sql, 'ARRAY_A' );
+ // phpcs:enable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
+
+ $results = $results ? $results : [];
+ $meta_ids = [];
+
+ foreach ( $results as $result ) {
+ $args = isset( $result['args'] ) ? json_decode( $result['args'], true ) : null;
+
+ if ( $args && isset( $args[0] ) && is_numeric( $args[0] ) ) {
+ $meta_ids[] = $args[0];
+ }
+ }
+
+ $table = Meta::get_table_name();
+ $not_in = 0;
+
+ if ( ! empty( $meta_ids ) ) {
+ // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
+ $not_in = $wpdb->prepare( implode( ',', array_fill( 0, count( $meta_ids ), '%d' ) ), $meta_ids );
+ }
+
+ // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
+ $wpdb->query( "DELETE FROM $table WHERE id NOT IN ($not_in)" );
+ // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
+ }
+
+ // Save the current version to DB.
+ $this->update_db_ver( 5 );
+ }
+
+ /**
+ * Whether we already migrated or not.
+ *
+ * @since 1.0.0
+ *
+ * @return bool
+ */
+ protected function is_migrated() {
+
+ $is_migrated = false;
+ $new_values = get_option( Options::META_KEY, array() );
+
+ if ( ! empty( $new_values ) ) {
+ $is_migrated = true;
+ }
+
+ return $is_migrated;
+ }
+
+ /**
+ * Get all old values from DB.
+ *
+ * @since 1.0.0
+ *
+ * @return array
+ */
+ protected function get_old_values() {
+
+ $old_values = array();
+
+ foreach ( $this->old_keys as $old_key ) {
+ $value = get_option( $old_key, '' );
+
+ if ( ! empty( $value ) ) {
+ $old_values[ $old_key ] = $value;
+ }
+ }
+
+ return $old_values;
+ }
+
+ /**
+ * Convert old values from key=>value to a multidimensional array of data.
+ *
+ * @since 1.0.0
+ */
+ protected function get_converted_options() {
+
+ $converted = array();
+
+ foreach ( $this->old_keys as $old_key ) {
+
+ $old_value = isset( $this->old_values[ $old_key ] ) ? $this->old_values[ $old_key ] : '';
+
+ switch ( $old_key ) {
+ case 'pepipost_user':
+ case 'pepipost_pass':
+ case 'pepipost_port':
+ case 'pepipost_ssl':
+ // Do not migrate pepipost options if it's not activated at the moment.
+ if ( isset( $this->old_values['mailer'] ) && $this->old_values['mailer'] === 'pepipost' ) {
+ $shortcut = explode( '_', $old_key );
+
+ if ( $old_key === 'pepipost_ssl' ) {
+ $converted[ $shortcut[0] ]['encryption'] = $old_value;
+ } else {
+ $converted[ $shortcut[0] ][ $shortcut[1] ] = $old_value;
+ }
+ }
+ break;
+
+ case 'smtp_host':
+ case 'smtp_port':
+ case 'smtp_ssl':
+ case 'smtp_auth':
+ case 'smtp_user':
+ case 'smtp_pass':
+ $shortcut = explode( '_', $old_key );
+
+ if ( $old_key === 'smtp_ssl' ) {
+ $converted[ $shortcut[0] ]['encryption'] = $old_value;
+ } elseif ( $old_key === 'smtp_auth' ) {
+ $converted[ $shortcut[0] ][ $shortcut[1] ] = ( $old_value === 'true' ? 'yes' : 'no' );
+ } else {
+ $converted[ $shortcut[0] ][ $shortcut[1] ] = $old_value;
+ }
+
+ break;
+
+ case 'mail_from':
+ $converted['mail']['from_email'] = $old_value;
+ break;
+ case 'mail_from_name':
+ $converted['mail']['from_name'] = $old_value;
+ break;
+ case 'mail_set_return_path':
+ $converted['mail']['return_path'] = ( $old_value === 'true' );
+ break;
+ case 'mailer':
+ $converted['mail']['mailer'] = ! empty( $old_value ) ? $old_value : 'mail';
+ break;
+ case 'wp_mail_smtp_am_notifications_hidden':
+ $converted['general']['am_notifications_hidden'] = ( isset( $old_value ) && $old_value === 'true' );
+ break;
+ }
+ }
+
+ $converted = $this->get_converted_constants_options( $converted );
+
+ return $converted;
+ }
+
+ /**
+ * Some users use constants in wp-config.php to define values.
+ * We need to prioritize them and reapply data to options.
+ * Use only those that are actually defined.
+ *
+ * @since 1.0.0
+ *
+ * @param array $converted
+ *
+ * @return array
+ */
+ protected function get_converted_constants_options( $converted ) {
+
+ // Are we configured via constants?
+ if ( ! defined( 'WPMS_ON' ) || ! WPMS_ON ) {
+ return $converted;
+ }
+
+ /*
+ * Mail settings.
+ */
+ if ( defined( 'WPMS_MAIL_FROM' ) ) {
+ $converted['mail']['from_email'] = WPMS_MAIL_FROM;
+ }
+ if ( defined( 'WPMS_MAIL_FROM_NAME' ) ) {
+ $converted['mail']['from_name'] = WPMS_MAIL_FROM_NAME;
+ }
+ if ( defined( 'WPMS_MAILER' ) ) {
+ $converted['mail']['mailer'] = WPMS_MAILER;
+ }
+ if ( defined( 'WPMS_SET_RETURN_PATH' ) ) {
+ $converted['mail']['return_path'] = WPMS_SET_RETURN_PATH;
+ }
+
+ /*
+ * SMTP settings.
+ */
+ if ( defined( 'WPMS_SMTP_HOST' ) ) {
+ $converted['smtp']['host'] = WPMS_SMTP_HOST;
+ }
+ if ( defined( 'WPMS_SMTP_PORT' ) ) {
+ $converted['smtp']['port'] = WPMS_SMTP_PORT;
+ }
+ if ( defined( 'WPMS_SSL' ) ) {
+ $converted['smtp']['ssl'] = WPMS_SSL;
+ }
+ if ( defined( 'WPMS_SMTP_AUTH' ) ) {
+ $converted['smtp']['auth'] = WPMS_SMTP_AUTH;
+ }
+ if ( defined( 'WPMS_SMTP_USER' ) ) {
+ $converted['smtp']['user'] = WPMS_SMTP_USER;
+ }
+ if ( defined( 'WPMS_SMTP_PASS' ) ) {
+ $converted['smtp']['pass'] = WPMS_SMTP_PASS;
+ }
+
+ return $converted;
+ }
+
+ /**
+ * Delete all old values that are stored separately each.
+ *
+ * @since 1.0.0
+ */
+ protected function clean_deprecated_data() {
+
+ foreach ( $this->old_keys as $old_key ) {
+ delete_option( $old_key );
+ }
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/MigrationAbstract.php b/wp-content/plugins/wp-mail-smtp/src/MigrationAbstract.php
new file mode 100644
index 000000000..088571f11
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/MigrationAbstract.php
@@ -0,0 +1,161 @@
+cur_ver = static::get_current_version();
+ }
+
+ /**
+ * Initialize migration.
+ *
+ * @since 3.0.0
+ */
+ public function init() {
+
+ $this->validate_db();
+ }
+
+ /**
+ * Whether migration is enabled.
+ *
+ * @since 3.0.0
+ *
+ * @return bool
+ */
+ public static function is_enabled() {
+
+ return true;
+ }
+
+ /**
+ * Static on purpose, to get current DB version without __construct() and validation.
+ *
+ * @since 3.0.0
+ *
+ * @return int
+ */
+ public static function get_current_version() {
+
+ return (int) get_option( static::OPTION_NAME, 0 );
+ }
+
+ /**
+ * Check DB version and update to the latest one.
+ *
+ * @since 3.0.0
+ */
+ protected function validate_db() {
+
+ if ( $this->cur_ver < static::DB_VERSION ) {
+ $this->run( static::DB_VERSION );
+ }
+ }
+
+ /**
+ * Update DB version in options table.
+ *
+ * @since 3.0.0
+ *
+ * @param int $version Version number.
+ */
+ protected function update_db_ver( $version = 0 ) {
+
+ $version = (int) $version;
+
+ if ( empty( $version ) ) {
+ $version = static::DB_VERSION;
+ }
+
+ // Autoload it, because this value is checked all the time
+ // and no need to request it separately from all autoloaded options.
+ update_option( static::OPTION_NAME, $version, true );
+ }
+
+ /**
+ * Prevent running the same migration twice.
+ * Run migration only when required.
+ *
+ * @since 3.0.0
+ *
+ * @param int $version The current migration version.
+ */
+ protected function maybe_required_older_migrations( $version ) {
+
+ $version = (int) $version;
+
+ if ( ( $version - $this->cur_ver ) > 1 ) {
+ $this->run( $version - 1 );
+ }
+ }
+
+ /**
+ * Actual migration launcher.
+ *
+ * @since 3.0.0
+ *
+ * @param int $version The specified migration version to run.
+ */
+ protected function run( $version ) {
+
+ $version = (int) $version;
+
+ if ( method_exists( $this, 'migrate_to_' . $version ) ) {
+ $this->{'migrate_to_' . $version}();
+ } else {
+ if ( WP::in_wp_admin() ) {
+ $message = sprintf( /* translators: %1$s - the DB option name, %2$s - WP Mail SMTP, %3$s - error message. */
+ esc_html__( 'There was an error while upgrading the %1$s database. Please contact %2$s support with this information: %3$s.', 'wp-mail-smtp' ),
+ static::OPTION_NAME,
+ 'WP Mail SMTP',
+ 'migration from v' . static::get_current_version() . ' to v' . static::DB_VERSION . ' failed. Plugin version: v' . WPMS_PLUGIN_VER . '
'
+ );
+
+ WP::add_admin_notice( $message, WP::ADMIN_NOTICE_ERROR );
+ }
+ }
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Migrations.php b/wp-content/plugins/wp-mail-smtp/src/Migrations.php
new file mode 100644
index 000000000..f98fb5f03
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Migrations.php
@@ -0,0 +1,170 @@
+init_migrations();
+ }
+
+ /**
+ * Initialize DB migrations.
+ *
+ * @since 4.0.0
+ */
+ private function init_migrations() {
+
+ $migrations = $this->get_migrations();
+
+ foreach ( $migrations as $migration ) {
+ if ( is_subclass_of( $migration, MigrationAbstract::class ) && $migration::is_enabled() ) {
+ ( new $migration() )->init();
+ }
+ }
+ }
+
+ /**
+ * Get migrations classes.
+ *
+ * @since 4.0.0
+ *
+ * @return array Migrations classes.
+ */
+ private function get_migrations() {
+
+ $migrations = [
+ Migration::class,
+ DebugEventsMigration::class,
+ QueueMigration::class,
+ ];
+
+ /**
+ * Filters DB migrations classes.
+ *
+ * @deprecated 4.0.0
+ *
+ * @since 3.0.0
+ *
+ * @param array $migrations Migrations classes.
+ */
+ $migrations = apply_filters_deprecated(
+ 'wp_mail_smtp_core_init_migrations',
+ [ $migrations ],
+ '3.10.0',
+ 'wp_mail_smtp_migrations_get_migrations'
+ );
+
+ /**
+ * Filters DB migrations classes.
+ *
+ * @since 4.0.0
+ *
+ * @param array $migrations Migrations classes.
+ */
+ return apply_filters( 'wp_mail_smtp_migrations_get_migrations', $migrations );
+ }
+
+ /**
+ * Initialize DB migrations after plugin update.
+ * Initiate ajax call to perform the migration with the new plugin version code.
+ *
+ * @since 4.0.0
+ *
+ * @param WP_Upgrader $upgrader WP_Upgrader instance.
+ * @param array $options Array of update data.
+ */
+ public function init_migrations_after_upgrade( $upgrader, $options ) {
+
+ if (
+ // Skip if in admin panel.
+ ( is_admin() && ! wp_doing_ajax() ) ||
+ // Skip if it's update from plugins list page.
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'update-plugin' )
+ ) {
+ return;
+ }
+
+ $plugins = [];
+
+ if ( isset( $options['plugins'] ) && is_array( $options['plugins'] ) ) {
+ $plugins = $options['plugins'];
+ } elseif ( isset( $options['plugin'] ) && is_string( $options['plugin'] ) ) {
+ $plugins = [ $options['plugin'] ];
+ }
+
+ if (
+ ! in_array( 'wp-mail-smtp/wp_mail_smtp.php', $plugins, true ) &&
+ ! in_array( 'wp-mail-smtp-pro/wp_mail_smtp.php', $plugins, true )
+ ) {
+ return;
+ }
+
+ $url = add_query_arg(
+ [
+ 'action' => 'wp_mail_smtp_init_migrations',
+ ],
+ admin_url( 'admin-ajax.php' )
+ );
+
+ $timeout = (int) ini_get( 'max_execution_time' );
+
+ $args = [
+ 'sslverify' => false,
+ 'timeout' => $timeout ? $timeout : 30,
+ ];
+
+ wp_remote_post( $url, $args );
+ }
+
+ /**
+ * Initialize migrations via AJAX request.
+ *
+ * @since 4.0.0
+ */
+ public function init_migrations_ajax_handler() {
+
+ $this->init_migrations();
+
+ wp_send_json_success();
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/OptimizedEmailSending.php b/wp-content/plugins/wp-mail-smtp/src/OptimizedEmailSending.php
new file mode 100644
index 000000000..b66a86417
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/OptimizedEmailSending.php
@@ -0,0 +1,58 @@
+get( 'general', self::SETTINGS_SLUG );
+
+ return (bool) $value;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Options.php b/wp-content/plugins/wp-mail-smtp/src/Options.php
new file mode 100644
index 000000000..079958a17
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Options.php
@@ -0,0 +1,1610 @@
+ [
+ 'from_name',
+ 'from_email',
+ 'mailer',
+ 'return_path',
+ 'from_name_force',
+ 'from_email_force',
+ ],
+ 'smtp' => [
+ 'host',
+ 'port',
+ 'encryption',
+ 'autotls',
+ 'auth',
+ 'user',
+ 'pass',
+ ],
+ 'gmail' => [
+ 'one_click_setup_enabled',
+ 'client_id',
+ 'client_secret',
+ ],
+ 'outlook' => [
+ 'client_id',
+ 'client_secret',
+ ],
+ 'zoho' => [
+ 'domain',
+ 'client_id',
+ 'client_secret',
+ ],
+ 'amazonses' => [
+ 'client_id',
+ 'client_secret',
+ 'region',
+ ],
+ 'mailgun' => [
+ 'api_key',
+ 'domain',
+ 'region',
+ ],
+ 'sendgrid' => [
+ 'api_key',
+ 'domain',
+ ],
+ 'sparkpost' => [
+ 'api_key',
+ 'region',
+ ],
+ 'postmark' => [
+ 'server_api_token',
+ 'message_stream',
+ ],
+ 'smtpcom' => [
+ 'api_key',
+ 'channel',
+ ],
+ 'sendinblue' => [
+ 'api_key',
+ 'domain',
+ ],
+ 'sendlayer' => [
+ 'api_key',
+ ],
+ 'smtp2go' => [
+ 'api_key',
+ ],
+ 'pepipostapi' => [
+ 'api_key',
+ ],
+ 'pepipost' => [
+ 'host',
+ 'port',
+ 'encryption',
+ 'auth',
+ 'user',
+ 'pass',
+ ],
+ 'license' => [
+ 'key',
+ ],
+ 'alert_email' => [
+ 'enabled',
+ 'connections',
+ ],
+ 'alert_slack_webhook' => [
+ 'enabled',
+ 'connections',
+ ],
+ 'alert_twilio_sms' => [
+ 'enabled',
+ 'connections',
+ ],
+ 'alert_custom_webhook' => [
+ 'enabled',
+ 'connections',
+ ],
+ 'alert_events' => [
+ 'email_hard_bounced',
+ ],
+ ];
+
+ /**
+ * List of all mailers (except PHP default mailer 'mail').
+ *
+ * @since 3.3.0
+ *
+ * @var string[]
+ */
+ public static $mailers = [
+ 'sendlayer',
+ 'smtpcom',
+ 'sendinblue',
+ 'amazonses',
+ 'gmail',
+ 'mailgun',
+ 'outlook',
+ 'postmark',
+ 'sendgrid',
+ 'sparkpost',
+ 'zoho',
+ 'smtp2go',
+ 'smtp',
+ 'pepipost',
+ 'pepipostapi',
+ ];
+
+ /**
+ * That's where plugin options are saved in wp_options table.
+ *
+ * @since 1.0.0
+ *
+ * @var string
+ */
+ const META_KEY = 'wp_mail_smtp';
+
+ /**
+ * All instances of Options class that should be notified about options update.
+ *
+ * @since 3.7.0
+ *
+ * @var Options[]
+ */
+ protected static $update_observers;
+
+ /**
+ * Options data.
+ *
+ * @since 3.7.0
+ *
+ * @var array
+ */
+ protected $options = [];
+
+ /**
+ * Init the Options class.
+ * TODO: add a flag to process without retrieving const values.
+ *
+ * @since 1.0.0
+ * @since 3.3.0 Deprecated instantiation via new keyword. `Options::init()` must be used.
+ */
+ public function __construct() {
+
+ // Store all class instances that will be notified about options update.
+ static::$update_observers[] = $this;
+
+ $this->populate_options();
+ }
+
+ /**
+ * Initialize all the options.
+ *
+ * @since 1.0.0
+ *
+ * @return Options
+ */
+ public static function init() {
+
+ static $instance;
+
+ if ( ! $instance ) {
+ $instance = new self();
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Whether current class is a main options.
+ *
+ * @since 3.7.0
+ *
+ * @var bool
+ */
+ protected function is_main_options() {
+
+ return true;
+ }
+
+ /**
+ * Default options that are saved on plugin activation.
+ *
+ * @since 1.3.0
+ * @since 2.1.0 Set the Force from email to "on" by default.
+ *
+ * @return array
+ */
+ public static function get_defaults() {
+
+ $defaults = [
+ 'mail' => [
+ 'from_email' => get_option( 'admin_email' ),
+ 'from_name' => get_bloginfo( 'name' ),
+ 'mailer' => 'mail',
+ 'return_path' => false,
+ 'from_email_force' => true,
+ 'from_name_force' => false,
+ ],
+ 'smtp' => [
+ 'autotls' => true,
+ 'auth' => true,
+ ],
+ 'general' => [
+ SummaryReportEmail::SETTINGS_SLUG => ! is_multisite() ? false : true,
+ ],
+ ];
+
+ /**
+ * Filters the default options.
+ *
+ * @since 3.11.0
+ *
+ * @param array $defaults Default options.
+ */
+ return apply_filters( 'wp_mail_smtp_options_get_defaults', $defaults );
+ }
+
+ /**
+ * Retrieve all options of the plugin.
+ *
+ * @since 1.0.0
+ * @since 2.2.0 Added the filter.
+ */
+ protected function populate_options() {
+
+ $this->options = apply_filters( 'wp_mail_smtp_populate_options', get_option( static::META_KEY, [] ) );
+ }
+
+ /**
+ * Get all the options.
+ *
+ * Options::init()->get_all();
+ *
+ * @since 1.0.0
+ *
+ * @return array
+ */
+ public function get_all() {
+
+ $options = $this->options;
+
+ foreach ( $options as $group => $g_value ) {
+ foreach ( $g_value as $key => $value ) {
+ $options[ $group ][ $key ] = $this->get( $group, $key );
+ }
+ }
+
+ return $this->is_main_options() ? apply_filters( 'wp_mail_smtp_options_get_all', $options ) : $options;
+ }
+
+ /**
+ * Get all the options for a group.
+ *
+ * Options::init()->get_group('smtp') - will return the array of options for the group, including defaults and constants.
+ *
+ * @since 1.0.0
+ * @since 1.5.0 Process values through the get() method which is aware of constants.
+ *
+ * @param string $group
+ *
+ * @return array
+ */
+ public function get_group( $group ) {
+
+ // Just to feel safe.
+ $group = sanitize_key( $group );
+
+ /*
+ * Get the values saved in DB.
+ * If plugin is configured with constants right from the start - this will not have all the values.
+ */
+ $options = isset( $this->options[ $group ] ) ? $this->options[ $group ] : array();
+
+ // We need to process certain constants-aware options through actual constants.
+ if ( isset( self::$map[ $group ] ) ) {
+ foreach ( self::$map[ $group ] as $key ) {
+ $options[ $key ] = $this->get( $group, $key );
+ }
+ }
+
+ return $this->is_main_options() ? apply_filters( 'wp_mail_smtp_options_get_group', $options, $group ) : $options;
+ }
+
+ /**
+ * Get options by a group and a key.
+ *
+ * Options::init()->get( 'smtp', 'host' ) - will return only SMTP 'host' option.
+ *
+ * @since 1.0.0
+ * @since 2.5.0 Added $strip_slashes method parameter.
+ *
+ * @param string $group The option group.
+ * @param string $key The option key.
+ * @param bool $strip_slashes If the slashes should be stripped from string values.
+ *
+ * @return mixed|null Null if value doesn't exist anywhere: in constants, in DB, in a map. So it's completely custom or a typo.
+ */
+ public function get( $group, $key, $strip_slashes = true ) {
+
+ // Just to feel safe.
+ $group = sanitize_key( $group );
+ $key = sanitize_key( $key );
+ $value = null;
+
+ // Get the const value if we have one.
+ $value = $this->get_const_value( $group, $key, $value );
+
+ // We don't have a const value.
+ if ( $value === null ) {
+ // Ordinary database or default values.
+ if ( isset( $this->options[ $group ] ) ) {
+ // Get the options key of a group.
+ if ( isset( $this->options[ $group ][ $key ] ) ) {
+ $value = $this->get_existing_option_value( $group, $key );
+ } else {
+ $value = $this->postprocess_key_defaults( $group, $key );
+ }
+ } else {
+ /*
+ * Fallback to default if it doesn't exist in a map.
+ * Allow to retrieve only values from a map.
+ */
+ if (
+ isset( self::$map[ $group ] ) &&
+ in_array( $key, self::$map[ $group ], true )
+ ) {
+ $value = $this->postprocess_key_defaults( $group, $key );
+ }
+ }
+ }
+
+ // Conditionally strip slashes only from values saved in DB. Constants should be processed as is.
+ if ( $strip_slashes && is_string( $value ) && ! $this->is_const_defined( $group, $key ) ) {
+ $value = stripslashes( $value );
+ }
+
+ return $this->is_main_options() ? apply_filters( 'wp_mail_smtp_options_get', $value, $group, $key ) : $value;
+ }
+
+ /**
+ * Get the existing cached option value.
+ *
+ * @since 2.5.0
+ *
+ * @param string $group The options group.
+ * @param string $key The options key.
+ *
+ * @return mixed
+ */
+ private function get_existing_option_value( $group, $key ) {
+
+ if ( $group === 'smtp' && $key === 'pass' ) {
+ try {
+ return Crypto::decrypt( $this->options[ $group ][ $key ] );
+ } catch ( \Exception $e ) {
+ return $this->options[ $group ][ $key ];
+ }
+ }
+
+ return $this->options[ $group ][ $key ];
+ }
+
+ /**
+ * Some options may be non-empty by default,
+ * so we need to postprocess them to convert.
+ *
+ * @since 1.0.0
+ * @since 1.4.0 Added Mailgun:region.
+ * @since 1.5.0 Added Outlook/AmazonSES, license key support.
+ *
+ * @param string $group
+ * @param string $key
+ *
+ * @return mixed
+ */
+ protected function postprocess_key_defaults( $group, $key ) {
+
+ $value = '';
+
+ switch ( $key ) {
+ case 'from_email_force':
+ case 'from_name_force':
+ case 'return_path':
+ $value = $group === 'mail' ? false : true;
+ break;
+
+ case 'mailer':
+ $value = 'mail';
+ break;
+
+ case 'encryption':
+ $value = in_array( $group, array( 'smtp', 'pepipost' ), true ) ? 'none' : $value;
+ break;
+
+ case 'region':
+ $value = $group === 'mailgun' || $group === 'sparkpost' ? 'US' : $value;
+ break;
+
+ case 'auth':
+ case 'autotls':
+ $value = in_array( $group, array( 'smtp', 'pepipost' ), true ) ? false : true;
+ break;
+
+ case 'pass':
+ $value = $this->get_const_value( $group, $key, $value );
+ break;
+
+ case 'type':
+ $value = $group === 'license' ? 'lite' : '';
+ break;
+ }
+
+ return apply_filters( 'wp_mail_smtp_options_postprocess_key_defaults', $value, $group, $key );
+ }
+
+ /**
+ * Process the options values through the constants check.
+ * If we have defined associated constant - use it instead of a DB value.
+ * Backward compatibility is hard.
+ * General section of options won't have constants, so we are omitting those checks and just return default value.
+ *
+ * @since 1.0.0
+ * @since 1.4.0 Added WPMS_MAILGUN_REGION.
+ * @since 1.5.0 Added Outlook/AmazonSES, license key support.
+ * @since 1.6.0 Added Sendinblue.
+ * @since 1.7.0 Added Do Not Send.
+ * @since 1.8.0 Added Pepipost API.
+ * @since 3.6.0 Added Debug Events Retention Period.
+ *
+ * @param string $group
+ * @param string $key
+ * @param mixed $value
+ *
+ * @return mixed
+ */
+ protected function get_const_value( $group, $key, $value ) {
+
+ if ( ! $this->is_const_enabled() ) {
+ return $value;
+ }
+
+ $return = null;
+
+ switch ( $group ) {
+ case 'mail':
+ switch ( $key ) {
+ case 'from_name':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAIL_FROM_NAME : $value;
+ break;
+ case 'from_email':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAIL_FROM : $value;
+ break;
+ case 'mailer':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAILER : $value;
+ break;
+ case 'return_path':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SET_RETURN_PATH : $value;
+ break;
+ case 'from_name_force':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAIL_FROM_NAME_FORCE : $value;
+ break;
+ case 'from_email_force':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAIL_FROM_FORCE : $value;
+ break;
+ }
+
+ break;
+
+ case 'smtp':
+ switch ( $key ) {
+ case 'host':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTP_HOST : $value;
+ break;
+ case 'port':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTP_PORT : $value;
+ break;
+ case 'encryption':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? ( WPMS_SSL === '' ? 'none' : WPMS_SSL ) : $value;
+ break;
+ case 'auth':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? (bool) WPMS_SMTP_AUTH : $value;
+ break;
+ case 'autotls':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? (bool) WPMS_SMTP_AUTOTLS : $value;
+ break;
+ case 'user':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTP_USER : $value;
+ break;
+ case 'pass':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTP_PASS : $value;
+ break;
+ }
+
+ break;
+
+ case 'sendlayer':
+ switch ( $key ) {
+ case 'api_key':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SENDLAYER_API_KEY : $value;
+ break;
+ }
+
+ break;
+
+ case 'gmail':
+ switch ( $key ) {
+ case 'client_id':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_GMAIL_CLIENT_ID : $value;
+ break;
+ case 'client_secret':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_GMAIL_CLIENT_SECRET : $value;
+ break;
+ }
+
+ break;
+
+ case 'outlook':
+ switch ( $key ) {
+ case 'client_id':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_OUTLOOK_CLIENT_ID : $value;
+ break;
+ case 'client_secret':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_OUTLOOK_CLIENT_SECRET : $value;
+ break;
+ }
+
+ break;
+
+ case 'zoho':
+ switch ( $key ) {
+ case 'domain':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_ZOHO_DOMAIN : $value;
+ break;
+ case 'client_id':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_ZOHO_CLIENT_ID : $value;
+ break;
+ case 'client_secret':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_ZOHO_CLIENT_SECRET : $value;
+ break;
+ }
+
+ break;
+
+ case 'amazonses':
+ switch ( $key ) {
+ case 'client_id':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_AMAZONSES_CLIENT_ID : $value;
+ break;
+ case 'client_secret':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_AMAZONSES_CLIENT_SECRET : $value;
+ break;
+ case 'region':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_AMAZONSES_REGION : $value;
+ break;
+ }
+
+ break;
+
+ case 'mailgun':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAILGUN_API_KEY : $value;
+ break;
+ case 'domain':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAILGUN_DOMAIN : $value;
+ break;
+ case 'region':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_MAILGUN_REGION : $value;
+ break;
+ }
+
+ break;
+
+ case 'sendgrid':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SENDGRID_API_KEY : $value;
+ break;
+ case 'domain':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SENDGRID_DOMAIN : $value;
+ break;
+ }
+
+ break;
+
+ case 'sparkpost':
+ switch ( $key ) {
+ case 'api_key':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SPARKPOST_API_KEY : $value;
+ break;
+ case 'region':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SPARKPOST_REGION : $value;
+ break;
+ }
+
+ break;
+
+ case 'postmark':
+ switch ( $key ) {
+ case 'server_api_token':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_POSTMARK_SERVER_API_TOKEN : $value;
+ break;
+ case 'message_stream':
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_POSTMARK_MESSAGE_STREAM : $value;
+ break;
+ }
+
+ break;
+
+ case 'smtpcom':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTPCOM_API_KEY : $value;
+ break;
+ case 'channel':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTPCOM_CHANNEL : $value;
+ break;
+ }
+
+ break;
+
+ case 'sendinblue':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SENDINBLUE_API_KEY : $value;
+ break;
+ case 'domain':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SENDINBLUE_DOMAIN : $value;
+ break;
+ }
+
+ break;
+
+ case 'smtp2go':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_SMTP2GO_API_KEY : $value;
+ break;
+ }
+
+ break;
+
+ case 'pepipostapi':
+ switch ( $key ) {
+ case 'api_key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_PEPIPOST_API_KEY : $value;
+ break;
+ }
+
+ case 'alert_email':
+ switch ( $key ) {
+ case 'connections':
+ $return = $this->is_const_defined( $group, $key ) ? [ [ 'send_to' => WPMS_ALERT_EMAIL_SEND_TO ] ] : $value;
+ break;
+ }
+
+ break;
+
+ case 'alert_slack_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = $this->is_const_defined( $group, $key ) ? [ [ 'webhook_url' => WPMS_ALERT_SLACK_WEBHOOK_URL ] ] : $value;
+ break;
+ }
+
+ break;
+
+ case 'alert_teams_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = $this->is_const_defined( $group, $key ) ? [ [ 'webhook_url' => WPMS_ALERT_TEAMS_WEBHOOK_URL ] ] : $value;
+ break;
+ }
+
+ break;
+
+ case 'alert_twilio_sms':
+ switch ( $key ) {
+ case 'connections':
+ if ( $this->is_const_defined( $group, $key ) ) {
+ $return = [
+ [
+ 'account_sid' => WPMS_ALERT_TWILIO_SMS_ACCOUNT_SID,
+ 'auth_token' => WPMS_ALERT_TWILIO_SMS_AUTH_TOKEN,
+ 'from_phone_number' => WPMS_ALERT_TWILIO_SMS_FROM_PHONE_NUMBER,
+ 'to_phone_number' => WPMS_ALERT_TWILIO_SMS_TO_PHONE_NUMBER,
+ ],
+ ];
+ } else {
+ $return = $value;
+ }
+ break;
+ }
+
+ break;
+
+ case 'alert_custom_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = $this->is_const_defined( $group, $key ) ? [ [ 'webhook_url' => WPMS_ALERT_CUSTOM_WEBHOOK_URL ] ] : $value;
+ break;
+ }
+
+ break;
+
+ case 'license':
+ switch ( $key ) {
+ case 'key':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_LICENSE_KEY : $value;
+ break;
+ }
+
+ break;
+
+ case 'general':
+ switch ( $key ) {
+ case 'do_not_send':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? WPMS_DO_NOT_SEND : $value;
+ break;
+
+ case SummaryReportEmail::SETTINGS_SLUG:
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ?
+ $this->parse_boolean( WPMS_SUMMARY_REPORT_EMAIL_DISABLED ) :
+ $value;
+ break;
+
+ case OptimizedEmailSending::SETTINGS_SLUG:
+ /** No inspection comment @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ?
+ $this->parse_boolean( WPMS_OPTIMIZED_EMAIL_SENDING_ENABLED ) :
+ $value;
+ break;
+ }
+
+ break;
+
+ case 'debug_events':
+ switch ( $key ) {
+ case 'retention_period':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = $this->is_const_defined( $group, $key ) ? intval( WPMS_DEBUG_EVENTS_RETENTION_PERIOD ) : $value;
+ break;
+ }
+
+ break;
+
+ default:
+ // Always return the default value if nothing from above matches the request.
+ $return = $value;
+ }
+
+ return apply_filters( 'wp_mail_smtp_options_get_const_value', $return, $group, $key, $value );
+ }
+
+ /**
+ * Whether constants redefinition is enabled or not.
+ *
+ * @since 1.0.0
+ * @since 1.5.0 Added filter to redefine the value.
+ *
+ * @return bool
+ */
+ public function is_const_enabled() {
+
+ $return = defined( 'WPMS_ON' ) && WPMS_ON === true;
+
+ return apply_filters( 'wp_mail_smtp_options_is_const_enabled', $return );
+ }
+
+ /**
+ * We need this check to reuse later in admin area,
+ * to distinguish settings fields that were redefined,
+ * and display them differently.
+ *
+ * @since 1.0.0
+ * @since 1.5.0 Added a filter, Outlook/AmazonSES, license key support.
+ * @since 1.6.0 Added Sendinblue.
+ * @since 1.7.0 Added Do Not Send.
+ * @since 1.8.0 Added Pepipost API.
+ *
+ * @param string $group
+ * @param string $key
+ *
+ * @return bool
+ */
+ public function is_const_defined( $group, $key ) {
+
+ if ( ! $this->is_const_enabled() ) {
+ return false;
+ }
+
+ // Just to feel safe.
+ $group = sanitize_key( $group );
+ $key = sanitize_key( $key );
+ $return = false;
+
+ switch ( $group ) {
+ case 'mail':
+ switch ( $key ) {
+ case 'from_name':
+ $return = defined( 'WPMS_MAIL_FROM_NAME' ) && WPMS_MAIL_FROM_NAME;
+ break;
+ case 'from_email':
+ $return = defined( 'WPMS_MAIL_FROM' ) && WPMS_MAIL_FROM;
+ break;
+ case 'mailer':
+ $return = defined( 'WPMS_MAILER' ) && WPMS_MAILER;
+ break;
+ case 'return_path':
+ $return = defined( 'WPMS_SET_RETURN_PATH' ) && ( WPMS_SET_RETURN_PATH === 'true' || WPMS_SET_RETURN_PATH === true );
+ break;
+ case 'from_name_force':
+ $return = defined( 'WPMS_MAIL_FROM_NAME_FORCE' ) && ( WPMS_MAIL_FROM_NAME_FORCE === 'true' || WPMS_MAIL_FROM_NAME_FORCE === true );
+ break;
+ case 'from_email_force':
+ $return = defined( 'WPMS_MAIL_FROM_FORCE' ) && ( WPMS_MAIL_FROM_FORCE === 'true' || WPMS_MAIL_FROM_FORCE === true );
+ break;
+ }
+
+ break;
+
+ case 'smtp':
+ switch ( $key ) {
+ case 'host':
+ $return = defined( 'WPMS_SMTP_HOST' ) && WPMS_SMTP_HOST;
+ break;
+ case 'port':
+ $return = defined( 'WPMS_SMTP_PORT' ) && WPMS_SMTP_PORT;
+ break;
+ case 'encryption':
+ $return = defined( 'WPMS_SSL' );
+ break;
+ case 'auth':
+ $return = defined( 'WPMS_SMTP_AUTH' );
+ break;
+ case 'autotls':
+ $return = defined( 'WPMS_SMTP_AUTOTLS' );
+ break;
+ case 'user':
+ $return = defined( 'WPMS_SMTP_USER' ) && WPMS_SMTP_USER;
+ break;
+ case 'pass':
+ $return = defined( 'WPMS_SMTP_PASS' ) && WPMS_SMTP_PASS;
+ break;
+ }
+
+ break;
+
+ case 'sendlayer':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SENDLAYER_API_KEY' ) && WPMS_SENDLAYER_API_KEY;
+ break;
+ }
+
+ break;
+
+ case 'gmail':
+ switch ( $key ) {
+ case 'client_id':
+ $return = defined( 'WPMS_GMAIL_CLIENT_ID' ) && WPMS_GMAIL_CLIENT_ID;
+ break;
+ case 'client_secret':
+ $return = defined( 'WPMS_GMAIL_CLIENT_SECRET' ) && WPMS_GMAIL_CLIENT_SECRET;
+ break;
+ }
+
+ break;
+
+ case 'outlook':
+ switch ( $key ) {
+ case 'client_id':
+ $return = defined( 'WPMS_OUTLOOK_CLIENT_ID' ) && WPMS_OUTLOOK_CLIENT_ID;
+ break;
+ case 'client_secret':
+ $return = defined( 'WPMS_OUTLOOK_CLIENT_SECRET' ) && WPMS_OUTLOOK_CLIENT_SECRET;
+ break;
+ }
+
+ break;
+
+ case 'zoho':
+ switch ( $key ) {
+ case 'domain':
+ $return = defined( 'WPMS_ZOHO_DOMAIN' ) && WPMS_ZOHO_DOMAIN;
+ break;
+ case 'client_id':
+ $return = defined( 'WPMS_ZOHO_CLIENT_ID' ) && WPMS_ZOHO_CLIENT_ID;
+ break;
+ case 'client_secret':
+ $return = defined( 'WPMS_ZOHO_CLIENT_SECRET' ) && WPMS_ZOHO_CLIENT_SECRET;
+ break;
+ }
+
+ break;
+
+ case 'amazonses':
+ switch ( $key ) {
+ case 'client_id':
+ $return = defined( 'WPMS_AMAZONSES_CLIENT_ID' ) && WPMS_AMAZONSES_CLIENT_ID;
+ break;
+ case 'client_secret':
+ $return = defined( 'WPMS_AMAZONSES_CLIENT_SECRET' ) && WPMS_AMAZONSES_CLIENT_SECRET;
+ break;
+ case 'region':
+ $return = defined( 'WPMS_AMAZONSES_REGION' ) && WPMS_AMAZONSES_REGION;
+ break;
+ }
+
+ break;
+
+ case 'mailgun':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_MAILGUN_API_KEY' ) && WPMS_MAILGUN_API_KEY;
+ break;
+ case 'domain':
+ $return = defined( 'WPMS_MAILGUN_DOMAIN' ) && WPMS_MAILGUN_DOMAIN;
+ break;
+ case 'region':
+ $return = defined( 'WPMS_MAILGUN_REGION' ) && WPMS_MAILGUN_REGION;
+ break;
+ }
+
+ break;
+
+ case 'sendgrid':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SENDGRID_API_KEY' ) && WPMS_SENDGRID_API_KEY;
+ break;
+ case 'domain':
+ $return = defined( 'WPMS_SENDGRID_DOMAIN' ) && WPMS_SENDGRID_DOMAIN;
+ break;
+ }
+
+ break;
+
+ case 'sparkpost':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SPARKPOST_API_KEY' ) && WPMS_SPARKPOST_API_KEY;
+ break;
+ case 'region':
+ $return = defined( 'WPMS_SPARKPOST_REGION' ) && WPMS_SPARKPOST_REGION;
+ break;
+ }
+
+ break;
+
+ case 'postmark':
+ switch ( $key ) {
+ case 'server_api_token':
+ $return = defined( 'WPMS_POSTMARK_SERVER_API_TOKEN' ) && WPMS_POSTMARK_SERVER_API_TOKEN;
+ break;
+ case 'message_stream':
+ $return = defined( 'WPMS_POSTMARK_MESSAGE_STREAM' ) && WPMS_POSTMARK_MESSAGE_STREAM;
+ break;
+ }
+
+ break;
+
+ case 'smtpcom':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SMTPCOM_API_KEY' ) && WPMS_SMTPCOM_API_KEY;
+ break;
+ case 'channel':
+ $return = defined( 'WPMS_SMTPCOM_CHANNEL' ) && WPMS_SMTPCOM_CHANNEL;
+ break;
+ }
+
+ break;
+
+ case 'sendinblue':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SENDINBLUE_API_KEY' ) && WPMS_SENDINBLUE_API_KEY;
+ break;
+ case 'domain':
+ $return = defined( 'WPMS_SENDINBLUE_DOMAIN' ) && WPMS_SENDINBLUE_DOMAIN;
+ break;
+ }
+
+ break;
+
+ case 'smtp2go':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_SMTP2GO_API_KEY' ) && WPMS_SMTP2GO_API_KEY;
+ break;
+ }
+
+ break;
+
+ case 'pepipostapi':
+ switch ( $key ) {
+ case 'api_key':
+ $return = defined( 'WPMS_PEPIPOST_API_KEY' ) && WPMS_PEPIPOST_API_KEY;
+ break;
+ }
+
+ break;
+
+ case 'alert_email':
+ switch ( $key ) {
+ case 'connections':
+ $return = defined( 'WPMS_ALERT_EMAIL_SEND_TO' ) && WPMS_ALERT_EMAIL_SEND_TO;
+ break;
+ }
+
+ break;
+
+ case 'alert_slack_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = defined( 'WPMS_ALERT_SLACK_WEBHOOK_URL' ) && WPMS_ALERT_SLACK_WEBHOOK_URL;
+ break;
+ }
+
+ break;
+
+ case 'alert_teams_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = defined( 'WPMS_ALERT_TEAMS_WEBHOOK_URL' ) && WPMS_ALERT_TEAMS_WEBHOOK_URL;
+ break;
+ }
+
+ break;
+
+ case 'alert_twilio_sms':
+ switch ( $key ) {
+ case 'connections':
+ $return = defined( 'WPMS_ALERT_TWILIO_SMS_ACCOUNT_SID' ) && WPMS_ALERT_TWILIO_SMS_ACCOUNT_SID &&
+ defined( 'WPMS_ALERT_TWILIO_SMS_AUTH_TOKEN' ) && WPMS_ALERT_TWILIO_SMS_AUTH_TOKEN &&
+ defined( 'WPMS_ALERT_TWILIO_SMS_FROM_PHONE_NUMBER' ) && WPMS_ALERT_TWILIO_SMS_FROM_PHONE_NUMBER &&
+ defined( 'WPMS_ALERT_TWILIO_SMS_TO_PHONE_NUMBER' ) && WPMS_ALERT_TWILIO_SMS_TO_PHONE_NUMBER;
+ break;
+ }
+
+ break;
+
+ case 'alert_custom_webhook':
+ switch ( $key ) {
+ case 'connections':
+ $return = defined( 'WPMS_ALERT_CUSTOM_WEBHOOK_URL' ) && WPMS_ALERT_CUSTOM_WEBHOOK_URL;
+ break;
+ }
+
+ break;
+
+ case 'license':
+ switch ( $key ) {
+ case 'key':
+ $return = defined( 'WPMS_LICENSE_KEY' ) && WPMS_LICENSE_KEY;
+ break;
+ }
+
+ break;
+
+ case 'general':
+ switch ( $key ) {
+ case 'do_not_send':
+ /** @noinspection PhpUndefinedConstantInspection */
+ $return = defined( 'WPMS_DO_NOT_SEND' ) && WPMS_DO_NOT_SEND;
+ break;
+
+ case SummaryReportEmail::SETTINGS_SLUG:
+ $return = defined( 'WPMS_SUMMARY_REPORT_EMAIL_DISABLED' );
+ break;
+
+ case OptimizedEmailSending::SETTINGS_SLUG:
+ $return = defined( 'WPMS_OPTIMIZED_EMAIL_SENDING_ENABLED' );
+ break;
+ }
+
+ break;
+
+ case 'debug_events';
+ switch ( $key ) {
+ case 'retention_period':
+ $return = defined( 'WPMS_DEBUG_EVENTS_RETENTION_PERIOD' );
+ break;
+ }
+
+ break;
+ }
+
+ return apply_filters( 'wp_mail_smtp_options_is_const_defined', $return, $group, $key );
+ }
+
+ /**
+ * Set plugin options, all at once.
+ *
+ * @since 1.0.0
+ * @since 1.3.0 Added $once argument to save options only if they don't exist already.
+ * @since 1.4.0 Added Mailgun:region.
+ * @since 1.5.0 Added Outlook/AmazonSES, Email Log. Stop saving const values into DB.
+ * @since 2.5.0 Added $overwrite_existing method parameter.
+ *
+ * @param array $options Plugin options to save.
+ * @param bool $once Whether to update existing options or to add these options only once.
+ * @param bool $overwrite_existing Whether to overwrite existing settings or merge these passed options with existing ones.
+ */
+ public function set( $options, $once = false, $overwrite_existing = true ) {
+
+ // Merge existing settings with new values.
+ if ( ! $overwrite_existing ) {
+ $options = self::array_merge_recursive( $this->get_all_raw(), $options );
+ }
+
+ $options = $this->process_generic_options( $options );
+ $options = $this->process_mailer_specific_options( $options );
+ $options = apply_filters( 'wp_mail_smtp_options_set', $options );
+
+ $this->save_options( $options, $once );
+
+ do_action( 'wp_mail_smtp_options_set_after', $options );
+ }
+
+ /**
+ * Save options to DB.
+ *
+ * @since 3.7.0
+ *
+ * @param array $options Options to save.
+ * @param bool $once Whether to update existing options or to add these options only once.
+ */
+ protected function save_options( $options, $once ) {
+
+ // Whether to update existing options or to add these options only once if they don't exist yet.
+ if ( $once ) {
+ add_option( static::META_KEY, $options, '', 'no' ); // Do not autoload these options.
+ } else {
+ if ( is_multisite() && WP::use_global_plugin_settings() ) {
+ update_blog_option( get_main_site_id(), static::META_KEY, $options );
+ } else {
+ update_option( static::META_KEY, $options, 'no' );
+ }
+ }
+
+ // Now we need to re-cache values of all instances.
+ foreach ( static::$update_observers as $observer ) {
+ $observer->populate_options();
+ }
+ }
+
+ /**
+ * Process the generic plugin options.
+ *
+ * @since 2.5.0
+ *
+ * @param array $options The options array.
+ *
+ * @return array
+ */
+ protected function process_generic_options( $options ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded, Generic.Metrics.NestingLevel.MaxExceeded
+
+ foreach ( (array) $options as $group => $keys ) {
+ foreach ( $keys as $option_name => $option_value ) {
+ switch ( $group ) {
+ case 'mail':
+ switch ( $option_name ) {
+ case 'from_name':
+ $options[ $group ][ $option_name ] = sanitize_text_field( $option_value );
+ break;
+ case 'mailer':
+ $mailer = sanitize_text_field( $option_value );
+
+ $mailer = in_array( $mailer, self::$mailers, true ) ? $mailer : 'mail';
+
+ $options[ $group ][ $option_name ] = $mailer;
+ break;
+ case 'from_email':
+ if ( filter_var( $option_value, FILTER_VALIDATE_EMAIL ) ) {
+ $options[ $group ][ $option_name ] = sanitize_email( $option_value );
+ } else {
+ $options[ $group ][ $option_name ] = sanitize_email(
+ wp_mail_smtp()->get_processor()->get_default_email()
+ );
+ }
+ break;
+ case 'return_path':
+ case 'from_name_force':
+ case 'from_email_force':
+ $options[ $group ][ $option_name ] = (bool) $option_value;
+ break;
+ }
+ break;
+
+ case 'general':
+ switch ( $option_name ) {
+ case 'do_not_send':
+ case 'am_notifications_hidden':
+ case 'email_delivery_errors_hidden':
+ case 'dashboard_widget_hidden':
+ case 'uninstall':
+ case UsageTracking::SETTINGS_SLUG:
+ case SummaryReportEmail::SETTINGS_SLUG:
+ case OptimizedEmailSending::SETTINGS_SLUG:
+ $options[ $group ][ $option_name ] = (bool) $option_value;
+ break;
+ }
+
+ case 'debug_events':
+ switch ( $option_name ) {
+ case 'email_debug':
+ $options[ $group ][ $option_name ] = (bool) $option_value;
+ break;
+ case 'retention_period':
+ $options[ $group ][ $option_name ] = (int) $option_value;
+ break;
+ }
+ }
+ }
+ }
+
+ return $options;
+ }
+
+ /**
+ * Process mailers-specific plugin options.
+ *
+ * @since 2.5.0
+ *
+ * @param array $options The options array.
+ *
+ * @return array
+ */
+ protected function process_mailer_specific_options( $options ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded, Generic.Metrics.NestingLevel.MaxExceeded
+
+ if (
+ ! empty( $options['mail']['mailer'] ) &&
+ isset( $options[ $options['mail']['mailer'] ] ) &&
+ in_array( $options['mail']['mailer'], self::$mailers, true )
+ ) {
+
+ $mailer = $options['mail']['mailer'];
+
+ foreach ( $options[ $mailer ] as $option_name => $option_value ) {
+ switch ( $option_name ) {
+ case 'host': // smtp.
+ case 'user': // smtp.
+ case 'encryption': // smtp.
+ case 'region': // mailgun/amazonses/sparkpost.
+ $options[ $mailer ][ $option_name ] = $this->is_const_defined( $mailer, $option_name ) ? '' : sanitize_text_field( $option_value );
+ break; // smtp.
+ case 'port':
+ $options[ $mailer ][ $option_name ] = $this->is_const_defined( $mailer, $option_name ) ? 25 : (int) $option_value;
+ break;
+ case 'auth': // smtp.
+ case 'autotls': // smtp.
+ $option_value = (bool) $option_value;
+
+ $options[ $mailer ][ $option_name ] = $this->is_const_defined( $mailer, $option_name ) ? false : $option_value;
+ break;
+
+ case 'pass': // smtp.
+ // Do not process as they may contain certain special characters, but allow to be overwritten using constants.
+ $option_value = trim( (string) $option_value );
+ $options[ $mailer ][ $option_name ] = $this->is_const_defined( $mailer, $option_name ) ? '' : $option_value;
+
+ if ( $mailer === 'smtp' && ! $this->is_const_defined( 'smtp', 'pass' ) ) {
+ try {
+ $options[ $mailer ][ $option_name ] = Crypto::encrypt( $option_value );
+ } catch ( \Exception $e ) {} // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch, Squiz.Commenting.EmptyCatchComment.Missing, Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace
+ }
+ break;
+
+ case 'api_key': // mailgun/sendgrid/sendinblue/pepipostapi/smtpcom/sparkpost/sendlayer/smtp2go.
+ case 'domain': // mailgun/zoho/sendgrid/sendinblue.
+ case 'client_id': // gmail/outlook/amazonses/zoho.
+ case 'client_secret': // gmail/outlook/amazonses/zoho.
+ case 'auth_code': // gmail/outlook.
+ case 'channel': // smtpcom.
+ case 'server_api_token': // postmark.
+ case 'message_stream': // postmark.
+ $options[ $mailer ][ $option_name ] = $this->is_const_defined( $mailer, $option_name ) ? '' : sanitize_text_field( $option_value );
+ break;
+
+ case 'access_token': // gmail/outlook/zoho, is an array.
+ case 'user_details': // outlook/zoho, is an array.
+ // These options don't support constants.
+ $options[ $mailer ][ $option_name ] = $option_value;
+ break;
+ }
+ }
+ }
+
+ return $options;
+ }
+
+ /**
+ * Merge recursively, including a proper substitution of values in sub-arrays when keys are the same.
+ * It's more like array_merge() and array_merge_recursive() combined.
+ *
+ * @since 1.0.0
+ *
+ * @return array
+ */
+ public static function array_merge_recursive() {
+
+ $arrays = func_get_args();
+
+ if ( count( $arrays ) < 2 ) {
+ return isset( $arrays[0] ) ? $arrays[0] : array();
+ }
+
+ $merged = array();
+
+ while ( $arrays ) {
+ $array = array_shift( $arrays );
+
+ if ( ! is_array( $array ) ) {
+ return array();
+ }
+
+ if ( empty( $array ) ) {
+ continue;
+ }
+
+ foreach ( $array as $key => $value ) {
+ if ( is_string( $key ) ) {
+ if (
+ is_array( $value ) &&
+ array_key_exists( $key, $merged ) &&
+ is_array( $merged[ $key ] )
+ ) {
+ $merged[ $key ] = call_user_func( __METHOD__, $merged[ $key ], $value );
+ } else {
+ $merged[ $key ] = $value;
+ }
+ } else {
+ $merged[] = $value;
+ }
+ }
+ }
+
+ return $merged;
+ }
+
+ /**
+ * Check whether the site is using Pepipost SMTP or not.
+ *
+ * @deprecated 2.4.0
+ *
+ * @since 1.0.0
+ *
+ * @return bool
+ */
+ public function is_pepipost_active() {
+
+ _deprecated_function(
+ __METHOD__,
+ '2.4.0',
+ 'WPMailSMTP\Options::is_mailer_active()'
+ );
+
+ return apply_filters( 'wp_mail_smtp_options_is_pepipost_active', $this->is_mailer_active( 'pepipost' ) );
+ }
+
+ /**
+ * Check whether the site is using provided mailer or not.
+ *
+ * @since 2.3.0
+ *
+ * @param string $mailer The mailer slug.
+ *
+ * @return bool
+ */
+ public function is_mailer_active( $mailer ) {
+
+ $mailer = sanitize_key( $mailer );
+
+ return apply_filters(
+ "wp_mail_smtp_options_is_mailer_active_{$mailer}",
+ $this->get( 'mail', 'mailer' ) === $mailer
+ );
+ }
+
+ /**
+ * Check whether the site is using Pepipost/SMTP as a mailer or not.
+ *
+ * @since 1.1.0
+ *
+ * @return bool
+ */
+ public function is_mailer_smtp() {
+ return apply_filters( 'wp_mail_smtp_options_is_mailer_smtp', in_array( $this->get( 'mail', 'mailer' ), array( 'pepipost', 'smtp' ), true ) );
+ }
+
+ /**
+ * Get all the options, but without stripping the slashes.
+ *
+ * @since 2.5.0
+ *
+ * @return array
+ */
+ public function get_all_raw() {
+
+ $options = $this->options;
+
+ foreach ( $options as $group => $g_value ) {
+ foreach ( $g_value as $key => $value ) {
+ $options[ $group ][ $key ] = $this->get( $group, $key, false );
+ }
+ }
+
+ return $options;
+ }
+
+ /**
+ * Parse boolean value from string.
+ *
+ * @since 2.8.0
+ *
+ * @param string|boolean $value String or boolean value.
+ *
+ * @return boolean
+ */
+ public function parse_boolean( $value ) {
+
+ // Return early if it's boolean.
+ if ( is_bool( $value ) ) {
+ return $value;
+ }
+
+ $value = trim( $value );
+
+ return $value === 'true';
+ }
+
+ /**
+ * Get a message of a constant that was set inside wp-config.php file.
+ *
+ * @since 2.8.0
+ *
+ * @param string $constant Constant name.
+ *
+ * @return string
+ */
+ public function get_const_set_message( $constant ) {
+
+ return sprintf( /* translators: %1$s - constant that was used; %2$s - file where it was used. */
+ esc_html__( 'The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation.', 'wp-mail-smtp' ),
+ '' . esc_html( $constant ) . '
',
+ 'wp-config.php
'
+ );
+ }
+
+ /**
+ * Whether option was changed.
+ * Can be used only before option save to DB.
+ *
+ * @since 3.0.0
+ *
+ * @param string $new_value Submitted value (e.g from $_POST).
+ * @param string $group Group key.
+ * @param string $key Option key.
+ *
+ * @return bool
+ */
+ public function is_option_changed( $new_value, $group, $key ) {
+
+ $old_value = $this->get( $group, $key );
+
+ return $old_value !== $new_value;
+ }
+
+ /**
+ * Whether constant was changed.
+ * Can be used only for insecure options.
+ *
+ * @since 3.0.0
+ *
+ * @param string $group Group key.
+ * @param string $key Option key.
+ *
+ * @return bool
+ */
+ public function is_const_changed( $group, $key ) {
+
+ if ( ! $this->is_const_defined( $group, $key ) ) {
+ return false;
+ }
+
+ // Prevent double options update on multiple function call for same option.
+ static $cache = [];
+
+ $cache_key = $group . '_' . $key;
+
+ if ( isset( $cache[ $cache_key ] ) ) {
+ return $cache[ $cache_key ];
+ }
+
+ $value = $this->get( $group, $key );
+
+ // Get old value from DB.
+ add_filter( 'wp_mail_smtp_options_is_const_enabled', '__return_false', PHP_INT_MAX );
+ $old_value = $this->get( $group, $key );
+ remove_filter( 'wp_mail_smtp_options_is_const_enabled', '__return_false', PHP_INT_MAX );
+
+ $changed = $value !== $old_value;
+
+ // Save new constant value to DB.
+ if ( $changed ) {
+ $old_opt = $this->get_all_raw();
+
+ $old_opt[ $group ][ $key ] = $value;
+ $this->set( $old_opt );
+ }
+
+ $cache[ $cache_key ] = $changed;
+
+ return $changed;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Processor.php b/wp-content/plugins/wp-mail-smtp/src/Processor.php
new file mode 100644
index 000000000..2fb1ce39b
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Processor.php
@@ -0,0 +1,529 @@
+connections_manager = wp_mail_smtp()->get_connections_manager();
+ } else {
+ $this->connections_manager = $connections_manager;
+ }
+ }
+
+ /**
+ * Assign all hooks to proper places.
+ *
+ * @since 1.0.0
+ */
+ public function hooks() {
+
+ add_action( 'phpmailer_init', array( $this, 'phpmailer_init' ) );
+
+ // High priority number tries to ensure our plugin code executes last and respects previous hooks, if not forced.
+ add_filter( 'wp_mail_from', array( $this, 'filter_mail_from_email' ), PHP_INT_MAX );
+ add_filter( 'wp_mail_from_name', array( $this, 'filter_mail_from_name' ), PHP_INT_MAX );
+
+ add_action( 'wp_mail', [ $this, 'capture_early_wp_mail_filter_call' ], - PHP_INT_MAX );
+ add_action( 'wp_mail', [ $this, 'capture_late_wp_mail_filter_call' ], PHP_INT_MAX );
+ }
+
+ /**
+ * Redefine certain PHPMailer options with our custom ones.
+ *
+ * @since 1.0.0
+ *
+ * @param \PHPMailer $phpmailer It's passed by reference, so no need to return anything.
+ */
+ public function phpmailer_init( $phpmailer ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.MaxExceeded
+
+ $connection = $this->connections_manager->get_mail_connection();
+ $connection_options = $connection->get_options();
+ $mailer = $connection->get_mailer_slug();
+
+ // Check that mailer is not blank, and if mailer=smtp, host is not blank.
+ if (
+ ! $mailer ||
+ ( 'smtp' === $mailer && ! $connection_options->get( 'smtp', 'host' ) )
+ ) {
+ return;
+ }
+
+ // If the mailer is pepipost, make sure we have a username and password.
+ if (
+ 'pepipost' === $mailer &&
+ ( ! $connection_options->get( 'pepipost', 'user' ) && ! $connection_options->get( 'pepipost', 'pass' ) )
+ ) {
+ return;
+ }
+
+ // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
+
+ // Set the mailer type as per config above, this overrides the already called isMail method.
+ // It's basically always 'smtp'.
+ $phpmailer->Mailer = $mailer;
+
+ // Set the Sender (return-path) if required.
+ if ( $connection_options->get( 'mail', 'return_path' ) ) {
+ $phpmailer->Sender = $phpmailer->From;
+ }
+
+ // Set the SMTPSecure value, if set to none, leave this blank. Possible values: 'ssl', 'tls', ''.
+ if ( 'none' === $connection_options->get( $mailer, 'encryption' ) ) {
+ $phpmailer->SMTPSecure = '';
+ } else {
+ $phpmailer->SMTPSecure = $connection_options->get( $mailer, 'encryption' );
+ }
+
+ // Check if user has disabled SMTPAutoTLS.
+ if ( $connection_options->get( $mailer, 'encryption' ) !== 'tls' && ! $connection_options->get( $mailer, 'autotls' ) ) {
+ $phpmailer->SMTPAutoTLS = false;
+ }
+
+ // Check if original WP from email can be set as the reply_to attribute.
+ if ( $this->allow_setting_original_from_email_to_reply_to( $phpmailer->getReplyToAddresses(), $mailer ) ) {
+ $phpmailer->addReplyTo( $this->wp_mail_from );
+ }
+
+ // If we're sending via SMTP, set the host.
+ if ( 'smtp' === $mailer ) {
+ // Set the other options.
+ $phpmailer->Host = $connection_options->get( $mailer, 'host' );
+ $phpmailer->Port = $connection_options->get( $mailer, 'port' );
+
+ // If we're using smtp auth, set the username & password.
+ if ( $connection_options->get( $mailer, 'auth' ) ) {
+ $phpmailer->SMTPAuth = true;
+ $phpmailer->Username = $connection_options->get( $mailer, 'user' );
+ $phpmailer->Password = $connection_options->get( $mailer, 'pass' );
+ }
+ } elseif ( 'pepipost' === $mailer ) {
+ // Set the Pepipost settings for BC.
+ $phpmailer->Mailer = 'smtp';
+ $phpmailer->Host = 'smtp.pepipost.com';
+ $phpmailer->Port = $connection_options->get( $mailer, 'port' );
+ $phpmailer->SMTPSecure = $connection_options->get( $mailer, 'encryption' ) === 'none' ? '' : $connection_options->get( $mailer, 'encryption' );
+ $phpmailer->SMTPAuth = true;
+ $phpmailer->Username = $connection_options->get( $mailer, 'user' );
+ $phpmailer->Password = $connection_options->get( $mailer, 'pass' );
+ }
+
+ $phpmailer->Timeout = 30;
+ // phpcs:enable
+
+ // Maybe set default reply-to header.
+ $this->set_default_reply_to( $phpmailer );
+
+ // You can add your own options here.
+ // See the phpmailer documentation for more info: https://github.com/PHPMailer/PHPMailer/tree/5.2-stable.
+ /* @noinspection PhpUnusedLocalVariableInspection It's passed by reference. */
+ $phpmailer = apply_filters( 'wp_mail_smtp_custom_options', $phpmailer );
+ }
+
+ /**
+ * Check if it's allowed to set the original WP from email to the reply_to field.
+ *
+ * @since 2.1.0
+ *
+ * @param array $reply_to Array of currently set reply to emails.
+ * @param string $mailer The slug of current mailer.
+ *
+ * @return bool
+ */
+ protected function allow_setting_original_from_email_to_reply_to( $reply_to, $mailer ) {
+
+ $connection = $this->connections_manager->get_mail_connection();
+ $connection_options = $connection->get_options();
+ $forced = $connection_options->get( 'mail', 'from_email_force' );
+ $from_email = $connection_options->get( 'mail', 'from_email' );
+
+ if ( ! empty( $reply_to ) || empty( $this->wp_mail_from ) ) {
+ return false;
+ }
+
+ if ( in_array( $mailer, [ 'zoho' ], true ) ) {
+ $sender = $connection_options->get( $mailer, 'user_details' );
+ $from_email = ! empty( $sender['email'] ) ? $sender['email'] : '';
+ $forced = true;
+ }
+
+ if (
+ $from_email === $this->wp_mail_from ||
+ ! $forced
+ ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * This method will be called every time 'smtp' and 'mail' mailers will be used to send emails.
+ *
+ * @since 1.3.0
+ * @since 1.5.0 Added a do_action() to be able to hook into.
+ *
+ * @param bool $is_sent If the email was sent.
+ * @param array $to To email address.
+ * @param array $cc CC email addresses.
+ * @param array $bcc BCC email addresses.
+ * @param string $subject The email subject.
+ * @param string $body The email body.
+ * @param string $from The from email address.
+ */
+ public static function send_callback( $is_sent, $to, $cc, $bcc, $subject, $body, $from ) {
+
+ if ( ! $is_sent ) {
+ // Add mailer to the beginning and save to display later.
+ Debug::set(
+ 'Mailer: ' . esc_html( wp_mail_smtp()->get_providers()->get_options( wp_mail_smtp()->get_connections_manager()->get_mail_connection()->get_mailer_slug() )->get_title() ) . "\r\n" .
+ 'PHPMailer was able to connect to SMTP server but failed while trying to send an email.'
+ );
+ } else {
+ Debug::clear();
+ }
+
+ do_action( 'wp_mail_smtp_mailcatcher_smtp_send_after', $is_sent, $to, $cc, $bcc, $subject, $body, $from );
+ }
+
+ /**
+ * Validate the email address.
+ *
+ * @since 3.6.0
+ *
+ * @param string $email The email address.
+ *
+ * @return boolean True if email address is valid, false on failure.
+ */
+ public static function is_email_callback( $email ) {
+
+ return (bool) is_email( $email );
+ }
+
+ /**
+ * Modify the email address that is used for sending emails.
+ *
+ * @since 1.0.0
+ * @since 1.3.0 Forcing email rewrite if option is selected.
+ * @since 1.7.0 Default email may be empty, so pay attention to that as well.
+ *
+ * @param string $wp_email The email address passed by the filter.
+ *
+ * @return string
+ */
+ public function filter_mail_from_email( $wp_email ) {
+
+ // Save the original from address.
+ $this->filtered_from_email = filter_var( $wp_email, FILTER_VALIDATE_EMAIL );
+
+ $connection = $this->connections_manager->get_mail_connection();
+ $connection_options = $connection->get_options();
+ $forced = $connection_options->get( 'mail', 'from_email_force' );
+ $from_email = $connection_options->get( 'mail', 'from_email' );
+ $def_email = WP::get_default_email();
+
+ // Save the "original" set WP email from address for later use.
+ if ( $wp_email !== $def_email ) {
+ $this->wp_mail_from = filter_var( $wp_email, FILTER_VALIDATE_EMAIL );
+ }
+
+ // Return FROM EMAIL if forced in settings.
+ if ( $forced && ! empty( $from_email ) ) {
+ return $from_email;
+ }
+
+ // If the FROM EMAIL is not the default, return it unchanged.
+ if ( ! empty( $def_email ) && $wp_email !== $def_email ) {
+ return $wp_email;
+ }
+
+ return ! empty( $from_email ) ? $from_email : $wp_email;
+ }
+
+ /**
+ * Modify the sender name that is used for sending emails.
+ *
+ * @since 1.0.0
+ * @since 1.3.0 Forcing name rewrite if option is selected.
+ *
+ * @param string $name The from name passed through the filter.
+ *
+ * @return string
+ */
+ public function filter_mail_from_name( $name ) {
+
+ // Save the original from name.
+ $this->filtered_from_name = $name;
+
+ $connection = $this->connections_manager->get_mail_connection();
+ $connection_options = $connection->get_options();
+ $force = $connection_options->get( 'mail', 'from_name_force' );
+
+ // If the FROM NAME is not the default and not forced, return it unchanged.
+ if ( ! $force && $name !== $this->get_default_name() ) {
+ return $name;
+ }
+
+ $name = $connection_options->get( 'mail', 'from_name' );
+
+ return $name;
+ }
+
+ /**
+ * Get the default email address based on domain name.
+ *
+ * @since 1.0.0
+ * @since 1.7.0 May return an empty string.
+ *
+ * @return string Empty string when we aren't able to get the site domain (CLI, misconfigured server etc).
+ */
+ public function get_default_email() {
+
+ $server_name = Geo::get_site_domain();
+
+ if ( empty( $server_name ) ) {
+ return '';
+ }
+
+ // Get rid of www.
+ $sitename = strtolower( $server_name );
+ if ( substr( $sitename, 0, 4 ) === 'www.' ) {
+ $sitename = substr( $sitename, 4 );
+ }
+
+ return 'wordpress@' . $sitename;
+ }
+
+ /**
+ * Get the default email FROM NAME generated by WordPress.
+ *
+ * @since 1.3.0
+ *
+ * @return string
+ */
+ public function get_default_name() {
+ return 'WordPress';
+ }
+
+ /**
+ * Get or create the phpmailer.
+ *
+ * @since 1.9.0
+ *
+ * @return MailCatcherInterface
+ */
+ public function get_phpmailer() {
+
+ global $phpmailer;
+
+ // Make sure the PHPMailer class has been instantiated.
+ if ( ! is_object( $phpmailer ) || ! is_a( $phpmailer, 'PHPMailer' ) ) {
+ $phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
+ }
+
+ return $phpmailer;
+ }
+
+ /**
+ * Set the default reply_to header, if:
+ * - no other reply_to headers are already set and,
+ * - the default reply_to address filter `wp_mail_smtp_processor_default_reply_to_addresses` is configured.
+ *
+ * @since 2.1.1
+ *
+ * @param MailCatcherInterface $phpmailer The PHPMailer object.
+ */
+ private function set_default_reply_to( $phpmailer ) {
+
+ if ( ! empty( $phpmailer->getReplyToAddresses() ) ) {
+ return;
+ }
+
+ $default_reply_to_emails = apply_filters( 'wp_mail_smtp_processor_set_default_reply_to', '' );
+
+ if ( empty( $default_reply_to_emails ) ) {
+ return;
+ }
+
+ foreach ( explode( ',', $default_reply_to_emails ) as $email ) {
+ $email = trim( $email );
+
+ if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
+ $phpmailer->addReplyTo( $email );
+ }
+ }
+ }
+
+ /**
+ * Capture `wp_mail` filter call on earliest priority.
+ *
+ * Currently used to capture the original `wp_mail` arguments before they are filtered.
+ *
+ * @since 4.0.0
+ *
+ * @param array $args The original `wp_mail` arguments.
+ *
+ * @return array
+ */
+ public function capture_early_wp_mail_filter_call( $args ) {
+
+ $this->original_wp_mail_args = $args;
+
+ return $args;
+ }
+
+ /**
+ * Capture `wp_mail` filter call on latest priority.
+ *
+ * Currently used to capture the `wp_mail` arguments after they are filtered
+ * and capture `wp_mail` function call.
+ *
+ * @since 4.0.0
+ *
+ * @param array $args The filtered `wp_mail` arguments.
+ *
+ * @return array
+ */
+ public function capture_late_wp_mail_filter_call( $args ) {
+
+ $this->filtered_wp_mail_args = $args;
+
+ $this->capture_wp_mail_call();
+
+ return $args;
+ }
+
+ /**
+ * Capture `wp_mail` function call.
+ *
+ * @since 4.0.0
+ */
+ private function capture_wp_mail_call() {
+
+ /**
+ * Fires on `wp_mail` function call.
+ *
+ * @since 4.0.0
+ */
+ do_action( 'wp_mail_smtp_processor_capture_wp_mail_call' );
+ }
+
+ /**
+ * Get the original `wp_mail` arguments.
+ *
+ * @since 4.0.0
+ *
+ * @return array
+ */
+ public function get_original_wp_mail_args() {
+
+ return $this->original_wp_mail_args;
+ }
+
+ /**
+ * Get the filtered `wp_mail` arguments.
+ *
+ * @since 4.0.0
+ *
+ * @return array
+ */
+ public function get_filtered_wp_mail_args() {
+
+ return $this->filtered_wp_mail_args;
+ }
+
+ /**
+ * Get the filtered `wp_mail_from` value.
+ *
+ * @since 4.0.0
+ *
+ * @return string
+ */
+ public function get_filtered_from_email() {
+
+ return $this->filtered_from_email;
+ }
+
+ /**
+ * Get the filtered `wp_mail_from_name` value.
+ *
+ * @since 4.0.0
+ *
+ * @return string
+ */
+ public function get_filtered_from_name() {
+
+ return $this->filtered_from_name;
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Providers/AmazonSES/Options.php b/wp-content/plugins/wp-mail-smtp/src/Providers/AmazonSES/Options.php
new file mode 100644
index 000000000..57d5c95ea
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Providers/AmazonSES/Options.php
@@ -0,0 +1,44 @@
+ wp_mail_smtp()->assets_url . '/images/providers/aws.svg',
+ 'slug' => 'amazonses',
+ 'title' => esc_html__( 'Amazon SES', 'wp-mail-smtp' ),
+ 'disabled' => true,
+ )
+ );
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function display_options() {
+
+ ?>
+
Server:';
+
+ $gmail_text[] = 'OpenSSL: ' . ( extension_loaded( 'openssl' ) && defined( 'OPENSSL_VERSION_TEXT' ) ? OPENSSL_VERSION_TEXT : 'No' );
+ $gmail_text[] = 'PHP.allow_url_fopen: ' . ( ini_get( 'allow_url_fopen' ) ? 'Yes' : 'No' );
+ $gmail_text[] = 'PHP.stream_socket_client(): ' . ( function_exists( 'stream_socket_client' ) ? 'Yes' : 'No' );
+ $gmail_text[] = 'PHP.fsockopen(): ' . ( function_exists( 'fsockopen' ) ? 'Yes' : 'No' );
+ $gmail_text[] = 'PHP.curl_version(): ' . $curl_ver;
+ if ( function_exists( 'apache_get_modules' ) ) {
+ $modules = apache_get_modules();
+ $gmail_text[] = 'Apache.mod_security: ' . ( in_array( 'mod_security', $modules, true ) || in_array( 'mod_security2', $modules, true ) ? 'Yes' : 'No' );
+ }
+ if ( function_exists( 'selinux_is_enabled' ) ) {
+ $gmail_text[] = 'OS.SELinux: ' . ( selinux_is_enabled() ? 'Yes' : 'No' );
+ }
+ if ( function_exists( 'grsecurity_is_enabled' ) ) {
+ $gmail_text[] = 'OS.grsecurity: ' . ( grsecurity_is_enabled() ? 'Yes' : 'No' );
+ }
+
+ return implode( '
', $gmail_text );
+ }
+
+ /**
+ * Whether the mailer has all its settings correctly set up and saved.
+ *
+ * @since 1.4.0
+ *
+ * @return bool
+ */
+ public function is_mailer_complete() {
+
+ if ( ! $this->is_php_compatible() ) {
+ return false;
+ }
+
+ $auth = new Auth( $this->connection );
+
+ if (
+ $auth->is_clients_saved() &&
+ ! $auth->is_auth_required()
+ ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Process the exception message and append additional explanation to it.
+ *
+ * @since 2.1.0
+ *
+ * @param mixed $message A string or an object with strings.
+ *
+ * @return string
+ */
+ protected function process_exception_message( $message ) {
+
+ // Transform the passed message to a string.
+ if ( ! is_string( $message ) ) {
+ $message = wp_json_encode( $message );
+ } else {
+ $message = wp_strip_all_tags( $message, false );
+ }
+
+ // Define known errors, that we will scan the message with.
+ $known_errors = [
+ [
+ 'errors' => [
+ 'invalid_grant',
+ ],
+ 'explanation' => esc_html__( 'Please re-grant Google app permissions!', 'wp-mail-smtp' ) . ' ' . WP::EOL .
+ esc_html__( 'Go to WP Mail SMTP plugin settings page. Click the “Remove OAuth Connection” button.', 'wp-mail-smtp' ) . ' ' . WP::EOL .
+ esc_html__( 'Then click the “Allow plugin to send emails using your Google account” button and re-enable access.', 'wp-mail-smtp' ),
+ ],
+ ];
+
+ // Check if we get a match and append the explanation to the original message.
+ foreach ( $known_errors as $error ) {
+ foreach ( $error['errors'] as $error_fragment ) {
+ if ( false !== strpos( $message, $error_fragment ) ) {
+ return Helpers::format_error_message( $message, '', $error['explanation'] );
+ }
+ }
+ }
+
+ // If we get no match we return the original message (as a string).
+ return $message;
+ }
+
+ /**
+ * Get the default email addresses for the reply to email parameter.
+ *
+ * @deprecated 2.1.1
+ *
+ * @since 2.1.0
+ * @since 2.1.1 Not used anymore.
+ *
+ * @return array
+ */
+ public function default_reply_to_addresses() {
+
+ _deprecated_function( __CLASS__ . '::' . __METHOD__, '2.1.1 of WP Mail SMTP plugin' );
+
+ $gmail_creds = ( new Auth( $this->connection ) )->get_user_info();
+
+ if ( empty( $gmail_creds['email'] ) ) {
+ return [];
+ }
+
+ return [
+ $gmail_creds['email'] => [
+ $gmail_creds['email'],
+ '',
+ ],
+ ];
+ }
+}
diff --git a/wp-content/plugins/wp-mail-smtp/src/Providers/Gmail/Options.php b/wp-content/plugins/wp-mail-smtp/src/Providers/Gmail/Options.php
new file mode 100644
index 000000000..7562b7a82
--- /dev/null
+++ b/wp-content/plugins/wp-mail-smtp/src/Providers/Gmail/Options.php
@@ -0,0 +1,291 @@
+ wp_mail_smtp()->assets_url . '/images/providers/google.svg',
+ 'slug' => self::SLUG,
+ 'title' => esc_html__( 'Google / Gmail', 'wp-mail-smtp' ),
+ 'description' => sprintf(
+ wp_kses( /* translators: %s - URL to our Gmail doc. */
+ __( 'Our Gmail mailer works with any Gmail or Google Workspace account via the Google API. You can send WordPress emails from your main email address or a Gmail alias, and it\'s more secure than connecting to Gmail using SMTP credentials. We now have a One-Click Setup, which simply asks you to authorize your Google account to use our app and takes care of everything for you. Alternatively, you can connect manually, which involves several steps that are more technical than other mailer options, so we created a detailed guide to walk you through the process.
To get started, read our Gmail documentation.', 'wp-mail-smtp' ),
+ [
+ 'br' => [],
+ 'a' => [
+ 'href' => [],
+ 'rel' => [],
+ 'target' => [],
+ ],
+ ]
+ ),
+ esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/', 'Gmail documentation' ) )
+ ),
+ 'notices' => [
+ 'educational' => wp_kses(
+ __( 'The Gmail mailer works well for sites that send low numbers of emails. However, Gmail\'s API has rate limitations and a number of additional restrictions that can lead to challenges during setup.
If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option.', 'wp-mail-smtp' ),
+ [
+ 'br' => [],
+ ]
+ ),
+ ],
+ 'php' => '5.6',
+ 'supports' => [
+ 'from_email' => true,
+ 'from_name' => true,
+ 'return_path' => false,
+ 'from_email_force' => true,
+ 'from_name_force' => true,
+ ],
+ ],
+ $connection
+ );
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function display_options() {
+
+ // Do not display options if PHP version is not correct.
+ if ( ! $this->is_php_correct() ) {
+ $this->display_php_warning();
+
+ return;
+ }
+ ?>
+
+ is_pro() ) : ?>
+ ' . esc_html( $user['email'] ) . '
'
+ );
+ }
+ ?>
+
+
+ +
++ +
+ + + + + ++ +
+ + get_capability_manage_options() ) ) { + return; + } + + if ( + ! isset( $_GET['gmail_remove_nonce'] ) || + ! wp_verify_nonce( sanitize_key( $_GET['gmail_remove_nonce'] ), 'gmail_remove' ) + ) { + return; + } + + if ( $this->connection->get_mailer_slug() !== $this->get_slug() ) { + return; + } + + $old_opt = $this->connection_options->get_all_raw(); + + unset( $old_opt[ $this->get_slug() ]['access_token'] ); + unset( $old_opt[ $this->get_slug() ]['refresh_token'] ); + unset( $old_opt[ $this->get_slug() ]['user_details'] ); + unset( $old_opt[ $this->get_slug() ]['auth_code'] ); + + $this->connection_options->set( $old_opt ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Providers/Loader.php b/wp-content/plugins/wp-mail-smtp/src/Providers/Loader.php new file mode 100644 index 000000000..90574e237 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Providers/Loader.php @@ -0,0 +1,236 @@ + 'WPMailSMTP\Providers\Mail\\', + 'sendlayer' => 'WPMailSMTP\Providers\Sendlayer\\', + 'smtpcom' => 'WPMailSMTP\Providers\SMTPcom\\', + 'sendinblue' => 'WPMailSMTP\Providers\Sendinblue\\', + 'amazonses' => 'WPMailSMTP\Providers\AmazonSES\\', + 'gmail' => 'WPMailSMTP\Providers\Gmail\\', + 'mailgun' => 'WPMailSMTP\Providers\Mailgun\\', + 'outlook' => 'WPMailSMTP\Providers\Outlook\\', + 'pepipostapi' => 'WPMailSMTP\Providers\PepipostAPI\\', + 'postmark' => 'WPMailSMTP\Providers\Postmark\\', + 'sendgrid' => 'WPMailSMTP\Providers\Sendgrid\\', + 'smtp2go' => 'WPMailSMTP\Providers\SMTP2GO\\', + 'sparkpost' => 'WPMailSMTP\Providers\SparkPost\\', + 'zoho' => 'WPMailSMTP\Providers\Zoho\\', + 'smtp' => 'WPMailSMTP\Providers\SMTP\\', + 'pepipost' => 'WPMailSMTP\Providers\Pepipost\\', + ]; + + /** + * Get all the supported providers. + * + * @since 1.0.0 + * + * @return array + */ + public function get_providers() { + + if ( ! Options::init()->is_mailer_active( 'pepipost' ) ) { + unset( $this->providers['pepipost'] ); + } + + if ( ! Options::init()->is_mailer_active( 'pepipostapi' ) ) { + unset( $this->providers['pepipostapi'] ); + } + + return apply_filters( 'wp_mail_smtp_providers_loader_get_providers', $this->providers ); + } + + /** + * Get a single provider FQN-path based on its name. + * + * @since 1.0.0 + * + * @param string $provider + * + * @return string|null + */ + public function get_provider_path( $provider ) { + + $provider = sanitize_key( $provider ); + + $providers = $this->get_providers(); + + return apply_filters( + 'wp_mail_smtp_providers_loader_get_provider_path', + isset( $providers[ $provider ] ) ? $providers[ $provider ] : null, + $provider + ); + } + + /** + * Get the provider options, if exists. + * + * @since 1.0.0 + * + * @param string $provider + * @param ConnectionInterface $connection The Connection object. + * + * @return OptionsAbstract|null + */ + public function get_options( $provider, $connection = null ) { + + return $this->get_entity( $provider, 'Options', [ $connection ] ); + } + + /** + * Get all options of all providers. + * + * @since 1.0.0 + * + * @param ConnectionInterface $connection The Connection object. + * + * @return OptionsAbstract[] + */ + public function get_options_all( $connection = null ) { + + $options = array(); + + foreach ( $this->get_providers() as $provider => $path ) { + + $option = $this->get_options( $provider, $connection ); + + if ( ! $option instanceof OptionsAbstract ) { + continue; + } + + $slug = $option->get_slug(); + $title = $option->get_title(); + + if ( empty( $title ) || empty( $slug ) ) { + continue; + } + + $options[] = $option; + } + + return apply_filters( 'wp_mail_smtp_providers_loader_get_providers_all', $options ); + } + + /** + * Get the provider mailer, if exists. + * + * @since 1.0.0 + * + * @param string $provider The provider name. + * @param MailCatcherInterface $phpmailer The MailCatcher object. + * @param ConnectionInterface $connection The Connection object. + * + * @return MailerAbstract|null + */ + public function get_mailer( $provider, $phpmailer, $connection = null ) { + + return $this->get_entity( $provider, 'Mailer', [ $phpmailer, $connection ] ); + } + + /** + * Get the provider auth, if exists. + * + * @param string $provider + * @param ConnectionInterface $connection The Connection object. + * + * @return AuthAbstract|null + */ + public function get_auth( $provider, $connection = null ) { + + return $this->get_entity( $provider, 'Auth', [ $connection ] ); + } + + /** + * Get a generic entity based on the request. + * + * @uses \ReflectionClass + * + * @since 1.0.0 + * + * @param string $provider + * @param string $request + * @param array $args Entity instantiation arguments. + * + * @return OptionsAbstract|MailerAbstract|AuthAbstract|null + */ + protected function get_entity( $provider, $request, $args = [] ) { + + $provider = sanitize_key( $provider ); + $request = sanitize_text_field( $request ); + $path = $this->get_provider_path( $provider ); + $entity = null; + + if ( empty( $path ) ) { + return $entity; + } + + try { + $reflection = new \ReflectionClass( $path . $request ); + + if ( file_exists( $reflection->getFileName() ) ) { + $class = $path . $request; + $entity = new $class( ...$args ); + } + } + catch ( \Exception $e ) { + Debug::set( "There was a problem while retrieving {$request} for {$provider}: {$e->getMessage()}" ); + $entity = null; + } + + return apply_filters( 'wp_mail_smtp_providers_loader_get_entity', $entity, $provider, $request, $args ); + } + + /** + * Get supports options for all mailers. + * + * @since 2.3.0 + * + * @return array + */ + public function get_supports_all() { + + $supports = []; + + foreach ( $this->get_providers() as $provider => $path ) { + $option = $this->get_options( $provider ); + + if ( ! $option instanceof OptionsAbstract ) { + continue; + } + + $mailer_slug = $option->get_slug(); + $mailer_supports = $option->get_supports(); + + if ( empty( $mailer_slug ) || empty( $mailer_supports ) ) { + continue; + } + + $supports[ $mailer_slug ] = $mailer_supports; + } + + return apply_filters( 'wp_mail_smtp_providers_loader_get_supports_all', $supports ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Providers/Mail/Mailer.php b/wp-content/plugins/wp-mail-smtp/src/Providers/Mail/Mailer.php new file mode 100644 index 000000000..51654bfc3 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Providers/Mail/Mailer.php @@ -0,0 +1,49 @@ +Server:'; + + $disabled_functions = ini_get( 'disable_functions' ); + $disabled = (array) explode( ',', trim( $disabled_functions ) ); + + $mail_text[] = 'PHP.mail(): ' . ( in_array( 'mail', $disabled, true ) || ! function_exists( 'mail' ) ? 'No' : 'Yes' ); + if ( function_exists( 'apache_get_modules' ) ) { + $modules = apache_get_modules(); + $mail_text[] = 'Apache.mod_security: ' . ( in_array( 'mod_security', $modules, true ) || in_array( 'mod_security2', $modules, true ) ? 'Yes' : 'No' ); + } + if ( function_exists( 'selinux_is_enabled' ) ) { + $mail_text[] = 'OS.SELinux: ' . ( selinux_is_enabled() ? 'Yes' : 'No' ); + } + if ( function_exists( 'grsecurity_is_enabled' ) ) { + $mail_text[] = 'OS.grsecurity: ' . ( grsecurity_is_enabled() ? 'Yes' : 'No' ); + } + + return implode( '+ Default (none) mailer selected, which won\'t improve email deliverability. Please select any other email provider and use the easy Setup Wizard to configure it.', 'wp-mail-smtp' ), + [ + 'strong' => [], + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ), + esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/a-complete-guide-to-wp-mail-smtp-mailers/', 'Default mailer - any other email provider' ) ), + esc_url( SetupWizard::get_site_url() ) + ); + ?> ++ + connection = $connection; + } else { + $this->connection = wp_mail_smtp()->get_connections_manager()->get_primary_connection(); + } + + $this->connection_options = $this->connection->get_options(); + $this->mailer = $this->connection->get_mailer_slug(); + $this->options = Options::init(); + + // Only non-SMTP mailers need URL and extra processing for PHPMailer class. + if ( ! $this->connection_options->is_mailer_smtp() && empty( $this->url ) ) { + return; + } + + $this->process_phpmailer( $phpmailer ); + } + + /** + * Re-use the MailCatcher class methods and properties. + * + * @since 1.0.0 + * + * @param MailCatcherInterface $phpmailer The MailCatcher object. + */ + public function process_phpmailer( $phpmailer ) { + + // Make sure that we have access to PHPMailer class methods. + if ( ! wp_mail_smtp()->is_valid_phpmailer( $phpmailer ) ) { + return; + } + + $this->phpmailer = $phpmailer; + + // Prevent working with those methods, as they are not needed for SMTP-like mailers. + if ( $this->connection_options->is_mailer_smtp() ) { + return; + } + + $this->set_headers( $this->phpmailer->getCustomHeaders() ); + $this->set_from( $this->phpmailer->From, $this->phpmailer->FromName ); + $this->set_recipients( + array( + 'to' => $this->phpmailer->getToAddresses(), + 'cc' => $this->phpmailer->getCcAddresses(), + 'bcc' => $this->phpmailer->getBccAddresses(), + ) + ); + $this->set_subject( $this->phpmailer->Subject ); + if ( $this->phpmailer->ContentType === 'text/plain' ) { + $this->set_content( $this->phpmailer->Body ); + } else { + $this->set_content( + array( + 'text' => $this->phpmailer->AltBody, + 'html' => $this->phpmailer->Body, + ) + ); + } + $this->set_return_path( $this->phpmailer->From ); + $this->set_reply_to( $this->phpmailer->getReplyToAddresses() ); + + /* + * In some cases we will need to modify the internal structure + * of the body content, if attachments are present. + * So lets make this call the last one. + */ + $this->set_attachments( $this->phpmailer->getAttachments() ); + } + + /** + * Set the email headers. + * + * @since 1.0.0 + * + * @param array $headers List of key=>value pairs. + */ + public function set_headers( $headers ) { + + foreach ( $headers as $header ) { + $name = isset( $header[0] ) ? $header[0] : false; + $value = isset( $header[1] ) ? $header[1] : false; + + if ( empty( $name ) || empty( $value ) ) { + continue; + } + + $this->set_header( $name, $value ); + } + } + + /** + * Set individual header key=>value pair for the email. + * + * @since 1.0.0 + * + * @param string $name + * @param string $value + */ + public function set_header( $name, $value ) { + + $name = sanitize_text_field( $name ); + + $this->headers[ $name ] = WP::sanitize_value( $value ); + } + + /** + * Set email subject. + * + * @since 1.0.0 + * + * @param string $subject + */ + public function set_subject( $subject ) { + + $this->set_body_param( + array( + 'subject' => $subject, + ) + ); + } + + /** + * Set the request params, that goes to the body of the HTTP request. + * + * @since 1.0.0 + * + * @param array $param Key=>value of what should be sent to a 3rd party API. + * + * @internal param array $params + */ + protected function set_body_param( $param ) { + + $this->body = Options::array_merge_recursive( $this->body, $param ); + } + + /** + * Get the email body. + * + * @since 1.0.0 + * + * @return string|array + */ + public function get_body() { + + return apply_filters( 'wp_mail_smtp_providers_mailer_get_body', $this->body, $this->mailer ); + } + + /** + * Get the email headers. + * + * @since 1.0.0 + * + * @return array + */ + public function get_headers() { + + return apply_filters( 'wp_mail_smtp_providers_mailer_get_headers', $this->headers, $this->mailer ); + } + + /** + * Send the email. + * + * @since 1.0.0 + * @since 1.8.0 Added timeout for requests, same as max_execution_time. + */ + public function send() { + + $timeout = (int) ini_get( 'max_execution_time' ); + + $params = Options::array_merge_recursive( + $this->get_default_params(), + array( + 'headers' => $this->get_headers(), + 'body' => $this->get_body(), + 'timeout' => $timeout ? $timeout : 30, + ) + ); + + $response = wp_safe_remote_post( $this->url, $params ); + + DebugEvents::add_debug( + esc_html__( 'An email request was sent.', 'wp-mail-smtp' ) + ); + + $this->process_response( $response ); + } + + /** + * We might need to do something after the email was sent to the API. + * In this method we preprocess the response from the API. + * + * @since 1.0.0 + * + * @param mixed $response Response array. + */ + protected function process_response( $response ) { + + if ( is_wp_error( $response ) ) { + // Save the error text. + foreach ( $response->errors as $error_code => $error_message ) { + $this->error_message .= Helpers::format_error_message( $error_message, $error_code ) . WP::EOL; + } + + return; + } + + if ( isset( $response['body'] ) && WP::is_json( $response['body'] ) ) { + $response['body'] = json_decode( $response['body'] ); + } + + $this->response = $response; + } + + /** + * Get the default params, required for wp_safe_remote_post(). + * + * @since 1.0.0 + * + * @return array + */ + protected function get_default_params() { + + return apply_filters( + 'wp_mail_smtp_providers_mailer_get_default_params', + array( + 'timeout' => 15, + 'httpversion' => '1.1', + 'blocking' => true, + ), + $this->mailer + ); + } + + /** + * Whether the email is sent or not. + * We basically check the response code from a request to provider. + * Might not be 100% correct, not guarantees that email is delivered. + * + * @since 1.0.0 + * + * @return bool + */ + public function is_email_sent() { + + $is_sent = false; + + if ( wp_remote_retrieve_response_code( $this->response ) === $this->email_sent_code ) { + $is_sent = true; + } + + /** + * Filters whether the email is sent or not. + * + * @since 3.1.0 + * + * @param bool $is_sent Whether the email is sent or not. + * @param MailerAbstract $mailer Mailer object. + */ + return apply_filters( 'wp_mail_smtp_providers_mailer_is_email_sent', $is_sent, $this->mailer ); + } + + /** + * The error message when email sending failed. + * Should be overwritten when appropriate. + * + * @since 1.2.0 + * @since 2.5.0 Return a non-empty error_message attribute. + * + * @return string + */ + public function get_response_error() { + + return ! empty( $this->error_message ) ? $this->error_message : ''; + } + + /** + * Whether the mailer supports the current PHP version or not. + * + * @since 1.0.0 + * + * @return bool + */ + public function is_php_compatible() { + + $options = wp_mail_smtp()->get_providers()->get_options( $this->mailer, $this->connection ); + + return version_compare( phpversion(), $options->get_php_version(), '>=' ); + } + + /** + * This method is relevant to SMTP and Pepipost. + * All other custom mailers should override it with own information. + * + * @since 1.2.0 + * + * @return string + */ + public function get_debug_info() { + + global $phpmailer; + + $smtp_text = array(); + + // Mail mailer has nothing to return. + if ( $this->connection_options->is_mailer_smtp() ) { + // phpcs:disable + $smtp_text[] = 'ErrorInfo: ' . make_clickable( wp_strip_all_tags( $phpmailer->ErrorInfo ) ); + $smtp_text[] = 'Host: ' . $phpmailer->Host; + $smtp_text[] = 'Port: ' . $phpmailer->Port; + $smtp_text[] = 'SMTPSecure: ' . Debug::pvar( $phpmailer->SMTPSecure ); + $smtp_text[] = 'SMTPAutoTLS: ' . Debug::pvar( $phpmailer->SMTPAutoTLS ); + $smtp_text[] = 'SMTPAuth: ' . Debug::pvar( $phpmailer->SMTPAuth ); + if ( ! empty( $phpmailer->SMTPOptions ) ) { + $smtp_text[] = 'SMTPOptions:
' . wp_json_encode( $phpmailer->SMTPOptions ) . '
';
+ }
+ // phpcs:enable
+ }
+
+ $smtp_text[] = '+ get a Mailgun API Key. Generate a key in the "Mailgun API Keys" section.', 'wp-mail-smtp' ), + 'https://app.mailgun.com/settings/api_security' + ), + [ + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ); + ?> +
++ ' . + esc_html__( 'Get a Domain Name', 'wp-mail-smtp' ) . + '' + ); + ?> +
+
+
+
+ More information on Mailgun.com.', 'wp-mail-smtp' ),
+ array(
+ 'a' => array(
+ 'href' => array(),
+ 'rel' => array(),
+ 'target' => array(),
+ ),
+ )
+ ),
+ 'https://www.mailgun.com/regions'
+ );
+ ?>
+
+ +
++ get_title() ), + esc_html( $this->php ), + esc_html( phpversion() ) + ); + ?> ++ + + +
+ +
+ WPBeginner\'s tutorial on how to set up SSL.', 'wp-mail-smtp' ), + [ + 'a' => [ + 'href' => [], + 'target' => [], + ], + ] + ), + esc_html( $this->get_title() ) + ); + ?> ++ + %s', $this->options->get_const_set_message( $constant ) ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + + /** + * Return the defaults for the mailer supported settings. + * + * @since 2.3.0 + * + * @return array + */ + public function get_supports_defaults() { + + return [ + 'from_email' => true, + 'from_name' => true, + 'return_path' => true, + 'from_email_force' => true, + 'from_name_force' => true, + ]; + } + + /** + * Get the mailer supported settings. + * + * @since 2.3.0 + * + * @return array + */ + public function get_supports() { + return apply_filters( 'wp_mail_smtp_providers_provider_get_supports', $this->supports, $this ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Providers/OptionsInterface.php b/wp-content/plugins/wp-mail-smtp/src/Providers/OptionsInterface.php new file mode 100644 index 000000000..235d0945d --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Providers/OptionsInterface.php @@ -0,0 +1,71 @@ + wp_mail_smtp()->assets_url . '/images/providers/microsoft.svg', + 'slug' => 'outlook', + 'title' => esc_html__( '365 / Outlook', 'wp-mail-smtp' ), + 'disabled' => true, + ) + ); + } + + /** + * @inheritdoc + */ + public function display_options() { + + ?> +
+
+ +
+ +
++ ' . + esc_html__( 'Get the API Key', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ ' . + esc_html__( 'Get Server API Token', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ optional. By default outbound (Default Transactional Stream) will be used. More information can be found in our Postmark documentation.', 'wp-mail-smtp' ), + [ + 'strong' => [], + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ), + esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-postmark-mailer-in-wp-mail-smtp/#message-stream', 'Postmark documentation - message stream' ) ) + ); + ?> +
++ ' . + esc_html__( 'control panel', 'wp-mail-smtp' ) . + '' + ); + ?> +
+' . + esc_html__( 'Transparency and Disclosure', 'wp-mail-smtp' ) . + '' . + esc_html__( 'We believe in full transparency. The SMTP.com links above are tracking links as part of our partnership with SMTP (j2 Global). We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.', 'wp-mail-smtp' ) . + '
'; + + parent::__construct( + [ + 'logo_url' => wp_mail_smtp()->assets_url . '/images/providers/smtp-com.svg', + 'slug' => self::SLUG, + 'title' => esc_html__( 'SMTP.com', 'wp-mail-smtp' ), + 'description' => $description, + 'recommended' => true, + 'supports' => [ + 'from_email' => true, + 'from_name' => true, + 'return_path' => false, + 'from_email_force' => true, + 'from_name_force' => true, + ], + ], + $connection + ); + } + + /** + * @inheritdoc + */ + public function display_options() { + ?> + + ++ ' . + esc_html__( 'Get API Key', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ ' . + esc_html__( 'Get Sender Name', 'wp-mail-smtp' ) . + '' + ); + ?> +
+
+ ' .
+ esc_html__( 'Create API Key', 'wp-mail-smtp' ) .
+ ''
+ );
+ ?>
+
+ Mail Send'
+ );
+ ?>
+
+ SendGrid documentation.', 'wp-mail-smtp' ), + [ + 'br' => [], + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ), + esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-wp-mail-smtp/#setup', 'SendGrid documentation - setup' ) ) + ); + ?> +
+' . + esc_html__( 'Transparency and Disclosure', 'wp-mail-smtp' ) . + '' . + esc_html__( 'We believe in full transparency. The Brevo (formerly Sendinblue) links above are tracking links as part of our partnership with Brevo. We can recommend just about any SMTP service, but we only recommend products that we believe will add value to our users.', 'wp-mail-smtp' ) . + '
'; + + parent::__construct( + [ + 'logo_url' => wp_mail_smtp()->assets_url . '/images/providers/brevo.svg', + 'slug' => self::SLUG, + 'title' => esc_html__( 'Brevo', 'wp-mail-smtp' ), + 'php' => '5.6', + 'description' => $description, + 'supports' => [ + 'from_email' => true, + 'from_name' => true, + 'return_path' => false, + 'from_email_force' => true, + 'from_name_force' => true, + ], + 'recommended' => true, + ], + $connection + ); + } + + /** + * Output the mailer provider options. + * + * @since 1.6.0 + */ + public function display_options() { + + // Do not display options if PHP version is not correct. + if ( ! $this->is_php_correct() ) { + $this->display_php_warning(); + + return; + } + ?> + + ++ ' . + esc_html__( 'Get v3 API Key', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ Brevo documentation.', 'wp-mail-smtp' ), + [ + 'br' => [], + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ), + esc_url( wp_mail_smtp()->get_utm_url( 'https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-wp-mail-smtp/#setup-smtp', 'Brevo documentation' ) ) + ); + ?> +
++ ' . + esc_html__( 'Get API Key', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ connection_options->get( $this->get_slug(), 'region' ) === 'EU' ? 'eu.' . $url : $url; + $url = 'https://app.' . $url . '/account/api-keys'; + + printf( /* translators: %s - API Key link. */ + esc_html__( 'Follow this link to get an API Key from SparkPost: %s.', 'wp-mail-smtp' ), + '' . + esc_html__( 'Get API Key', 'wp-mail-smtp' ) . + '' + ); + ?> +
++ + More information on SparkPost.', 'wp-mail-smtp' ), + [ + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + ], + ] + ), + 'https://www.sparkpost.com/docs/getting-started/getting-started-sparkpost' + ); + ?> +
++ +
+
+
+
|
+
+ +
+ ++ get_stats_total_html( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + __( 'Total Emails', 'wp-mail-smtp' ), + 'icon-email.png', + $reports->get_total_emails_sent(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + $reports->get_total_emails_sent() - $reports->get_total_weekly_emails_sent( 'previous' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '#809EB0' + ); + ?> + | ++ get_stats_total_html( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + __( 'Last week', 'wp-mail-smtp' ), + 'icon-check.png', + $reports->get_total_weekly_emails_sent( 'now' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + $reports->get_total_weekly_emails_sent( 'previous' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + '#6AA08B' + ); + ?> + | +
+
+
+ + WP Mail SMTP Pro and unlock Email Log and advanced Email Reports. Start measuring the success of your emails today!', 'wp-mail-smtp' ), + [ + 'b' => [], + 'u' => [], + ] + ); + ?> + +
|
+
+ + + ++ + ++ + + + % + + + |
+
+
%s
%s
', + $mailer_text, + esc_html__( 'The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it\'s working properly.', 'wp-mail-smtp' ) + ), + 'actions' => sprintf( + '', + esc_url( add_query_arg( 'tab', 'test', wp_mail_smtp()->get_admin()->get_admin_page_url( Area::SLUG . '-tools' ) ) ), + esc_html__( 'Test email sending', 'wp-mail-smtp' ) + ), + 'test' => 'wp_mail_smtp_mailer_setup_complete', + ); + + if ( $mailer === 'mail' ) { + $mailer_text .= sprintf( /* translators: %s - explanation why default mailer is not a valid mailer option. */ + '%s
', + esc_html__( 'You currently have the default mailer selected, which means that you haven’t set up SMTP yet.', 'wp-mail-smtp' ) + ); + } + + if ( $mailer_complete === false ) { + $result['label'] = esc_html__( 'WP Mail SMTP mailer setup is incomplete', 'wp-mail-smtp' ); + $result['status'] = 'recommended'; + $result['badge']['color'] = 'orange'; + $result['description'] = sprintf( + '%s
%s
', + $mailer_text, + esc_html__( 'The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer.', 'wp-mail-smtp' ) + ); + $result['actions'] = sprintf( + '', + esc_url( wp_mail_smtp()->get_admin()->get_admin_page_url() ), + esc_html__( 'Configure mailer', 'wp-mail-smtp' ) + ); + } + + return $result; + } + + /** + * Perform the test for checking if all custom plugin DB tables exist. + * + * @since 2.1.2 + * + * @return array + */ + public function db_tables_test() { + + $result = array( + 'label' => esc_html__( 'WP Mail SMTP DB tables are created', 'wp-mail-smtp' ), + 'status' => 'good', + 'badge' => array( + 'label' => $this->get_label(), + 'color' => self::BADGE_COLOR, + ), + 'description' => esc_html__( 'WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database.', 'wp-mail-smtp' ), + 'actions' => '', + 'test' => 'wp_mail_smtp_db_tables_exist', + ); + + $missing_tables = $this->get_db_tables( 'missing' ); + + if ( ! empty( $missing_tables ) ) { + $missing_tables_create_link = wp_nonce_url( + add_query_arg( + [ + 'create-missing-db-tables' => 1, + ], + wp_mail_smtp()->get_admin()->get_admin_page_url( Area::SLUG ) + ), + Area::SLUG . '-create-missing-db-tables' + ); + + $result['label'] = esc_html__( 'WP Mail SMTP DB tables check has failed', 'wp-mail-smtp' ); + $result['status'] = 'critical'; + $result['badge']['color'] = 'red'; + $result['description'] = sprintf( + '%s
%s
', + sprintf( /* translators: %s - the list of missing tables separated by comma. */ + esc_html( _n( 'Missing table: %s', 'Missing tables: %s', count( $missing_tables ), 'wp-mail-smtp' ) ), + esc_html( implode( ', ', $missing_tables ) ) + ), + wp_kses( + sprintf( /* translators: %1$s - Settings Page URL; %2$s - The aria label; %3$s - The text that will appear on the link. */ + __( 'WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to %3$s. If this issue persists, please contact our support.', 'wp-mail-smtp' ), + esc_url( $missing_tables_create_link ), + esc_attr__( 'Go to WP Mail SMTP settings page.', 'wp-mail-smtp' ), + esc_attr__( 'create the missing DB tables by clicking on this link', 'wp-mail-smtp' ) + ), + [ + 'a' => [ + 'href' => [], + 'rel' => [], + 'target' => [], + 'aria-label' => [], + ], + ] + ) + ); + } + + return $result; + } + + /** + * Perform the test (async) for checking if email domain configured properly. + * + * @since 2.8.0 + */ + public function email_domain_check_test() { + + check_ajax_referer( 'health-check-site-status' ); + + if ( ! current_user_can( 'view_site_health_checks' ) ) { + wp_send_json_error(); + } + + $options = Options::init(); + $mailer = $options->get( 'mail', 'mailer' ); + $email = $options->get( 'mail', 'from_email' ); + $domain = ''; + + $email_domain_text = sprintf( + '%1$s: %2$s', + esc_html__( 'Current from email domain', 'wp-mail-smtp' ), + esc_html( WP::get_email_domain( $email ) ) + ); + + $result = array( + 'label' => esc_html__( 'Email domain is configured correctly', 'wp-mail-smtp' ), + 'status' => 'good', + 'badge' => array( + 'label' => $this->get_label(), + 'color' => self::BADGE_COLOR, + ), + 'description' => sprintf( + '%1$s
%2$s
', + $email_domain_text, + esc_html__( 'All checks for your email domain were successful. It looks like everything is configured correctly.', 'wp-mail-smtp' ) + ), + 'actions' => sprintf( + '', + esc_url( add_query_arg( 'tab', 'test', wp_mail_smtp()->get_admin()->get_admin_page_url( Area::SLUG . '-tools' ) ) ), + esc_html__( 'Send a Test Email', 'wp-mail-smtp' ) + ), + 'test' => 'wp_mail_smtp_email_domain_check', + ); + + // Add the optional sending domain parameter. + if ( in_array( $mailer, [ 'mailgun', 'sendinblue', 'sendgrid' ], true ) ) { + $domain = $options->get( $mailer, 'domain' ); + } + + $domain_checker = new DomainChecker( $mailer, $email, $domain ); + + if ( ! $domain_checker->no_issues() ) { + $result['label'] = esc_html__( 'Email domain issues detected', 'wp-mail-smtp' ); + $result['status'] = 'recommended'; + $result['description'] = sprintf( + '%1$s
%2$s', + $email_domain_text, + $domain_checker->get_results_html() + ); + $result['actions'] = sprintf( + '', + esc_url( wp_mail_smtp()->get_admin()->get_admin_page_url() ), + esc_html__( 'Configure mailer', 'wp-mail-smtp' ) + ); + } + + wp_send_json_success( $result ); + } + + /** + * Get the missing tables from the database. + * + * @since 3.6.0 + * + * @return array + */ + public function get_missing_db_tables() { + + return $this->get_db_tables( 'missing' ); + } + + /** + * Check DB: + * - if any required plugin DB table is missing, + * - which of the required plugin DB tables exist. + * + * @since 2.1.2 + * + * @param string $check Which type of tables to return: 'missing' or 'existing'. + * + * @return array Missing or existing tables. + */ + private function get_db_tables( $check = 'missing' ) { + + global $wpdb; + + $tables = wp_mail_smtp()->get_custom_db_tables(); + + $missing_tables = []; + $existing_tables = []; + + foreach ( $tables as $table ) { + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $db_result = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table ) ); + + if ( is_null( $db_result ) || strtolower( $db_result ) !== strtolower( $table ) ) { + $missing_tables[] = $table; + } else { + $existing_tables[] = $table; + } + } + + return ( $check === 'existing' ) ? $existing_tables : $missing_tables; + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/DebugEventsCleanupTask.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/DebugEventsCleanupTask.php new file mode 100644 index 000000000..81535a51b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/DebugEventsCleanupTask.php @@ -0,0 +1,129 @@ +get( 'debug_events', 'retention_period' ); + + // Exit if the retention period is not defined (set to "forever") or this task is already scheduled. + if ( empty( $retention_period ) || Tasks::is_scheduled( self::ACTION ) !== false ) { + return; + } + + // Schedule the task. + $this->recurring( + strtotime( 'tomorrow' ), + $this->get_debug_events_cleanup_interval() + ) + ->params( $retention_period ) + ->register(); + } + + /** + * Get the cleanup interval for the debug events. + * + * @since 3.6.0 + * + * @return int + */ + private function get_debug_events_cleanup_interval() { + + $day_in_seconds = DAY_IN_SECONDS; + + /** + * Filter for the debug events cleanup interval. + * + * @since 3.6.0 + * + * @param int $day_in_seconds Debug events cleanup interval. + */ + return (int) apply_filters( 'wpmailsmtp_tasks_get_debug_events_cleanup_interval', $day_in_seconds ); + } + + /** + * Perform the cleanup action: remove outdated debug events. + * + * @since 3.6.0 + * + * @param int $meta_id The Meta ID with the stored task parameters. + * + * @throws Exception Exception will be logged in the Action Scheduler logs table. + */ + public function process( $meta_id ) { + + $task_meta = new Meta(); + $meta = $task_meta->get( (int) $meta_id ); + + // We should actually receive the passed parameter. + if ( empty( $meta ) || empty( $meta->data ) || count( $meta->data ) !== 1 ) { + return; + } + + /** + * Date in seconds (examples: 86400, 100500). + * Debug Events older than this period will be deleted. + * + * @var int $retention_period + */ + $retention_period = (int) $meta->data[0]; + + if ( empty( $retention_period ) ) { + return; + } + + // Bail if DB tables was not created. + if ( ! DebugEvents::is_valid_db() ) { + return; + } + + $wpdb = WP::wpdb(); + $table = DebugEvents::get_table_name(); + $date = ( new DateTime( "- $retention_period seconds" ) )->format( WP::datetime_mysql_format() ); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->query( + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $wpdb->prepare( "DELETE FROM `$table` WHERE created_at < %s", $date ) + ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Meta.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Meta.php new file mode 100644 index 000000000..9d84fe2d6 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Meta.php @@ -0,0 +1,533 @@ +191 chars in JSON to AS, + * so we need to store them somewhere (and clean from time to time). + * + * @since 2.1.0 + */ +class Meta { + + /** + * Database table name. + * + * @since 2.1.0 + * + * @var string + */ + public $table_name; + + /** + * Database version. + * + * @since 2.1.0 + * + * @var string + */ + public $version; + + /** + * Primary key (unique field) for the database table. + * + * @since 2.1.0 + * + * @var string + */ + public $primary_key = 'id'; + + /** + * Database type identifier. + * + * @since 2.1.0 + * + * @var string + */ + public $type = 'tasks_meta'; + + /** + * Primary class constructor. + * + * @since 2.1.0 + */ + public function __construct() { + + $this->table_name = self::get_table_name(); + } + + /** + * Get the DB table name. + * + * @since 2.1.0 + * + * @return string + */ + public static function get_table_name() { + + global $wpdb; + + return $wpdb->prefix . 'wpmailsmtp_tasks_meta'; + } + + /** + * Get table columns. + * + * @since 2.1.0 + */ + public function get_columns() { + + return array( + 'id' => '%d', + 'action' => '%s', + 'data' => '%s', + 'date' => '%s', + ); + } + + /** + * Default column values. + * + * @since 2.1.0 + * + * @return array + */ + public function get_column_defaults() { + + return array( + 'action' => '', + 'data' => '', + 'date' => gmdate( 'Y-m-d H:i:s' ), + ); + } + + /** + * Retrieve a row from the database based on a given row ID. + * + * @since 2.1.0 + * + * @param int $row_id Row ID. + * + * @return null|object + */ + private function get_from_db( $row_id ) { + + global $wpdb; + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + return $wpdb->get_row( + $wpdb->prepare( + "SELECT * FROM {$this->table_name} WHERE {$this->primary_key} = %s LIMIT 1;", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $row_id + ) + ); + } + + /** + * Retrieve a row based on column and row ID. + * + * @since 2.1.0 + * + * @param string $column Column name. + * @param int|string $row_id Row ID. + * + * @return object|null|bool Database query result, object or null on failure. + */ + public function get_by( $column, $row_id ) { + + global $wpdb; + + if ( empty( $row_id ) || ! array_key_exists( $column, $this->get_columns() ) ) { + return false; + } + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + return $wpdb->get_row( + $wpdb->prepare( + "SELECT * FROM $this->table_name WHERE $column = '%s' LIMIT 1;", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.QuotedSimplePlaceholder + $row_id + ) + ); + } + + /** + * Retrieve a value based on column name and row ID. + * + * @since 2.1.0 + * + * @param string $column Column name. + * @param int|string $row_id Row ID. + * + * @return string|null Database query result (as string), or null on failure. + */ + public function get_column( $column, $row_id ) { + + global $wpdb; + + if ( empty( $row_id ) || ! array_key_exists( $column, $this->get_columns() ) ) { + return false; + } + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + return $wpdb->get_var( + $wpdb->prepare( + "SELECT $column FROM $this->table_name WHERE $this->primary_key = '%s' LIMIT 1;", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.QuotedSimplePlaceholder + $row_id + ) + ); + } + + /** + * Retrieve one column value based on another given column and matching value. + * + * @since 2.1.0 + * + * @param string $column Column name. + * @param string $column_where Column to match against in the WHERE clause. + * @param string $column_value Value to match to the column in the WHERE clause. + * + * @return string|null Database query result (as string), or null on failure. + */ + public function get_column_by( $column, $column_where, $column_value ) { + + global $wpdb; + + if ( empty( $column ) || empty( $column_where ) || empty( $column_value ) || ! array_key_exists( $column, $this->get_columns() ) ) { + return false; + } + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + return $wpdb->get_var( + $wpdb->prepare( + "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $column_value + ) + ); + } + + /** + * Insert a new record into the database. + * + * @since 2.1.0 + * + * @param array $data Column data. + * @param string $type Optional. Data type context. + * + * @return int ID for the newly inserted record. 0 otherwise. + */ + private function add_to_db( $data, $type = '' ) { + + global $wpdb; + + // Set default values. + $data = wp_parse_args( $data, $this->get_column_defaults() ); + + do_action( 'wp_mail_smtp_pre_insert_' . $type, $data ); + + // Initialise column format array. + $column_formats = $this->get_columns(); + + // Force fields to lower case. + $data = array_change_key_case( $data ); + + // White list columns. + $data = array_intersect_key( $data, $column_formats ); + + // Reorder $column_formats to match the order of columns given in $data. + $data_keys = array_keys( $data ); + $column_formats = array_merge( array_flip( $data_keys ), $column_formats ); + + $wpdb->insert( $this->table_name, $data, $column_formats ); + + do_action( 'wp_mail_smtp_post_insert_' . $type, $wpdb->insert_id, $data ); + + return $wpdb->insert_id; + } + + /** + * Update an existing record in the database. + * + * @since 2.1.0 + * + * @param int|string $row_id Row ID for the record being updated. + * @param array $data Optional. Array of columns and associated data to update. Default empty array. + * @param string $where Optional. Column to match against in the WHERE clause. If empty, $primary_key + * will be used. Default empty. + * @param string $type Optional. Data type context, e.g. 'affiliate', 'creative', etc. Default empty. + * + * @return bool False if the record could not be updated, true otherwise. + */ + public function update( $row_id, $data = array(), $where = '', $type = '' ) { + + global $wpdb; + + // Row ID must be a positive integer. + $row_id = absint( $row_id ); + + if ( empty( $row_id ) ) { + return false; + } + + if ( empty( $where ) ) { + $where = $this->primary_key; + } + + do_action( 'wp_mail_smtp_pre_update_' . $type, $data ); + + // Initialise column format array. + $column_formats = $this->get_columns(); + + // Force fields to lower case. + $data = array_change_key_case( $data ); + + // White list columns. + $data = array_intersect_key( $data, $column_formats ); + + // Reorder $column_formats to match the order of columns given in $data. + $data_keys = array_keys( $data ); + $column_formats = array_merge( array_flip( $data_keys ), $column_formats ); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) { + return false; + } + + do_action( 'wp_mail_smtp_post_update_' . $type, $data ); + + return true; + } + + /** + * Delete a record from the database. + * + * @since 2.1.0 + * + * @param int|string $row_id Row ID. + * + * @return bool False if the record could not be deleted, true otherwise. + */ + public function delete( $row_id = 0 ) { + + global $wpdb; + + // Row ID must be positive integer. + $row_id = absint( $row_id ); + + if ( empty( $row_id ) ) { + return false; + } + + do_action( 'wp_mail_smtp_pre_delete', $row_id ); + do_action( 'wp_mail_smtp_pre_delete_' . $this->type, $row_id ); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared + if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM {$this->table_name} WHERE {$this->primary_key} = %d", $row_id ) ) ) { + return false; + } + + do_action( 'wp_mail_smtp_post_delete', $row_id ); + do_action( 'wp_mail_smtp_post_delete_' . $this->type, $row_id ); + + return true; + } + + /** + * Delete a record from the database by column. + * + * @since 2.1.0 + * + * @param string $column Column name. + * @param int|string $column_value Column value. + * + * @return bool False if the record could not be deleted, true otherwise. + */ + public function delete_by( $column, $column_value ) { + + global $wpdb; + + if ( empty( $column ) || empty( $column_value ) || ! array_key_exists( $column, $this->get_columns() ) ) { + return false; + } + + do_action( 'wp_mail_smtp_pre_delete', $column_value ); + do_action( 'wp_mail_smtp_pre_delete_' . $this->type, $column_value ); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared + if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM {$this->table_name} WHERE $column = %s", $column_value ) ) ) { + return false; + } + + do_action( 'wp_mail_smtp_post_delete', $column_value ); + do_action( 'wp_mail_smtp_post_delete_' . $this->type, $column_value ); + + return true; + } + + /** + * Check if the given table exists. + * + * @since 2.1.0 + * + * @param string $table The table name. Defaults to the child class table name. + * + * @return string|null If the table name exists. + */ + public function table_exists( $table = '' ) { + + global $wpdb; + + if ( ! empty( $table ) ) { + $table = sanitize_text_field( $table ); + } else { + $table = $this->table_name; + } + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $db_result = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table ) ); + + if ( is_null( $db_result ) ) { + return false; + } + + return strtolower( $db_result ) === strtolower( $table ); + } + + /** + * Create custom entry meta database table. + * Used in migration. + * + * @since 2.1.0 + */ + public function create_table() { + + global $wpdb; + + require_once ABSPATH . 'wp-admin/includes/upgrade.php'; + + $charset_collate = ''; + + if ( ! empty( $wpdb->charset ) ) { + $charset_collate .= "DEFAULT CHARACTER SET {$wpdb->charset}"; + } + if ( ! empty( $wpdb->collate ) ) { + $charset_collate .= " COLLATE {$wpdb->collate}"; + } + + $sql = "CREATE TABLE {$this->table_name} ( + id bigint(20) NOT NULL AUTO_INCREMENT, + action varchar(255) NOT NULL, + data longtext NOT NULL, + date datetime NOT NULL, + PRIMARY KEY (id) + ) {$charset_collate};"; + + dbDelta( $sql ); + } + + /** + * Remove queue records for a defined period of time in the past. + * Calling this method will remove queue records that are older than $period seconds. + * + * @since 2.1.0 + * + * @param string $action Action that should be cleaned up. + * @param int $interval Number of seconds from now. + * + * @return int Number of removed tasks meta records. + */ + public function clean_by( $action, $interval ) { + + global $wpdb; + + if ( empty( $action ) || empty( $interval ) ) { + return 0; + } + + $table = self::get_table_name(); + $action = sanitize_key( $action ); + $date = gmdate( 'Y-m-d H:i:s', time() - (int) $interval ); + + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + return (int) $wpdb->query( + $wpdb->prepare( + "DELETE FROM `$table` WHERE action = %s AND date < %s", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared + $action, + $date + ) + ); + } + + /** + * Inserts a new record into the database. + * + * @since 2.1.0 + * + * @param array $data Column data. + * @param string $type Optional. Data type context. + * + * @return int ID for the newly inserted record. 0 otherwise. + */ + public function add( $data, $type = '' ) { + + if ( empty( $data['action'] ) || ! is_string( $data['action'] ) ) { + return 0; + } + + $data['action'] = sanitize_key( $data['action'] ); + + if ( isset( $data['data'] ) ) { + $string = wp_json_encode( $data['data'] ); + + if ( $string === false ) { + $string = ''; + } + + /* + * We are encoding the string representation of all the data + * to make sure that nothing can harm the database. + * This is not an encryption, and we need this data later as is, + * so we are using one of the fastest way to do that. + * This data is removed from DB on a daily basis. + */ + // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode + $data['data'] = base64_encode( $string ); + } + + if ( empty( $type ) ) { + $type = $this->type; + } + + return $this->add_to_db( $data, $type ); + } + + /** + * Retrieve a row from the database based on a given row ID. + * + * @since 2.1.0} + * + * @param int $meta_id Meta ID. + * + * @return null|object + */ + public function get( $meta_id ) { + + $meta = $this->get_from_db( $meta_id ); + + if ( empty( $meta ) || empty( $meta->data ) ) { + return $meta; + } + + // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode + $decoded = base64_decode( $meta->data ); + + if ( $decoded === false || ! is_string( $decoded ) ) { + $meta->data = ''; + } else { + $meta->data = json_decode( $decoded, true ); + } + + return $meta; + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/CleanupQueueTask.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/CleanupQueueTask.php new file mode 100644 index 000000000..2964de636 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/CleanupQueueTask.php @@ -0,0 +1,90 @@ +get_queue()->is_enabled() || + Tasks::is_scheduled( self::ACTION ) !== false + ) { + return; + } + + // Schedule the task. + $this->recurring( strtotime( 'now' ), DAY_IN_SECONDS ) + ->unique() + ->register(); + } + + /** + * Perform email sending. + * + * @since 4.0.0 + */ + public function process() { + + $queue = wp_mail_smtp()->get_queue(); + $attachments = new Attachments(); + + // Cleanup processed emails. + $queue->cleanup(); + + // Cleanup older-than-a-month attachments. + $attachments->delete_attachments( null, new DateTime( '1 month ago', new DateTimeZone( 'UTC' ) ) ); + + if ( ! $queue->is_enabled() ) { + // If the query has been disabled in the meanwhile, + // and there aren't any emails left, + // cancel the cleanup task. + $queued_emails_count = $queue->count_queued_emails(); + $processed_emails_count = $queue->count_processed_emails(); + + if ( $queued_emails_count === 0 && $processed_emails_count === 0 ) { + // Cleanup any remaining, older-than-an-hour attachments. + $attachments->delete_attachments( null, new DateTime( '1 hour ago', new DateTimeZone( 'UTC' ) ) ); + + $this->cancel_force(); + } + } + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/ProcessQueueTask.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/ProcessQueueTask.php new file mode 100644 index 000000000..9f2281f96 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/ProcessQueueTask.php @@ -0,0 +1,84 @@ +get_queue()->is_enabled() || + Tasks::is_scheduled( self::ACTION ) !== false + ) { + return; + } + + // Schedule the task. + $this->recurring( strtotime( 'now' ), MINUTE_IN_SECONDS ) + ->unique() + ->register(); + } + + /** + * Perform email sending. + * + * @since 4.0.0 + */ + public function process() { + + $queue = wp_mail_smtp()->get_queue(); + + $queue->process(); + + if ( ! $queue->is_enabled() ) { + $this->cancel_force(); + } + } + + /** + * Cleanup completed tasks. + * + * @since 4.1.0 + */ + public function cleanup() { + + $this->remove_completed( 10 ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/SendEnqueuedEmailTask.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/SendEnqueuedEmailTask.php new file mode 100644 index 000000000..c80a3871b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Queue/SendEnqueuedEmailTask.php @@ -0,0 +1,97 @@ +async() + ->params( $email_id ) + ->register(); + } + + /** + * Perform email sending. + * + * @since 4.0.0 + * + * @param int $meta_id The Meta ID with the stored task parameters. + */ + public function process( $meta_id ) { + + $task_meta = new Meta(); + $meta = $task_meta->get( (int) $meta_id ); + + // We should actually receive the passed parameter. + if ( empty( $meta ) || empty( $meta->data ) || count( $meta->data ) < 1 ) { + return; + } + + $email_id = $meta->data[0]; + + wp_mail_smtp()->get_queue()->send_email( $email_id ); + } + + /** + * Cleanup completed tasks. + * + * @since 4.1.0 + */ + public function cleanup() { + + $this->remove_completed( 10 ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Reports/SummaryEmailTask.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Reports/SummaryEmailTask.php new file mode 100644 index 000000000..83fb5c0cd --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Reports/SummaryEmailTask.php @@ -0,0 +1,104 @@ +recurring( $date->getTimestamp(), WEEK_IN_SECONDS ) + ->unique() + ->register(); + } + + /** + * Process summary report email send. + * + * @since 3.0.0 + * + * @param int $meta_id The Meta ID with the stored task parameters. + */ + public function process( $meta_id ) { + + // Prevent email sending if summary report email is disabled. + if ( SummaryReportEmail::is_disabled() || ! $this->is_allowed() ) { + return; + } + + // Update the last sent week at the top to prevent multiple emails in case of task failure and retry. + update_option( 'wp_mail_smtp_summary_report_email_last_sent_week', current_time( 'W' ) ); + + $reports = wp_mail_smtp()->get_reports(); + + $email = $reports->get_summary_report_email(); + + $email->send(); + } + + /** + * Check if the summary report email is allowed to be sent. + * + * The email is allowed to be sent if it was not sent in the current week. + * + * @since 4.1.1 + * + * @return bool + */ + private function is_allowed() { + + $last_sent_week = get_option( 'wp_mail_smtp_summary_report_email_last_sent_week' ); + $current_week = current_time( 'W' ); + + if ( $last_sent_week === false || ( (int) $current_week !== (int) $last_sent_week ) ) { + return true; + } + + return false; + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Task.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Task.php new file mode 100644 index 000000000..b893c7152 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Task.php @@ -0,0 +1,379 @@ +action = sanitize_key( $action ); + + if ( empty( $this->action ) ) { + throw new \UnexpectedValueException( 'Task action cannot be empty.' ); + } + } + + /** + * Define the type of the task as async. + * + * @since 2.1.0 + * + * @return Task + */ + public function async() { + + $this->type = self::TYPE_ASYNC; + + return $this; + } + + /** + * Define the type of the task as recurring. + * + * @since 2.1.0 + * + * @param int $timestamp When the first instance of the job will run. + * @param int $interval How long to wait between runs. + * + * @return Task + */ + public function recurring( $timestamp, $interval ) { + + $this->type = self::TYPE_RECURRING; + $this->timestamp = (int) $timestamp; + $this->interval = (int) $interval; + + return $this; + } + + /** + * Define the type of the task as one-time. + * + * @since 2.1.0 + * + * @param int $timestamp When the first instance of the job will run. + * + * @return Task + */ + public function once( $timestamp ) { + + $this->type = self::TYPE_ONCE; + $this->timestamp = (int) $timestamp; + + return $this; + } + + /** + * Set this task as unique. + * + * @since 4.0.0 + * + * @return Task + */ + public function unique() { + + $this->unique = true; + + return $this; + } + + /** + * Pass any number of params that should be saved to Meta table. + * + * @since 2.1.0 + * + * @return Task + */ + public function params() { + + $this->params = func_get_args(); + + return $this; + } + + /** + * Register the action. + * Should be the final call in a chain. + * + * @since 2.1.0 + * + * @return null|string Action ID. + */ + public function register() { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh + + $action_id = null; + + // No processing if ActionScheduler is not usable. + if ( ! Tasks::is_usable() ) { + return $action_id; + } + + // Save data to tasks meta table. + if ( ! is_null( $this->params ) ) { + $task_meta = new Meta(); + + // No processing if meta table was not created. + if ( ! $task_meta->table_exists() ) { + return $action_id; + } + + $this->meta_id = $task_meta->add( + [ + 'action' => $this->action, + 'data' => isset( $this->params ) ? $this->params : [], + ] + ); + + if ( empty( $this->meta_id ) ) { + return $action_id; + } + } + + // Prevent 500 errors when Action Scheduler tables don't exist. + try { + switch ( $this->type ) { + case self::TYPE_ASYNC: + $action_id = $this->register_async(); + break; + + case self::TYPE_RECURRING: + $action_id = $this->register_recurring(); + break; + + case self::TYPE_ONCE: + $action_id = $this->register_once(); + break; + } + } catch ( \RuntimeException $exception ) { + $action_id = null; + } + + return $action_id; + } + + /** + * Register the async task. + * + * @since 2.1.0 + * + * @return null|string Action ID. + */ + protected function register_async() { + + if ( ! function_exists( 'as_enqueue_async_action' ) ) { + return null; + } + + return as_enqueue_async_action( + $this->action, + [ $this->meta_id ], + Tasks::GROUP, + $this->unique + ); + } + + /** + * Register the recurring task. + * + * @since 2.1.0 + * + * @return null|string Action ID. + */ + protected function register_recurring() { + + if ( ! function_exists( 'as_schedule_recurring_action' ) ) { + return null; + } + + return as_schedule_recurring_action( + $this->timestamp, + $this->interval, + $this->action, + [ $this->meta_id ], + Tasks::GROUP, + $this->unique + ); + } + + /** + * Register the one-time task. + * + * @since 2.1.0 + * + * @return null|string Action ID. + */ + protected function register_once() { + + if ( ! function_exists( 'as_schedule_single_action' ) ) { + return null; + } + + return as_schedule_single_action( + $this->timestamp, + $this->action, + [ $this->meta_id ], + Tasks::GROUP, + $this->unique + ); + } + + /** + * Cancel all occurrences of this task. + * + * @since 2.1.0 + * + * @return null|bool|string Null if no matching action found, + * false if AS library is missing, + * string of the scheduled action ID if a scheduled action was found and unscheduled. + */ + public function cancel() { + + // Exit if AS function does not exist. + if ( ! function_exists( 'as_unschedule_all_actions' ) || ! Tasks::is_usable() ) { + return false; + } + + as_unschedule_all_actions( $this->action ); + + return true; + } + + /** + * Cancel all occurrences of this task, + * preventing it from re-registering itself. + * + * @since 4.0.0 + */ + public function cancel_force() { // phpcs:ignore WPForms.PHP.HooksMethod.InvalidPlaceForAddingHooks + + add_action( 'shutdown', [ $this, 'cancel' ], PHP_INT_MAX ); + } + + /** + * Remove completed occurrences of this task. + * + * @since 4.1.0 + * + * @param int $limit The amount of rows to remove. + */ + protected function remove_completed( $limit = 0 ) { + + global $wpdb; + + $limit = max( 0, intval( $limit ) ); + $query = 'DELETE FROM ' . $wpdb->prefix . 'actionscheduler_actions WHERE hook = "' . $this->action . '" AND status = "complete"'; + + if ( $limit > 0 ) { + $query .= " LIMIT {$limit}"; + } + + // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared + $wpdb->query( $query ); + // phpcs:enable WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Tasks/Tasks.php b/wp-content/plugins/wp-mail-smtp/src/Tasks/Tasks.php new file mode 100644 index 000000000..1e36ddf60 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Tasks/Tasks.php @@ -0,0 +1,303 @@ +get_tasks() as $task ) { + if ( ! is_subclass_of( $task, '\WPMailSMTP\Tasks\Task' ) ) { + continue; + } + + $new_task = new $task(); + + // Run the init method, if a task has one defined. + if ( method_exists( $new_task, 'init' ) ) { + $new_task->init(); + } + } + + // Remove scheduled action meta after action execution. + add_action( 'action_scheduler_after_execute', [ $this, 'clear_action_meta' ], PHP_INT_MAX, 2 ); + + // Cancel tasks on plugin deactivation. + register_deactivation_hook( WPMS_PLUGIN_FILE, [ $this, 'cancel_all' ] ); + } + + /** + * Get the list of default scheduled tasks. + * Tasks, that are fired under certain specific circumstances + * (like sending emails) are not listed here. + * + * @since 2.1.0 + * + * @return Task[] List of tasks classes. + */ + public function get_tasks() { + + $tasks = [ + SummaryEmailTask::class, + DebugEventsCleanupTask::class, + ProcessQueueTask::class, + CleanupQueueTask::class, + SendEnqueuedEmailTask::class, + ]; + + /** + * Filters list of tasks classes. + * + * @since 2.1.2 + * + * @param Task[] $tasks List of tasks classes. + */ + return apply_filters( 'wp_mail_smtp_tasks_get_tasks', $tasks ); + } + + /** + * Hide Action Scheduler admin area when not in debug mode. + * + * @since 2.1.0 + */ + public function admin_hide_as_menu() { + + // Filter to redefine that WP Mail SMTP hides Tools > Action Scheduler menu item. + if ( apply_filters( 'wp_mail_smtp_tasks_admin_hide_as_menu', true ) ) { + remove_submenu_page( 'tools.php', 'action-scheduler' ); + } + } + + /** + * Create a new task. + * Used for "inline" tasks, that require additional information + * from the plugin runtime before they can be scheduled. + * + * Example: + * wp_mail_smtp()->get( 'tasks' ) + * ->create( 'i_am_the_dude' ) + * ->async() + * ->params( 'The Big Lebowski', 1998 ) + * ->register(); + * + * This `i_am_the_dude` action will be later processed as: + * add_action( 'i_am_the_dude', 'thats_what_you_call_me' ); + * + * @since 2.1.0 + * + * @param string $action Action that will be used as a hook. + * + * @return Task + */ + public function create( $action ) { + + return new Task( $action ); + } + + /** + * Cancel all the AS actions for a group. + * + * @since 2.1.0 + * + * @param string $group Group to cancel all actions for. + */ + public function cancel_all( $group = '' ) { + + if ( empty( $group ) ) { + $group = self::GROUP; + } else { + $group = sanitize_key( $group ); + } + + if ( class_exists( 'ActionScheduler_DBStore' ) ) { + ActionScheduler_DBStore::instance()->cancel_actions_by_group( $group ); + } + } + + /** + * Remove all the AS actions for a group and remove group. + * + * @since 3.7.0 + * + * @param string $group Group to remove all actions for. + */ + public function remove_all( $group = '' ) { + + global $wpdb; + + if ( empty( $group ) ) { + $group = self::GROUP; + } else { + $group = sanitize_key( $group ); + } + + if ( + class_exists( 'ActionScheduler_DBStore' ) && + isset( $wpdb->actionscheduler_actions ) && + isset( $wpdb->actionscheduler_groups ) + ) { + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $group_id = $wpdb->get_var( + $wpdb->prepare( "SELECT group_id FROM {$wpdb->actionscheduler_groups} WHERE slug=%s", $group ) + ); + + if ( ! empty( $group_id ) ) { + // Delete actions. + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->delete( $wpdb->actionscheduler_actions, [ 'group_id' => (int) $group_id ], [ '%d' ] ); + + // Delete group. + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching + $wpdb->delete( $wpdb->actionscheduler_groups, [ 'slug' => $group ], [ '%s' ] ); + } + } + } + + /** + * Clear the meta after action complete. + * Fired before an action is marked as completed. + * + * @since 3.5.0 + * + * @param integer $action_id Action ID. + * @param ActionScheduler_Action $action Action name. + */ + public function clear_action_meta( $action_id, $action ) { + + $action_schedule = $action->get_schedule(); + + if ( + $action_schedule === null || + $action_schedule->is_recurring() || + $action->get_group() !== self::GROUP + ) { + return; + } + + $hook_args = $action->get_args(); + + if ( ! is_numeric( $hook_args[0] ) ) { + return; + } + + $meta = new Meta(); + + $meta->delete( $hook_args[0] ); + } + + /** + * Whether ActionScheduler thinks that it has migrated or not. + * + * @since 2.1.0 + * + * @return bool + */ + public static function is_usable() { + + // No tasks if ActionScheduler wasn't loaded. + if ( ! class_exists( 'ActionScheduler_DataController' ) ) { + return false; + } + + return ActionScheduler_DataController::is_migration_complete(); + } + + /** + * Whether task has been scheduled and is pending. + * + * @since 2.1.0 + * + * @param string $hook Hook to check for. + * + * @return bool|null + */ + public static function is_scheduled( $hook ) { + + // If ActionScheduler wasn't loaded, then no tasks are scheduled. + if ( ! function_exists( 'as_next_scheduled_action' ) ) { + return null; + } + + if ( is_null( self::$active_actions ) ) { + self::$active_actions = self::get_active_actions(); + } + + if ( in_array( $hook, self::$active_actions, true ) ) { + return true; + } + + // Action is not in the array, so it is not scheduled or belongs to another group. + if ( function_exists( 'as_has_scheduled_action' ) ) { + // This function more performant than `as_next_scheduled_action`, but it is available only since AS 3.3.0. + return as_has_scheduled_action( $hook ); + } else { + return as_next_scheduled_action( $hook ) !== false; + } + } + + /** + * Get all WP Mail SMTP pending or in-progress actions. + * + * @since 3.3.0 + */ + private static function get_active_actions() { + + global $wpdb; + + $group = self::GROUP; + $sql = "SELECT a.hook FROM {$wpdb->prefix}actionscheduler_actions a + JOIN {$wpdb->prefix}actionscheduler_groups g ON g.group_id = a.group_id + WHERE g.slug = '$group' AND a.status IN ('in-progress', 'pending')"; + + // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching + // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared + $results = $wpdb->get_results( $sql, 'ARRAY_N' ); + // phpcs:enable WordPress.DB.DirectDatabaseQuery.NoCaching + // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared + + return $results ? array_merge( ...$results ) : []; + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Upgrade.php b/wp-content/plugins/wp-mail-smtp/src/Upgrade.php new file mode 100644 index 000000000..ed030d32b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Upgrade.php @@ -0,0 +1,80 @@ +upgrades(); + + if ( empty( $upgrades ) ) { + return; + } + + // Run any available upgrades. + foreach ( $upgrades as $upgrade ) { + $this->{$upgrade}(); + } + + // Update version post upgrade(s). + update_option( 'wp_mail_smtp_version', WPMS_PLUGIN_VER ); + } + + /** + * Whether we need to perform an upgrade. + * + * @since 1.1.0 + * + * @return array + */ + protected function upgrades() { + + $version = get_option( 'wp_mail_smtp_version' ); + $upgrades = array(); + + // Version 1.1.0 upgrade; prior to this the option was not available. + if ( empty( $version ) ) { + $upgrades[] = 'v110_upgrade'; + } + + return $upgrades; + } + + /** + * Upgrade routine for v1.1.0. + * + * Set SMTPAutoTLS to true. + * + * @since 1.1.0 + */ + public function v110_upgrade() { + + // Enable SMTPAutoTLS option. + $values = [ + 'smtp' => [ + 'autotls' => true, + ], + ]; + + Options::init()->set( $values, false, false ); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/src/Uploads.php b/wp-content/plugins/wp-mail-smtp/src/Uploads.php new file mode 100644 index 000000000..18f97f4da --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/src/Uploads.php @@ -0,0 +1,237 @@ + $upload_root, + 'url' => trailingslashit( $upload_dir['baseurl'] ) . $dir, + ]; + } + + + /** + * Create .htaccess file in the WPMailSMTP upload directory. + * + * @since 2.8.0 + * + * @return bool True when the .htaccess file exists, false on failure. + */ + public static function create_upload_dir_htaccess_file() { + + /** + * Filters create upload dir htaccess file. + * + * @since 2.8.0 + * + * @param bool $is_create Creates upload dir htaccess file. + */ + if ( ! apply_filters( 'wp_mail_smtp_uploads_create_upload_dir_htaccess_file', true ) ) { + return false; + } + + $upload_dir = self::upload_dir(); + + if ( is_wp_error( $upload_dir ) ) { + return false; + } + + $htaccess_file = wp_normalize_path( trailingslashit( $upload_dir['path'] ) . '.htaccess' ); + $cache_key = 'wp_mail_smtp_upload_dir_htaccess_file'; + + if ( is_file( $htaccess_file ) ) { + $cached_stat = get_transient( $cache_key ); + $stat = array_intersect_key( + stat( $htaccess_file ), + [ + 'size' => 0, + 'mtime' => 0, + 'ctime' => 0, + ] + ); + + if ( $cached_stat === $stat ) { + return true; + } + + @unlink( $htaccess_file ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + } + + if ( ! function_exists( 'insert_with_markers' ) ) { + require_once ABSPATH . 'wp-admin/includes/misc.php'; + } + + /** + * Filters upload dir htaccess file content. + * + * @since 2.8.0 + * + * @param bool $content Upload dir htaccess file content. + */ + $contents = apply_filters( + 'wp_mail_smtp_uploads_create_upload_dir_htaccess_file_content', + '# Disable PHP and Python scripts parsing. ++ +
+'; + printf( + // translators: 1) is the number of affected actions, 2) is a link to an admin screen. + _n( + 'Action Scheduler: %1$d past-due action found; something may be wrong. Read documentation »', + 'Action Scheduler: %1$d past-due actions found; something may be wrong. Read documentation »', + $num_pastdue_actions, + 'action-scheduler' + ), + $num_pastdue_actions, + esc_attr( esc_url( $actions_url ) ) + ); + echo '
' . + __( 'Action Scheduler is a scalable, traceable job queue for background processing large sets of actions. Action Scheduler works by triggering an action hook to run at some time in the future. Scheduled actions can also be scheduled to run on a recurring schedule.', 'action-scheduler' ) . + '
', + ) + ); + + $screen->add_help_tab( + array( + 'id' => 'action_scheduler_columns', + 'title' => __( 'Columns', 'action-scheduler' ), + 'content' => + '%s => %s
' . $action->get_hook() . '
';
+ if ( 1 == $notification['success'] ) {
+ $class = 'updated';
+ switch ( $notification['row_action_type'] ) {
+ case 'run' :
+ /* translators: %s: action HTML */
+ $action_message_html = sprintf( __( 'Successfully executed action: %s', 'action-scheduler' ), $action_hook_html );
+ break;
+ case 'cancel' :
+ /* translators: %s: action HTML */
+ $action_message_html = sprintf( __( 'Successfully canceled action: %s', 'action-scheduler' ), $action_hook_html );
+ break;
+ default :
+ /* translators: %s: action HTML */
+ $action_message_html = sprintf( __( 'Successfully processed change for action: %s', 'action-scheduler' ), $action_hook_html );
+ break;
+ }
+ } else {
+ $class = 'error';
+ /* translators: 1: action HTML 2: action ID 3: error message */
+ $action_message_html = sprintf( __( 'Could not process change for action: "%1$s" (ID: %2$d). Error: %3$s', 'action-scheduler' ), $action_hook_html, esc_html( $notification['action_id'] ), esc_html( $notification['error_message'] ) );
+ }
+
+ $action_message_html = apply_filters( 'action_scheduler_admin_notice_html', $action_message_html, $action, $notification );
+
+ $this->admin_notices[] = array(
+ 'class' => $class,
+ 'message' => $action_message_html,
+ );
+ }
+
+ parent::display_admin_notices();
+ }
+
+ /**
+ * Prints the scheduled date in a human friendly format.
+ *
+ * @param array $row The array representation of the current row of the table
+ *
+ * @return string
+ */
+ public function column_schedule( $row ) {
+ return $this->get_schedule_display_string( $row['schedule'] );
+ }
+
+ /**
+ * Get the scheduled date in a human friendly format.
+ *
+ * @param ActionScheduler_Schedule $schedule
+ * @return string
+ */
+ protected function get_schedule_display_string( ActionScheduler_Schedule $schedule ) {
+
+ $schedule_display_string = '';
+
+ if ( is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
+ return __( 'async', 'action-scheduler' );
+ }
+
+ if ( ! method_exists( $schedule, 'get_date' ) || ! $schedule->get_date() ) {
+ return '0000-00-00 00:00:00';
+ }
+
+ $next_timestamp = $schedule->get_date()->getTimestamp();
+
+ $schedule_display_string .= $schedule->get_date()->format( 'Y-m-d H:i:s O' );
+ $schedule_display_string .= '' . wp_kses_post( $notice ) . '
+ | ||||
---|---|---|---|---|
+ | + | |||
+ | + | |||
+ | + | + | + | + |
%1$s | %2$s | %3$s | %4$s |
' . wp_kses_post( $notice['message'] ) . '
'; + echo '%s
+ * For more information about this service, see the API + * Documentation + *
+ * + * @author Google, Inc. + */ +class Gmail extends \WPMailSMTP\Vendor\Google\Service +{ + /** Read, compose, send, and permanently delete all your email from Gmail. */ + const MAIL_GOOGLE_COM = "https://mail.google.com/"; + /** Manage drafts and send emails when you interact with the add-on. */ + const GMAIL_ADDONS_CURRENT_ACTION_COMPOSE = "https://www.googleapis.com/auth/gmail.addons.current.action.compose"; + /** View your email messages when you interact with the add-on. */ + const GMAIL_ADDONS_CURRENT_MESSAGE_ACTION = "https://www.googleapis.com/auth/gmail.addons.current.message.action"; + /** View your email message metadata when the add-on is running. */ + const GMAIL_ADDONS_CURRENT_MESSAGE_METADATA = "https://www.googleapis.com/auth/gmail.addons.current.message.metadata"; + /** View your email messages when the add-on is running. */ + const GMAIL_ADDONS_CURRENT_MESSAGE_READONLY = "https://www.googleapis.com/auth/gmail.addons.current.message.readonly"; + /** Manage drafts and send emails. */ + const GMAIL_COMPOSE = "https://www.googleapis.com/auth/gmail.compose"; + /** Add emails into your Gmail mailbox. */ + const GMAIL_INSERT = "https://www.googleapis.com/auth/gmail.insert"; + /** See and edit your email labels. */ + const GMAIL_LABELS = "https://www.googleapis.com/auth/gmail.labels"; + /** View your email message metadata such as labels and headers, but not the email body. */ + const GMAIL_METADATA = "https://www.googleapis.com/auth/gmail.metadata"; + /** Read, compose, and send emails from your Gmail account. */ + const GMAIL_MODIFY = "https://www.googleapis.com/auth/gmail.modify"; + /** View your email messages and settings. */ + const GMAIL_READONLY = "https://www.googleapis.com/auth/gmail.readonly"; + /** Send email on your behalf. */ + const GMAIL_SEND = "https://www.googleapis.com/auth/gmail.send"; + /** See, edit, create, or change your email settings and filters in Gmail. */ + const GMAIL_SETTINGS_BASIC = "https://www.googleapis.com/auth/gmail.settings.basic"; + /** Manage your sensitive mail settings, including who can manage your mail. */ + const GMAIL_SETTINGS_SHARING = "https://www.googleapis.com/auth/gmail.settings.sharing"; + public $users; + public $users_drafts; + public $users_history; + public $users_labels; + public $users_messages; + public $users_messages_attachments; + public $users_settings; + public $users_settings_cse_identities; + public $users_settings_cse_keypairs; + public $users_settings_delegates; + public $users_settings_filters; + public $users_settings_forwardingAddresses; + public $users_settings_sendAs; + public $users_settings_sendAs_smimeInfo; + public $users_threads; + /** + * Constructs the internal representation of the Gmail service. + * + * @param Client|array $clientOrConfig The client used to deliver requests, or a + * config array to pass to a new Client instance. + * @param string $rootUrl The root URL used for requests to the service. + */ + public function __construct($clientOrConfig = [], $rootUrl = null) + { + parent::__construct($clientOrConfig); + $this->rootUrl = $rootUrl ?: 'https://gmail.googleapis.com/'; + $this->servicePath = ''; + $this->batchPath = 'batch'; + $this->version = 'v1'; + $this->serviceName = 'gmail'; + $this->users = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\Users($this, $this->serviceName, 'users', ['methods' => ['getProfile' => ['path' => 'gmail/v1/users/{userId}/profile', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'stop' => ['path' => 'gmail/v1/users/{userId}/stop', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'watch' => ['path' => 'gmail/v1/users/{userId}/watch', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_drafts = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersDrafts($this, $this->serviceName, 'drafts', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/drafts', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/drafts/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/drafts/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'format' => ['location' => 'query', 'type' => 'string']]], 'list' => ['path' => 'gmail/v1/users/{userId}/drafts', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'includeSpamTrash' => ['location' => 'query', 'type' => 'boolean'], 'maxResults' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'q' => ['location' => 'query', 'type' => 'string']]], 'send' => ['path' => 'gmail/v1/users/{userId}/drafts/send', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'gmail/v1/users/{userId}/drafts/{id}', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_history = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersHistory($this, $this->serviceName, 'history', ['methods' => ['list' => ['path' => 'gmail/v1/users/{userId}/history', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'historyTypes' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'labelId' => ['location' => 'query', 'type' => 'string'], 'maxResults' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'startHistoryId' => ['location' => 'query', 'type' => 'string']]]]]); + $this->users_labels = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersLabels($this, $this->serviceName, 'labels', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/labels', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/labels/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/labels/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/labels', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'patch' => ['path' => 'gmail/v1/users/{userId}/labels/{id}', 'httpMethod' => 'PATCH', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'gmail/v1/users/{userId}/labels/{id}', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_messages = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersMessages($this, $this->serviceName, 'messages', ['methods' => ['batchDelete' => ['path' => 'gmail/v1/users/{userId}/messages/batchDelete', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'batchModify' => ['path' => 'gmail/v1/users/{userId}/messages/batchModify', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/messages/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/messages/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'format' => ['location' => 'query', 'type' => 'string'], 'metadataHeaders' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'import' => ['path' => 'gmail/v1/users/{userId}/messages/import', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'deleted' => ['location' => 'query', 'type' => 'boolean'], 'internalDateSource' => ['location' => 'query', 'type' => 'string'], 'neverMarkSpam' => ['location' => 'query', 'type' => 'boolean'], 'processForCalendar' => ['location' => 'query', 'type' => 'boolean']]], 'insert' => ['path' => 'gmail/v1/users/{userId}/messages', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'deleted' => ['location' => 'query', 'type' => 'boolean'], 'internalDateSource' => ['location' => 'query', 'type' => 'string']]], 'list' => ['path' => 'gmail/v1/users/{userId}/messages', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'includeSpamTrash' => ['location' => 'query', 'type' => 'boolean'], 'labelIds' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'maxResults' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'q' => ['location' => 'query', 'type' => 'string']]], 'modify' => ['path' => 'gmail/v1/users/{userId}/messages/{id}/modify', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'send' => ['path' => 'gmail/v1/users/{userId}/messages/send', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'trash' => ['path' => 'gmail/v1/users/{userId}/messages/{id}/trash', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'untrash' => ['path' => 'gmail/v1/users/{userId}/messages/{id}/untrash', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_messages_attachments = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersMessagesAttachments($this, $this->serviceName, 'attachments', ['methods' => ['get' => ['path' => 'gmail/v1/users/{userId}/messages/{messageId}/attachments/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'messageId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettings($this, $this->serviceName, 'settings', ['methods' => ['getAutoForwarding' => ['path' => 'gmail/v1/users/{userId}/settings/autoForwarding', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getImap' => ['path' => 'gmail/v1/users/{userId}/settings/imap', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getLanguage' => ['path' => 'gmail/v1/users/{userId}/settings/language', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getPop' => ['path' => 'gmail/v1/users/{userId}/settings/pop', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'getVacation' => ['path' => 'gmail/v1/users/{userId}/settings/vacation', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateAutoForwarding' => ['path' => 'gmail/v1/users/{userId}/settings/autoForwarding', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateImap' => ['path' => 'gmail/v1/users/{userId}/settings/imap', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateLanguage' => ['path' => 'gmail/v1/users/{userId}/settings/language', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updatePop' => ['path' => 'gmail/v1/users/{userId}/settings/pop', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'updateVacation' => ['path' => 'gmail/v1/users/{userId}/settings/vacation', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_cse_identities = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsCseIdentities($this, $this->serviceName, 'identities', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/cse/identities', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/settings/cse/identities/{cseEmailAddress}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'cseEmailAddress' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/cse/identities/{cseEmailAddress}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'cseEmailAddress' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/cse/identities', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'patch' => ['path' => 'gmail/v1/users/{userId}/settings/cse/identities/{emailAddress}', 'httpMethod' => 'PATCH', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'emailAddress' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_cse_keypairs = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsCseKeypairs($this, $this->serviceName, 'keypairs', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'disable' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:disable', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'keyPairId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'enable' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:enable', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'keyPairId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'keyPairId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'pageSize' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string']]], 'obliterate' => ['path' => 'gmail/v1/users/{userId}/settings/cse/keypairs/{keyPairId}:obliterate', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'keyPairId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_delegates = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsDelegates($this, $this->serviceName, 'delegates', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/delegates', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/settings/delegates/{delegateEmail}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'delegateEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/delegates/{delegateEmail}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'delegateEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/delegates', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_filters = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsFilters($this, $this->serviceName, 'filters', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/filters', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/settings/filters/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/filters/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/filters', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_forwardingAddresses = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsForwardingAddresses($this, $this->serviceName, 'forwardingAddresses', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/forwardingAddresses', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'forwardingEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/forwardingAddresses/{forwardingEmail}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'forwardingEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/forwardingAddresses', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_sendAs = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsSendAs($this, $this->serviceName, 'sendAs', ['methods' => ['create' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'delete' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'patch' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}', 'httpMethod' => 'PATCH', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'update' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}', 'httpMethod' => 'PUT', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'verify' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/verify', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_settings_sendAs_smimeInfo = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsSendAsSmimeInfo($this, $this->serviceName, 'smimeInfo', ['methods' => ['delete' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'insert' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'setDefault' => ['path' => 'gmail/v1/users/{userId}/settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'sendAsEmail' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + $this->users_threads = new \WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersThreads($this, $this->serviceName, 'threads', ['methods' => ['delete' => ['path' => 'gmail/v1/users/{userId}/threads/{id}', 'httpMethod' => 'DELETE', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'get' => ['path' => 'gmail/v1/users/{userId}/threads/{id}', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'format' => ['location' => 'query', 'type' => 'string'], 'metadataHeaders' => ['location' => 'query', 'type' => 'string', 'repeated' => \true]]], 'list' => ['path' => 'gmail/v1/users/{userId}/threads', 'httpMethod' => 'GET', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'includeSpamTrash' => ['location' => 'query', 'type' => 'boolean'], 'labelIds' => ['location' => 'query', 'type' => 'string', 'repeated' => \true], 'maxResults' => ['location' => 'query', 'type' => 'integer'], 'pageToken' => ['location' => 'query', 'type' => 'string'], 'q' => ['location' => 'query', 'type' => 'string']]], 'modify' => ['path' => 'gmail/v1/users/{userId}/threads/{id}/modify', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'trash' => ['path' => 'gmail/v1/users/{userId}/threads/{id}/trash', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]], 'untrash' => ['path' => 'gmail/v1/users/{userId}/threads/{id}/untrash', 'httpMethod' => 'POST', 'parameters' => ['userId' => ['location' => 'path', 'type' => 'string', 'required' => \true], 'id' => ['location' => 'path', 'type' => 'string', 'required' => \true]]]]]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/AutoForwarding.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/AutoForwarding.php new file mode 100644 index 000000000..79e070973 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/AutoForwarding.php @@ -0,0 +1,78 @@ +disposition = $disposition; + } + /** + * @return string + */ + public function getDisposition() + { + return $this->disposition; + } + /** + * @param string + */ + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param bool + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + /** + * @return bool + */ + public function getEnabled() + { + return $this->enabled; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\AutoForwarding::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_AutoForwarding'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchDeleteMessagesRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchDeleteMessagesRequest.php new file mode 100644 index 000000000..4322ae7b5 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchDeleteMessagesRequest.php @@ -0,0 +1,43 @@ +ids = $ids; + } + /** + * @return string[] + */ + public function getIds() + { + return $this->ids; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\BatchDeleteMessagesRequest::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_BatchDeleteMessagesRequest'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchModifyMessagesRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchModifyMessagesRequest.php new file mode 100644 index 000000000..645108076 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/BatchModifyMessagesRequest.php @@ -0,0 +1,79 @@ +addLabelIds = $addLabelIds; + } + /** + * @return string[] + */ + public function getAddLabelIds() + { + return $this->addLabelIds; + } + /** + * @param string[] + */ + public function setIds($ids) + { + $this->ids = $ids; + } + /** + * @return string[] + */ + public function getIds() + { + return $this->ids; + } + /** + * @param string[] + */ + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + /** + * @return string[] + */ + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\BatchModifyMessagesRequest::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_BatchModifyMessagesRequest'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseIdentity.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseIdentity.php new file mode 100644 index 000000000..6d1ccb122 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseIdentity.php @@ -0,0 +1,60 @@ +emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param string + */ + public function setPrimaryKeyPairId($primaryKeyPairId) + { + $this->primaryKeyPairId = $primaryKeyPairId; + } + /** + * @return string + */ + public function getPrimaryKeyPairId() + { + return $this->primaryKeyPairId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_CseIdentity'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseKeyPair.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseKeyPair.php new file mode 100644 index 000000000..61c1d4837 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CseKeyPair.php @@ -0,0 +1,149 @@ +disableTime = $disableTime; + } + /** + * @return string + */ + public function getDisableTime() + { + return $this->disableTime; + } + /** + * @param string + */ + public function setEnablementState($enablementState) + { + $this->enablementState = $enablementState; + } + /** + * @return string + */ + public function getEnablementState() + { + return $this->enablementState; + } + /** + * @param string + */ + public function setKeyPairId($keyPairId) + { + $this->keyPairId = $keyPairId; + } + /** + * @return string + */ + public function getKeyPairId() + { + return $this->keyPairId; + } + /** + * @param string + */ + public function setPem($pem) + { + $this->pem = $pem; + } + /** + * @return string + */ + public function getPem() + { + return $this->pem; + } + /** + * @param string + */ + public function setPkcs7($pkcs7) + { + $this->pkcs7 = $pkcs7; + } + /** + * @return string + */ + public function getPkcs7() + { + return $this->pkcs7; + } + /** + * @param CsePrivateKeyMetadata[] + */ + public function setPrivateKeyMetadata($privateKeyMetadata) + { + $this->privateKeyMetadata = $privateKeyMetadata; + } + /** + * @return CsePrivateKeyMetadata[] + */ + public function getPrivateKeyMetadata() + { + return $this->privateKeyMetadata; + } + /** + * @param string[] + */ + public function setSubjectEmailAddresses($subjectEmailAddresses) + { + $this->subjectEmailAddresses = $subjectEmailAddresses; + } + /** + * @return string[] + */ + public function getSubjectEmailAddresses() + { + return $this->subjectEmailAddresses; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_CseKeyPair'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CsePrivateKeyMetadata.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CsePrivateKeyMetadata.php new file mode 100644 index 000000000..9132496ac --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/CsePrivateKeyMetadata.php @@ -0,0 +1,58 @@ +kaclsKeyMetadata = $kaclsKeyMetadata; + } + /** + * @return KaclsKeyMetadata + */ + public function getKaclsKeyMetadata() + { + return $this->kaclsKeyMetadata; + } + /** + * @param string + */ + public function setPrivateKeyMetadataId($privateKeyMetadataId) + { + $this->privateKeyMetadataId = $privateKeyMetadataId; + } + /** + * @return string + */ + public function getPrivateKeyMetadataId() + { + return $this->privateKeyMetadataId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\CsePrivateKeyMetadata::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_CsePrivateKeyMetadata'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Delegate.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Delegate.php new file mode 100644 index 000000000..1348d00df --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Delegate.php @@ -0,0 +1,60 @@ +delegateEmail = $delegateEmail; + } + /** + * @return string + */ + public function getDelegateEmail() + { + return $this->delegateEmail; + } + /** + * @param string + */ + public function setVerificationStatus($verificationStatus) + { + $this->verificationStatus = $verificationStatus; + } + /** + * @return string + */ + public function getVerificationStatus() + { + return $this->verificationStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Delegate::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Delegate'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/DisableCseKeyPairRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/DisableCseKeyPairRequest.php new file mode 100644 index 000000000..15351a53c --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/DisableCseKeyPairRequest.php @@ -0,0 +1,24 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param Message + */ + public function setMessage(\WPMailSMTP\Vendor\Google\Service\Gmail\Message $message) + { + $this->message = $message; + } + /** + * @return Message + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Draft::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Draft'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/EnableCseKeyPairRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/EnableCseKeyPairRequest.php new file mode 100644 index 000000000..23f726514 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/EnableCseKeyPairRequest.php @@ -0,0 +1,24 @@ +action = $action; + } + /** + * @return FilterAction + */ + public function getAction() + { + return $this->action; + } + /** + * @param FilterCriteria + */ + public function setCriteria(\WPMailSMTP\Vendor\Google\Service\Gmail\FilterCriteria $criteria) + { + $this->criteria = $criteria; + } + /** + * @return FilterCriteria + */ + public function getCriteria() + { + return $this->criteria; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Filter::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Filter'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterAction.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterAction.php new file mode 100644 index 000000000..5896c44ef --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterAction.php @@ -0,0 +1,79 @@ +addLabelIds = $addLabelIds; + } + /** + * @return string[] + */ + public function getAddLabelIds() + { + return $this->addLabelIds; + } + /** + * @param string + */ + public function setForward($forward) + { + $this->forward = $forward; + } + /** + * @return string + */ + public function getForward() + { + return $this->forward; + } + /** + * @param string[] + */ + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + /** + * @return string[] + */ + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\FilterAction::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_FilterAction'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterCriteria.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterCriteria.php new file mode 100644 index 000000000..95b134402 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/FilterCriteria.php @@ -0,0 +1,186 @@ +excludeChats = $excludeChats; + } + /** + * @return bool + */ + public function getExcludeChats() + { + return $this->excludeChats; + } + /** + * @param string + */ + public function setFrom($from) + { + $this->from = $from; + } + /** + * @return string + */ + public function getFrom() + { + return $this->from; + } + /** + * @param bool + */ + public function setHasAttachment($hasAttachment) + { + $this->hasAttachment = $hasAttachment; + } + /** + * @return bool + */ + public function getHasAttachment() + { + return $this->hasAttachment; + } + /** + * @param string + */ + public function setNegatedQuery($negatedQuery) + { + $this->negatedQuery = $negatedQuery; + } + /** + * @return string + */ + public function getNegatedQuery() + { + return $this->negatedQuery; + } + /** + * @param string + */ + public function setQuery($query) + { + $this->query = $query; + } + /** + * @return string + */ + public function getQuery() + { + return $this->query; + } + /** + * @param int + */ + public function setSize($size) + { + $this->size = $size; + } + /** + * @return int + */ + public function getSize() + { + return $this->size; + } + /** + * @param string + */ + public function setSizeComparison($sizeComparison) + { + $this->sizeComparison = $sizeComparison; + } + /** + * @return string + */ + public function getSizeComparison() + { + return $this->sizeComparison; + } + /** + * @param string + */ + public function setSubject($subject) + { + $this->subject = $subject; + } + /** + * @return string + */ + public function getSubject() + { + return $this->subject; + } + /** + * @param string + */ + public function setTo($to) + { + $this->to = $to; + } + /** + * @return string + */ + public function getTo() + { + return $this->to; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\FilterCriteria::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_FilterCriteria'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ForwardingAddress.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ForwardingAddress.php new file mode 100644 index 000000000..05c84c027 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ForwardingAddress.php @@ -0,0 +1,60 @@ +forwardingEmail = $forwardingEmail; + } + /** + * @return string + */ + public function getForwardingEmail() + { + return $this->forwardingEmail; + } + /** + * @param string + */ + public function setVerificationStatus($verificationStatus) + { + $this->verificationStatus = $verificationStatus; + } + /** + * @return string + */ + public function getVerificationStatus() + { + return $this->verificationStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ForwardingAddress::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ForwardingAddress'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/History.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/History.php new file mode 100644 index 000000000..f0b978b3d --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/History.php @@ -0,0 +1,123 @@ +id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param HistoryLabelAdded[] + */ + public function setLabelsAdded($labelsAdded) + { + $this->labelsAdded = $labelsAdded; + } + /** + * @return HistoryLabelAdded[] + */ + public function getLabelsAdded() + { + return $this->labelsAdded; + } + /** + * @param HistoryLabelRemoved[] + */ + public function setLabelsRemoved($labelsRemoved) + { + $this->labelsRemoved = $labelsRemoved; + } + /** + * @return HistoryLabelRemoved[] + */ + public function getLabelsRemoved() + { + return $this->labelsRemoved; + } + /** + * @param Message[] + */ + public function setMessages($messages) + { + $this->messages = $messages; + } + /** + * @return Message[] + */ + public function getMessages() + { + return $this->messages; + } + /** + * @param HistoryMessageAdded[] + */ + public function setMessagesAdded($messagesAdded) + { + $this->messagesAdded = $messagesAdded; + } + /** + * @return HistoryMessageAdded[] + */ + public function getMessagesAdded() + { + return $this->messagesAdded; + } + /** + * @param HistoryMessageDeleted[] + */ + public function setMessagesDeleted($messagesDeleted) + { + $this->messagesDeleted = $messagesDeleted; + } + /** + * @return HistoryMessageDeleted[] + */ + public function getMessagesDeleted() + { + return $this->messagesDeleted; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\History::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_History'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelAdded.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelAdded.php new file mode 100644 index 000000000..dd88f137f --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelAdded.php @@ -0,0 +1,59 @@ +labelIds = $labelIds; + } + /** + * @return string[] + */ + public function getLabelIds() + { + return $this->labelIds; + } + /** + * @param Message + */ + public function setMessage(\WPMailSMTP\Vendor\Google\Service\Gmail\Message $message) + { + $this->message = $message; + } + /** + * @return Message + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\HistoryLabelAdded::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_HistoryLabelAdded'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelRemoved.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelRemoved.php new file mode 100644 index 000000000..11fe5a922 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryLabelRemoved.php @@ -0,0 +1,59 @@ +labelIds = $labelIds; + } + /** + * @return string[] + */ + public function getLabelIds() + { + return $this->labelIds; + } + /** + * @param Message + */ + public function setMessage(\WPMailSMTP\Vendor\Google\Service\Gmail\Message $message) + { + $this->message = $message; + } + /** + * @return Message + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\HistoryLabelRemoved::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_HistoryLabelRemoved'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageAdded.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageAdded.php new file mode 100644 index 000000000..c301380c6 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageAdded.php @@ -0,0 +1,40 @@ +message = $message; + } + /** + * @return Message + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\HistoryMessageAdded::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_HistoryMessageAdded'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageDeleted.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageDeleted.php new file mode 100644 index 000000000..5572eee88 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/HistoryMessageDeleted.php @@ -0,0 +1,40 @@ +message = $message; + } + /** + * @return Message + */ + public function getMessage() + { + return $this->message; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\HistoryMessageDeleted::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_HistoryMessageDeleted'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ImapSettings.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ImapSettings.php new file mode 100644 index 000000000..955da7e45 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ImapSettings.php @@ -0,0 +1,96 @@ +autoExpunge = $autoExpunge; + } + /** + * @return bool + */ + public function getAutoExpunge() + { + return $this->autoExpunge; + } + /** + * @param bool + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + /** + * @return bool + */ + public function getEnabled() + { + return $this->enabled; + } + /** + * @param string + */ + public function setExpungeBehavior($expungeBehavior) + { + $this->expungeBehavior = $expungeBehavior; + } + /** + * @return string + */ + public function getExpungeBehavior() + { + return $this->expungeBehavior; + } + /** + * @param int + */ + public function setMaxFolderSize($maxFolderSize) + { + $this->maxFolderSize = $maxFolderSize; + } + /** + * @return int + */ + public function getMaxFolderSize() + { + return $this->maxFolderSize; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ImapSettings::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ImapSettings'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/KaclsKeyMetadata.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/KaclsKeyMetadata.php new file mode 100644 index 000000000..368153b34 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/KaclsKeyMetadata.php @@ -0,0 +1,60 @@ +kaclsData = $kaclsData; + } + /** + * @return string + */ + public function getKaclsData() + { + return $this->kaclsData; + } + /** + * @param string + */ + public function setKaclsUri($kaclsUri) + { + $this->kaclsUri = $kaclsUri; + } + /** + * @return string + */ + public function getKaclsUri() + { + return $this->kaclsUri; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\KaclsKeyMetadata::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_KaclsKeyMetadata'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Label.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Label.php new file mode 100644 index 000000000..b1cd0da52 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Label.php @@ -0,0 +1,202 @@ +color = $color; + } + /** + * @return LabelColor + */ + public function getColor() + { + return $this->color; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setLabelListVisibility($labelListVisibility) + { + $this->labelListVisibility = $labelListVisibility; + } + /** + * @return string + */ + public function getLabelListVisibility() + { + return $this->labelListVisibility; + } + /** + * @param string + */ + public function setMessageListVisibility($messageListVisibility) + { + $this->messageListVisibility = $messageListVisibility; + } + /** + * @return string + */ + public function getMessageListVisibility() + { + return $this->messageListVisibility; + } + /** + * @param int + */ + public function setMessagesTotal($messagesTotal) + { + $this->messagesTotal = $messagesTotal; + } + /** + * @return int + */ + public function getMessagesTotal() + { + return $this->messagesTotal; + } + /** + * @param int + */ + public function setMessagesUnread($messagesUnread) + { + $this->messagesUnread = $messagesUnread; + } + /** + * @return int + */ + public function getMessagesUnread() + { + return $this->messagesUnread; + } + /** + * @param string + */ + public function setName($name) + { + $this->name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param int + */ + public function setThreadsTotal($threadsTotal) + { + $this->threadsTotal = $threadsTotal; + } + /** + * @return int + */ + public function getThreadsTotal() + { + return $this->threadsTotal; + } + /** + * @param int + */ + public function setThreadsUnread($threadsUnread) + { + $this->threadsUnread = $threadsUnread; + } + /** + * @return int + */ + public function getThreadsUnread() + { + return $this->threadsUnread; + } + /** + * @param string + */ + public function setType($type) + { + $this->type = $type; + } + /** + * @return string + */ + public function getType() + { + return $this->type; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Label::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Label'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LabelColor.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LabelColor.php new file mode 100644 index 000000000..a65a2291b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LabelColor.php @@ -0,0 +1,60 @@ +backgroundColor = $backgroundColor; + } + /** + * @return string + */ + public function getBackgroundColor() + { + return $this->backgroundColor; + } + /** + * @param string + */ + public function setTextColor($textColor) + { + $this->textColor = $textColor; + } + /** + * @return string + */ + public function getTextColor() + { + return $this->textColor; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\LabelColor::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_LabelColor'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LanguageSettings.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LanguageSettings.php new file mode 100644 index 000000000..45dc52396 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/LanguageSettings.php @@ -0,0 +1,42 @@ +displayLanguage = $displayLanguage; + } + /** + * @return string + */ + public function getDisplayLanguage() + { + return $this->displayLanguage; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\LanguageSettings::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_LanguageSettings'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseIdentitiesResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseIdentitiesResponse.php new file mode 100644 index 000000000..f9dd141be --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseIdentitiesResponse.php @@ -0,0 +1,59 @@ +cseIdentities = $cseIdentities; + } + /** + * @return CseIdentity[] + */ + public function getCseIdentities() + { + return $this->cseIdentities; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListCseIdentitiesResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListCseIdentitiesResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseKeyPairsResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseKeyPairsResponse.php new file mode 100644 index 000000000..7568b7b34 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListCseKeyPairsResponse.php @@ -0,0 +1,59 @@ +cseKeyPairs = $cseKeyPairs; + } + /** + * @return CseKeyPair[] + */ + public function getCseKeyPairs() + { + return $this->cseKeyPairs; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListCseKeyPairsResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListCseKeyPairsResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDelegatesResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDelegatesResponse.php new file mode 100644 index 000000000..454413f97 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDelegatesResponse.php @@ -0,0 +1,41 @@ +delegates = $delegates; + } + /** + * @return Delegate[] + */ + public function getDelegates() + { + return $this->delegates; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListDelegatesResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListDelegatesResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDraftsResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDraftsResponse.php new file mode 100644 index 000000000..e0d79587c --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListDraftsResponse.php @@ -0,0 +1,77 @@ +drafts = $drafts; + } + /** + * @return Draft[] + */ + public function getDrafts() + { + return $this->drafts; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + /** + * @return string + */ + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListDraftsResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListDraftsResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListFiltersResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListFiltersResponse.php new file mode 100644 index 000000000..7cacc5037 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListFiltersResponse.php @@ -0,0 +1,41 @@ +filter = $filter; + } + /** + * @return Filter[] + */ + public function getFilter() + { + return $this->filter; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListFiltersResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListFiltersResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListForwardingAddressesResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListForwardingAddressesResponse.php new file mode 100644 index 000000000..3764837c5 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListForwardingAddressesResponse.php @@ -0,0 +1,41 @@ +forwardingAddresses = $forwardingAddresses; + } + /** + * @return ForwardingAddress[] + */ + public function getForwardingAddresses() + { + return $this->forwardingAddresses; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListForwardingAddressesResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListForwardingAddressesResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListHistoryResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListHistoryResponse.php new file mode 100644 index 000000000..d06979ee9 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListHistoryResponse.php @@ -0,0 +1,77 @@ +history = $history; + } + /** + * @return History[] + */ + public function getHistory() + { + return $this->history; + } + /** + * @param string + */ + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + /** + * @return string + */ + public function getHistoryId() + { + return $this->historyId; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListHistoryResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListHistoryResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListLabelsResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListLabelsResponse.php new file mode 100644 index 000000000..2348d2cd8 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListLabelsResponse.php @@ -0,0 +1,41 @@ +labels = $labels; + } + /** + * @return Label[] + */ + public function getLabels() + { + return $this->labels; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListLabelsResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListLabelsResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListMessagesResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListMessagesResponse.php new file mode 100644 index 000000000..f2f761620 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListMessagesResponse.php @@ -0,0 +1,77 @@ +messages = $messages; + } + /** + * @return Message[] + */ + public function getMessages() + { + return $this->messages; + } + /** + * @param string + */ + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + /** + * @return string + */ + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListMessagesResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListMessagesResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSendAsResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSendAsResponse.php new file mode 100644 index 000000000..00d13403b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSendAsResponse.php @@ -0,0 +1,41 @@ +sendAs = $sendAs; + } + /** + * @return SendAs[] + */ + public function getSendAs() + { + return $this->sendAs; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListSendAsResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListSendAsResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSmimeInfoResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSmimeInfoResponse.php new file mode 100644 index 000000000..86741cf07 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListSmimeInfoResponse.php @@ -0,0 +1,41 @@ +smimeInfo = $smimeInfo; + } + /** + * @return SmimeInfo[] + */ + public function getSmimeInfo() + { + return $this->smimeInfo; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListSmimeInfoResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListSmimeInfoResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListThreadsResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListThreadsResponse.php new file mode 100644 index 000000000..01a6cee02 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ListThreadsResponse.php @@ -0,0 +1,77 @@ +nextPageToken = $nextPageToken; + } + /** + * @return string + */ + public function getNextPageToken() + { + return $this->nextPageToken; + } + /** + * @param string + */ + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + /** + * @return string + */ + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } + /** + * @param Thread[] + */ + public function setThreads($threads) + { + $this->threads = $threads; + } + /** + * @return Thread[] + */ + public function getThreads() + { + return $this->threads; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ListThreadsResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ListThreadsResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Message.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Message.php new file mode 100644 index 000000000..6583504c5 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Message.php @@ -0,0 +1,185 @@ +historyId = $historyId; + } + /** + * @return string + */ + public function getHistoryId() + { + return $this->historyId; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param string + */ + public function setInternalDate($internalDate) + { + $this->internalDate = $internalDate; + } + /** + * @return string + */ + public function getInternalDate() + { + return $this->internalDate; + } + /** + * @param string[] + */ + public function setLabelIds($labelIds) + { + $this->labelIds = $labelIds; + } + /** + * @return string[] + */ + public function getLabelIds() + { + return $this->labelIds; + } + /** + * @param MessagePart + */ + public function setPayload(\WPMailSMTP\Vendor\Google\Service\Gmail\MessagePart $payload) + { + $this->payload = $payload; + } + /** + * @return MessagePart + */ + public function getPayload() + { + return $this->payload; + } + /** + * @param string + */ + public function setRaw($raw) + { + $this->raw = $raw; + } + /** + * @return string + */ + public function getRaw() + { + return $this->raw; + } + /** + * @param int + */ + public function setSizeEstimate($sizeEstimate) + { + $this->sizeEstimate = $sizeEstimate; + } + /** + * @return int + */ + public function getSizeEstimate() + { + return $this->sizeEstimate; + } + /** + * @param string + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + /** + * @return string + */ + public function getSnippet() + { + return $this->snippet; + } + /** + * @param string + */ + public function setThreadId($threadId) + { + $this->threadId = $threadId; + } + /** + * @return string + */ + public function getThreadId() + { + return $this->threadId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Message::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Message'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePart.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePart.php new file mode 100644 index 000000000..788a6b6ba --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePart.php @@ -0,0 +1,127 @@ +body = $body; + } + /** + * @return MessagePartBody + */ + public function getBody() + { + return $this->body; + } + /** + * @param string + */ + public function setFilename($filename) + { + $this->filename = $filename; + } + /** + * @return string + */ + public function getFilename() + { + return $this->filename; + } + /** + * @param MessagePartHeader[] + */ + public function setHeaders($headers) + { + $this->headers = $headers; + } + /** + * @return MessagePartHeader[] + */ + public function getHeaders() + { + return $this->headers; + } + /** + * @param string + */ + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + /** + * @return string + */ + public function getMimeType() + { + return $this->mimeType; + } + /** + * @param string + */ + public function setPartId($partId) + { + $this->partId = $partId; + } + /** + * @return string + */ + public function getPartId() + { + return $this->partId; + } + /** + * @param MessagePart[] + */ + public function setParts($parts) + { + $this->parts = $parts; + } + /** + * @return MessagePart[] + */ + public function getParts() + { + return $this->parts; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\MessagePart::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_MessagePart'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartBody.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartBody.php new file mode 100644 index 000000000..1aa7d01d8 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartBody.php @@ -0,0 +1,78 @@ +attachmentId = $attachmentId; + } + /** + * @return string + */ + public function getAttachmentId() + { + return $this->attachmentId; + } + /** + * @param string + */ + public function setData($data) + { + $this->data = $data; + } + /** + * @return string + */ + public function getData() + { + return $this->data; + } + /** + * @param int + */ + public function setSize($size) + { + $this->size = $size; + } + /** + * @return int + */ + public function getSize() + { + return $this->size; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\MessagePartBody::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_MessagePartBody'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartHeader.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartHeader.php new file mode 100644 index 000000000..1b746eb60 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/MessagePartHeader.php @@ -0,0 +1,60 @@ +name = $name; + } + /** + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * @param string + */ + public function setValue($value) + { + $this->value = $value; + } + /** + * @return string + */ + public function getValue() + { + return $this->value; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\MessagePartHeader::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_MessagePartHeader'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyMessageRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyMessageRequest.php new file mode 100644 index 000000000..dc49638b6 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyMessageRequest.php @@ -0,0 +1,61 @@ +addLabelIds = $addLabelIds; + } + /** + * @return string[] + */ + public function getAddLabelIds() + { + return $this->addLabelIds; + } + /** + * @param string[] + */ + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + /** + * @return string[] + */ + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ModifyMessageRequest::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ModifyMessageRequest'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyThreadRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyThreadRequest.php new file mode 100644 index 000000000..d29898822 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ModifyThreadRequest.php @@ -0,0 +1,61 @@ +addLabelIds = $addLabelIds; + } + /** + * @return string[] + */ + public function getAddLabelIds() + { + return $this->addLabelIds; + } + /** + * @param string[] + */ + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + /** + * @return string[] + */ + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\ModifyThreadRequest::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_ModifyThreadRequest'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ObliterateCseKeyPairRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ObliterateCseKeyPairRequest.php new file mode 100644 index 000000000..2ad4367a5 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/ObliterateCseKeyPairRequest.php @@ -0,0 +1,24 @@ +accessWindow = $accessWindow; + } + /** + * @return string + */ + public function getAccessWindow() + { + return $this->accessWindow; + } + /** + * @param string + */ + public function setDisposition($disposition) + { + $this->disposition = $disposition; + } + /** + * @return string + */ + public function getDisposition() + { + return $this->disposition; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\PopSettings::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_PopSettings'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Profile.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Profile.php new file mode 100644 index 000000000..56d3524d5 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Profile.php @@ -0,0 +1,96 @@ +emailAddress = $emailAddress; + } + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + /** + * @param string + */ + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + /** + * @return string + */ + public function getHistoryId() + { + return $this->historyId; + } + /** + * @param int + */ + public function setMessagesTotal($messagesTotal) + { + $this->messagesTotal = $messagesTotal; + } + /** + * @return int + */ + public function getMessagesTotal() + { + return $this->messagesTotal; + } + /** + * @param int + */ + public function setThreadsTotal($threadsTotal) + { + $this->threadsTotal = $threadsTotal; + } + /** + * @return int + */ + public function getThreadsTotal() + { + return $this->threadsTotal; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Profile::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Profile'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/Users.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/Users.php new file mode 100644 index 000000000..bab4953b8 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/Users.php @@ -0,0 +1,78 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $users = $gmailService->users; + * + */ +class Users extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Gets the current user's Gmail profile. (users.getProfile) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return Profile + */ + public function getProfile($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getProfile', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Profile::class); + } + /** + * Stop receiving push notifications for the given user mailbox. (users.stop) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + */ + public function stop($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('stop', [$params]); + } + /** + * Set up or update a push notification watch on the given user mailbox. + * (users.watch) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param WatchRequest $postBody + * @param array $optParams Optional parameters. + * @return WatchResponse + */ + public function watch($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\WatchRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('watch', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\WatchResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\Users::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_Users'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersDrafts.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersDrafts.php new file mode 100644 index 000000000..6f70f5eec --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersDrafts.php @@ -0,0 +1,138 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $drafts = $gmailService->users_drafts; + * + */ +class UsersDrafts extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates a new draft with the `DRAFT` label. (drafts.create) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Draft $postBody + * @param array $optParams Optional parameters. + * @return Draft + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Draft $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Draft::class); + } + /** + * Immediately and permanently deletes the specified draft. Does not simply + * trash it. (drafts.delete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the draft to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified draft. (drafts.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the draft to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string format The format to return the draft in. + * @return Draft + */ + public function get($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Draft::class); + } + /** + * Lists the drafts in the user's mailbox. (drafts.listUsersDrafts) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSpamTrash Include drafts from `SPAM` and `TRASH` in + * the results. + * @opt_param string maxResults Maximum number of drafts to return. This field + * defaults to 100. The maximum allowed value for this field is 500. + * @opt_param string pageToken Page token to retrieve a specific page of results + * in the list. + * @opt_param string q Only return draft messages matching the specified query. + * Supports the same query format as the Gmail search box. For example, + * `"from:someuser@example.com rfc822msgid: is:unread"`. + * @return ListDraftsResponse + */ + public function listUsersDrafts($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListDraftsResponse::class); + } + /** + * Sends the specified, existing draft to the recipients in the `To`, `Cc`, and + * `Bcc` headers. (drafts.send) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Draft $postBody + * @param array $optParams Optional parameters. + * @return Message + */ + public function send($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Draft $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('send', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Replaces a draft's content. (drafts.update) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the draft to update. + * @param Draft $postBody + * @param array $optParams Optional parameters. + * @return Draft + */ + public function update($userId, $id, \WPMailSMTP\Vendor\Google\Service\Gmail\Draft $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Draft::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersDrafts::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersDrafts'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersHistory.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersHistory.php new file mode 100644 index 000000000..5b062dadd --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersHistory.php @@ -0,0 +1,67 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $history = $gmailService->users_history; + * + */ +class UsersHistory extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Lists the history of all changes to the given mailbox. History results are + * returned in chronological order (increasing `historyId`). + * (history.listUsersHistory) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string historyTypes History types to be returned by the function + * @opt_param string labelId Only return messages with a label matching the ID. + * @opt_param string maxResults Maximum number of history records to return. + * This field defaults to 100. The maximum allowed value for this field is 500. + * @opt_param string pageToken Page token to retrieve a specific page of results + * in the list. + * @opt_param string startHistoryId Required. Returns history records after the + * specified `startHistoryId`. The supplied `startHistoryId` should be obtained + * from the `historyId` of a message, thread, or previous `list` response. + * History IDs increase chronologically but are not contiguous with random gaps + * in between valid IDs. Supplying an invalid or out of date `startHistoryId` + * typically returns an `HTTP 404` error code. A `historyId` is typically valid + * for at least a week, but in some rare circumstances may be valid for only a + * few hours. If you receive an `HTTP 404` error response, your application + * should perform a full sync. If you receive no `nextPageToken` in the + * response, there are no updates to retrieve and you can store the returned + * `historyId` for a future request. + * @return ListHistoryResponse + */ + public function listUsersHistory($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListHistoryResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersHistory::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersHistory'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersLabels.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersLabels.php new file mode 100644 index 000000000..fb64fbbb4 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersLabels.php @@ -0,0 +1,125 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $labels = $gmailService->users_labels; + * + */ +class UsersLabels extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates a new label. (labels.create) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Label $postBody + * @param array $optParams Optional parameters. + * @return Label + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Label $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Label::class); + } + /** + * Immediately and permanently deletes the specified label and removes it from + * any messages and threads that it is applied to. (labels.delete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the label to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified label. (labels.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the label to retrieve. + * @param array $optParams Optional parameters. + * @return Label + */ + public function get($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Label::class); + } + /** + * Lists all labels in the user's mailbox. (labels.listUsersLabels) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ListLabelsResponse + */ + public function listUsersLabels($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListLabelsResponse::class); + } + /** + * Patch the specified label. (labels.patch) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the label to update. + * @param Label $postBody + * @param array $optParams Optional parameters. + * @return Label + */ + public function patch($userId, $id, \WPMailSMTP\Vendor\Google\Service\Gmail\Label $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Label::class); + } + /** + * Updates the specified label. (labels.update) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the label to update. + * @param Label $postBody + * @param array $optParams Optional parameters. + * @return Label + */ + public function update($userId, $id, \WPMailSMTP\Vendor\Google\Service\Gmail\Label $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Label::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersLabels::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersLabels'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessages.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessages.php new file mode 100644 index 000000000..9757b9433 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessages.php @@ -0,0 +1,248 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $messages = $gmailService->users_messages; + * + */ +class UsersMessages extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Deletes many messages by message ID. Provides no guarantees that messages + * were not already deleted or even existed at all. (messages.batchDelete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param BatchDeleteMessagesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function batchDelete($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\BatchDeleteMessagesRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchDelete', [$params]); + } + /** + * Modifies the labels on the specified messages. (messages.batchModify) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param BatchModifyMessagesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function batchModify($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\BatchModifyMessagesRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('batchModify', [$params]); + } + /** + * Immediately and permanently deletes the specified message. This operation + * cannot be undone. Prefer `messages.trash` instead. (messages.delete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the message to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified message. (messages.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the message to retrieve. This ID is usually + * retrieved using `messages.list`. The ID is also contained in the result when + * a message is inserted (`messages.insert`) or imported (`messages.import`). + * @param array $optParams Optional parameters. + * + * @opt_param string format The format to return the message in. + * @opt_param string metadataHeaders When given and format is `METADATA`, only + * include headers specified. + * @return Message + */ + public function get($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Imports a message into only this user's mailbox, with standard email delivery + * scanning and classification similar to receiving via SMTP. This method + * doesn't perform SPF checks, so it might not work for some spam messages, such + * as those attempting to perform domain spoofing. This method does not send a + * message. (messages.import) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Message $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool deleted Mark the email as permanently deleted (not TRASH) and + * only visible in Google Vault to a Vault administrator. Only used for Google + * Workspace accounts. + * @opt_param string internalDateSource Source for Gmail's internal date of the + * message. + * @opt_param bool neverMarkSpam Ignore the Gmail spam classifier decision and + * never mark this email as SPAM in the mailbox. + * @opt_param bool processForCalendar Process calendar invites in the email and + * add any extracted meetings to the Google Calendar for this user. + * @return Message + */ + public function import($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Message $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('import', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Directly inserts a message into only this user's mailbox similar to `IMAP + * APPEND`, bypassing most scanning and classification. Does not send a message. + * (messages.insert) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Message $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool deleted Mark the email as permanently deleted (not TRASH) and + * only visible in Google Vault to a Vault administrator. Only used for Google + * Workspace accounts. + * @opt_param string internalDateSource Source for Gmail's internal date of the + * message. + * @return Message + */ + public function insert($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Message $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Lists the messages in the user's mailbox. (messages.listUsersMessages) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSpamTrash Include messages from `SPAM` and `TRASH` in + * the results. + * @opt_param string labelIds Only return messages with labels that match all of + * the specified label IDs. Messages in a thread might have labels that other + * messages in the same thread don't have. To learn more, see [Manage labels on + * messages and threads](https://developers.google.com/gmail/api/guides/labels#m + * anage_labels_on_messages_threads). + * @opt_param string maxResults Maximum number of messages to return. This field + * defaults to 100. The maximum allowed value for this field is 500. + * @opt_param string pageToken Page token to retrieve a specific page of results + * in the list. + * @opt_param string q Only return messages matching the specified query. + * Supports the same query format as the Gmail search box. For example, + * `"from:someuser@example.com rfc822msgid: is:unread"`. Parameter cannot be + * used when accessing the api using the gmail.metadata scope. + * @return ListMessagesResponse + */ + public function listUsersMessages($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListMessagesResponse::class); + } + /** + * Modifies the labels on the specified message. (messages.modify) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the message to modify. + * @param ModifyMessageRequest $postBody + * @param array $optParams Optional parameters. + * @return Message + */ + public function modify($userId, $id, \WPMailSMTP\Vendor\Google\Service\Gmail\ModifyMessageRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('modify', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Sends the specified message to the recipients in the `To`, `Cc`, and `Bcc` + * headers. For example usage, see [Sending + * email](https://developers.google.com/gmail/api/guides/sending). + * (messages.send) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param Message $postBody + * @param array $optParams Optional parameters. + * @return Message + */ + public function send($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Message $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('send', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Moves the specified message to the trash. (messages.trash) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the message to Trash. + * @param array $optParams Optional parameters. + * @return Message + */ + public function trash($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('trash', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } + /** + * Removes the specified message from the trash. (messages.untrash) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the message to remove from Trash. + * @param array $optParams Optional parameters. + * @return Message + */ + public function untrash($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('untrash', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Message::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersMessages::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersMessages'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessagesAttachments.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessagesAttachments.php new file mode 100644 index 000000000..2e1ada3a7 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersMessagesAttachments.php @@ -0,0 +1,49 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $attachments = $gmailService->users_messages_attachments; + * + */ +class UsersMessagesAttachments extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Gets the specified message attachment. (attachments.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $messageId The ID of the message containing the attachment. + * @param string $id The ID of the attachment. + * @param array $optParams Optional parameters. + * @return MessagePartBody + */ + public function get($userId, $messageId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'messageId' => $messageId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\MessagePartBody::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersMessagesAttachments::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersMessagesAttachments'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettings.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettings.php new file mode 100644 index 000000000..04bfd2359 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettings.php @@ -0,0 +1,191 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $settings = $gmailService->users_settings; + * + */ +class UsersSettings extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Gets the auto-forwarding setting for the specified account. + * (settings.getAutoForwarding) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return AutoForwarding + */ + public function getAutoForwarding($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getAutoForwarding', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\AutoForwarding::class); + } + /** + * Gets IMAP settings. (settings.getImap) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ImapSettings + */ + public function getImap($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getImap', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ImapSettings::class); + } + /** + * Gets language settings. (settings.getLanguage) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return LanguageSettings + */ + public function getLanguage($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getLanguage', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\LanguageSettings::class); + } + /** + * Gets POP settings. (settings.getPop) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return PopSettings + */ + public function getPop($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getPop', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\PopSettings::class); + } + /** + * Gets vacation responder settings. (settings.getVacation) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return VacationSettings + */ + public function getVacation($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('getVacation', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\VacationSettings::class); + } + /** + * Updates the auto-forwarding setting for the specified account. A verified + * forwarding address must be specified when auto-forwarding is enabled. This + * method is only available to service account clients that have been delegated + * domain-wide authority. (settings.updateAutoForwarding) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param AutoForwarding $postBody + * @param array $optParams Optional parameters. + * @return AutoForwarding + */ + public function updateAutoForwarding($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\AutoForwarding $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateAutoForwarding', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\AutoForwarding::class); + } + /** + * Updates IMAP settings. (settings.updateImap) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param ImapSettings $postBody + * @param array $optParams Optional parameters. + * @return ImapSettings + */ + public function updateImap($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\ImapSettings $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateImap', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ImapSettings::class); + } + /** + * Updates language settings. If successful, the return object contains the + * `displayLanguage` that was saved for the user, which may differ from the + * value passed into the request. This is because the requested + * `displayLanguage` may not be directly supported by Gmail but have a close + * variant that is, and so the variant may be chosen and saved instead. + * (settings.updateLanguage) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param LanguageSettings $postBody + * @param array $optParams Optional parameters. + * @return LanguageSettings + */ + public function updateLanguage($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\LanguageSettings $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateLanguage', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\LanguageSettings::class); + } + /** + * Updates POP settings. (settings.updatePop) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param PopSettings $postBody + * @param array $optParams Optional parameters. + * @return PopSettings + */ + public function updatePop($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\PopSettings $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updatePop', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\PopSettings::class); + } + /** + * Updates vacation responder settings. (settings.updateVacation) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param VacationSettings $postBody + * @param array $optParams Optional parameters. + * @return VacationSettings + */ + public function updateVacation($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\VacationSettings $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('updateVacation', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\VacationSettings::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettings::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettings'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCse.php new file mode 100644 index 000000000..03074020d --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCse.php @@ -0,0 +1,32 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $cse = $gmailService->users_settings_cse; + * + */ +class UsersSettingsCse extends \WPMailSMTP\Vendor\Google\Service\Resource +{ +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsCse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsCse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseIdentities.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseIdentities.php new file mode 100644 index 000000000..0f7b1069f --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseIdentities.php @@ -0,0 +1,127 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $identities = $gmailService->users_settings_cse_identities; + * + */ +class UsersSettingsCseIdentities extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates and configures a client-side encryption identity that's authorized to + * send mail from the user account. Google publishes the S/MIME certificate to a + * shared domain-wide directory so that people within a Google Workspace + * organization can encrypt and send mail to the identity. (identities.create) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param CseIdentity $postBody + * @param array $optParams Optional parameters. + * @return CseIdentity + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity::class); + } + /** + * Deletes a client-side encryption identity. The authenticated user can no + * longer use the identity to send encrypted messages. You cannot restore the + * identity after you delete it. Instead, use the CreateCseIdentity method to + * create another identity with the same configuration. (identities.delete) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $cseEmailAddress The primary email address associated with the + * client-side encryption identity configuration that's removed. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $cseEmailAddress, $optParams = []) + { + $params = ['userId' => $userId, 'cseEmailAddress' => $cseEmailAddress]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Retrieves a client-side encryption identity configuration. (identities.get) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $cseEmailAddress The primary email address associated with the + * client-side encryption identity configuration that's retrieved. + * @param array $optParams Optional parameters. + * @return CseIdentity + */ + public function get($userId, $cseEmailAddress, $optParams = []) + { + $params = ['userId' => $userId, 'cseEmailAddress' => $cseEmailAddress]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity::class); + } + /** + * Lists the client-side encrypted identities for an authenticated user. + * (identities.listUsersSettingsCseIdentities) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The number of identities to return. If not provided, + * the page size will default to 20 entries. + * @opt_param string pageToken Pagination token indicating which page of + * identities to return. If the token is not supplied, then the API will return + * the first page of results. + * @return ListCseIdentitiesResponse + */ + public function listUsersSettingsCseIdentities($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListCseIdentitiesResponse::class); + } + /** + * Associates a different key pair with an existing client-side encryption + * identity. The updated key pair must validate against Google's [S/MIME + * certificate profiles](https://support.google.com/a/answer/7300887). + * (identities.patch) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $emailAddress The email address of the client-side encryption + * identity to update. + * @param CseIdentity $postBody + * @param array $optParams Optional parameters. + * @return CseIdentity + */ + public function patch($userId, $emailAddress, \WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'emailAddress' => $emailAddress, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseIdentity::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsCseIdentities::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsCseIdentities'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseKeypairs.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseKeypairs.php new file mode 100644 index 000000000..e5acfa243 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsCseKeypairs.php @@ -0,0 +1,147 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $keypairs = $gmailService->users_settings_cse_keypairs; + * + */ +class UsersSettingsCseKeypairs extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates and uploads a client-side encryption S/MIME public key certificate + * chain and private key metadata for the authenticated user. (keypairs.create) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param CseKeyPair $postBody + * @param array $optParams Optional parameters. + * @return CseKeyPair + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair::class); + } + /** + * Turns off a client-side encryption key pair. The authenticated user can no + * longer use the key pair to decrypt incoming CSE message texts or sign + * outgoing CSE mail. To regain access, use the EnableCseKeyPair to turn on the + * key pair. After 30 days, you can permanently delete the key pair by using the + * ObliterateCseKeyPair method. (keypairs.disable) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $keyPairId The identifier of the key pair to turn off. + * @param DisableCseKeyPairRequest $postBody + * @param array $optParams Optional parameters. + * @return CseKeyPair + */ + public function disable($userId, $keyPairId, \WPMailSMTP\Vendor\Google\Service\Gmail\DisableCseKeyPairRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'keyPairId' => $keyPairId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('disable', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair::class); + } + /** + * Turns on a client-side encryption key pair that was turned off. The key pair + * becomes active again for any associated client-side encryption identities. + * (keypairs.enable) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $keyPairId The identifier of the key pair to turn on. + * @param EnableCseKeyPairRequest $postBody + * @param array $optParams Optional parameters. + * @return CseKeyPair + */ + public function enable($userId, $keyPairId, \WPMailSMTP\Vendor\Google\Service\Gmail\EnableCseKeyPairRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'keyPairId' => $keyPairId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('enable', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair::class); + } + /** + * Retrieves an existing client-side encryption key pair. (keypairs.get) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $keyPairId The identifier of the key pair to retrieve. + * @param array $optParams Optional parameters. + * @return CseKeyPair + */ + public function get($userId, $keyPairId, $optParams = []) + { + $params = ['userId' => $userId, 'keyPairId' => $keyPairId]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\CseKeyPair::class); + } + /** + * Lists client-side encryption key pairs for an authenticated user. + * (keypairs.listUsersSettingsCseKeypairs) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param array $optParams Optional parameters. + * + * @opt_param int pageSize The number of key pairs to return. If not provided, + * the page size will default to 20 entries. + * @opt_param string pageToken Pagination token indicating which page of key + * pairs to return. If the token is not supplied, then the API will return the + * first page of results. + * @return ListCseKeyPairsResponse + */ + public function listUsersSettingsCseKeypairs($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListCseKeyPairsResponse::class); + } + /** + * Deletes a client-side encryption key pair permanently and immediately. You + * can only permanently delete key pairs that have been turned off for more than + * 30 days. To turn off a key pair, use the DisableCseKeyPair method. Gmail + * can't restore or decrypt any messages that were encrypted by an obliterated + * key. Authenticated users and Google Workspace administrators lose access to + * reading the encrypted messages. (keypairs.obliterate) + * + * @param string $userId The requester's primary email address. To indicate the + * authenticated user, you can use the special value `me`. + * @param string $keyPairId The identifier of the key pair to obliterate. + * @param ObliterateCseKeyPairRequest $postBody + * @param array $optParams Optional parameters. + */ + public function obliterate($userId, $keyPairId, \WPMailSMTP\Vendor\Google\Service\Gmail\ObliterateCseKeyPairRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'keyPairId' => $keyPairId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('obliterate', [$params]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsCseKeypairs::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsCseKeypairs'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsDelegates.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsDelegates.php new file mode 100644 index 000000000..c47dba13a --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsDelegates.php @@ -0,0 +1,113 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $delegates = $gmailService->users_settings_delegates; + * + */ +class UsersSettingsDelegates extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Adds a delegate with its verification status set directly to `accepted`, + * without sending any verification email. The delegate user must be a member of + * the same Google Workspace organization as the delegator user. Gmail imposes + * limitations on the number of delegates and delegators each user in a Google + * Workspace organization can have. These limits depend on your organization, + * but in general each user can have up to 25 delegates and up to 10 delegators. + * Note that a delegate user must be referred to by their primary email address, + * and not an email alias. Also note that when a new delegate is created, there + * may be up to a one minute delay before the new delegate is available for use. + * This method is only available to service account clients that have been + * delegated domain-wide authority. (delegates.create) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param Delegate $postBody + * @param array $optParams Optional parameters. + * @return Delegate + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Delegate $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Delegate::class); + } + /** + * Removes the specified delegate (which can be of any verification status), and + * revokes any verification that may have been required for using it. Note that + * a delegate user must be referred to by their primary email address, and not + * an email alias. This method is only available to service account clients that + * have been delegated domain-wide authority. (delegates.delete) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $delegateEmail The email address of the user to be removed as a + * delegate. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $delegateEmail, $optParams = []) + { + $params = ['userId' => $userId, 'delegateEmail' => $delegateEmail]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified delegate. Note that a delegate user must be referred to by + * their primary email address, and not an email alias. This method is only + * available to service account clients that have been delegated domain-wide + * authority. (delegates.get) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $delegateEmail The email address of the user whose delegate + * relationship is to be retrieved. + * @param array $optParams Optional parameters. + * @return Delegate + */ + public function get($userId, $delegateEmail, $optParams = []) + { + $params = ['userId' => $userId, 'delegateEmail' => $delegateEmail]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Delegate::class); + } + /** + * Lists the delegates for the specified account. This method is only available + * to service account clients that have been delegated domain-wide authority. + * (delegates.listUsersSettingsDelegates) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ListDelegatesResponse + */ + public function listUsersSettingsDelegates($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListDelegatesResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsDelegates::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsDelegates'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsFilters.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsFilters.php new file mode 100644 index 000000000..64d76c41d --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsFilters.php @@ -0,0 +1,93 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $filters = $gmailService->users_settings_filters; + * + */ +class UsersSettingsFilters extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates a filter. Note: you can only create a maximum of 1,000 filters. + * (filters.create) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param Filter $postBody + * @param array $optParams Optional parameters. + * @return Filter + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\Filter $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Filter::class); + } + /** + * Immediately and permanently deletes the specified filter. (filters.delete) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $id The ID of the filter to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets a filter. (filters.get) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $id The ID of the filter to be fetched. + * @param array $optParams Optional parameters. + * @return Filter + */ + public function get($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Filter::class); + } + /** + * Lists the message filters of a Gmail user. (filters.listUsersSettingsFilters) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ListFiltersResponse + */ + public function listUsersSettingsFilters($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListFiltersResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsFilters::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsFilters'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsForwardingAddresses.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsForwardingAddresses.php new file mode 100644 index 000000000..a52c6cfe0 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsForwardingAddresses.php @@ -0,0 +1,101 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $forwardingAddresses = $gmailService->users_settings_forwardingAddresses; + * + */ +class UsersSettingsForwardingAddresses extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates a forwarding address. If ownership verification is required, a + * message will be sent to the recipient and the resource's verification status + * will be set to `pending`; otherwise, the resource will be created with + * verification status set to `accepted`. This method is only available to + * service account clients that have been delegated domain-wide authority. + * (forwardingAddresses.create) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param ForwardingAddress $postBody + * @param array $optParams Optional parameters. + * @return ForwardingAddress + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\ForwardingAddress $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ForwardingAddress::class); + } + /** + * Deletes the specified forwarding address and revokes any verification that + * may have been required. This method is only available to service account + * clients that have been delegated domain-wide authority. + * (forwardingAddresses.delete) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $forwardingEmail The forwarding address to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $forwardingEmail, $optParams = []) + { + $params = ['userId' => $userId, 'forwardingEmail' => $forwardingEmail]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified forwarding address. (forwardingAddresses.get) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $forwardingEmail The forwarding address to be retrieved. + * @param array $optParams Optional parameters. + * @return ForwardingAddress + */ + public function get($userId, $forwardingEmail, $optParams = []) + { + $params = ['userId' => $userId, 'forwardingEmail' => $forwardingEmail]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ForwardingAddress::class); + } + /** + * Lists the forwarding addresses for the specified account. + * (forwardingAddresses.listUsersSettingsForwardingAddresses) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ListForwardingAddressesResponse + */ + public function listUsersSettingsForwardingAddresses($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListForwardingAddressesResponse::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsForwardingAddresses::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsForwardingAddresses'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAs.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAs.php new file mode 100644 index 000000000..9d7d55262 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAs.php @@ -0,0 +1,157 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $sendAs = $gmailService->users_settings_sendAs; + * + */ +class UsersSettingsSendAs extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Creates a custom "from" send-as alias. If an SMTP MSA is specified, Gmail + * will attempt to connect to the SMTP service to validate the configuration + * before creating the alias. If ownership verification is required for the + * alias, a message will be sent to the email address and the resource's + * verification status will be set to `pending`; otherwise, the resource will be + * created with verification status set to `accepted`. If a signature is + * provided, Gmail will sanitize the HTML before saving it with the alias. This + * method is only available to service account clients that have been delegated + * domain-wide authority. (sendAs.create) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param SendAs $postBody + * @param array $optParams Optional parameters. + * @return SendAs + */ + public function create($userId, \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('create', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs::class); + } + /** + * Deletes the specified send-as alias. Revokes any verification that may have + * been required for using it. This method is only available to service account + * clients that have been delegated domain-wide authority. (sendAs.delete) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The send-as alias to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $sendAsEmail, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified send-as alias. Fails with an HTTP 404 error if the + * specified address is not a member of the collection. (sendAs.get) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The send-as alias to be retrieved. + * @param array $optParams Optional parameters. + * @return SendAs + */ + public function get($userId, $sendAsEmail, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs::class); + } + /** + * Lists the send-as aliases for the specified account. The result includes the + * primary send-as address associated with the account as well as any custom + * "from" aliases. (sendAs.listUsersSettingsSendAs) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return ListSendAsResponse + */ + public function listUsersSettingsSendAs($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListSendAsResponse::class); + } + /** + * Patch the specified send-as alias. (sendAs.patch) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The send-as alias to be updated. + * @param SendAs $postBody + * @param array $optParams Optional parameters. + * @return SendAs + */ + public function patch($userId, $sendAsEmail, \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('patch', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs::class); + } + /** + * Updates a send-as alias. If a signature is provided, Gmail will sanitize the + * HTML before saving it with the alias. Addresses other than the primary + * address for the account can only be updated by service account clients that + * have been delegated domain-wide authority. (sendAs.update) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The send-as alias to be updated. + * @param SendAs $postBody + * @param array $optParams Optional parameters. + * @return SendAs + */ + public function update($userId, $sendAsEmail, \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('update', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SendAs::class); + } + /** + * Sends a verification email to the specified send-as alias address. The + * verification status must be `pending`. This method is only available to + * service account clients that have been delegated domain-wide authority. + * (sendAs.verify) + * + * @param string $userId User's email address. The special value "me" can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The send-as alias to be verified. + * @param array $optParams Optional parameters. + */ + public function verify($userId, $sendAsEmail, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail]; + $params = \array_merge($params, $optParams); + return $this->call('verify', [$params]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsSendAs::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsSendAs'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAsSmimeInfo.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAsSmimeInfo.php new file mode 100644 index 000000000..ed7298ecd --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersSettingsSendAsSmimeInfo.php @@ -0,0 +1,121 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $smimeInfo = $gmailService->users_settings_sendAs_smimeInfo; + * + */ +class UsersSettingsSendAsSmimeInfo extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Deletes the specified S/MIME config for the specified send-as alias. + * (smimeInfo.delete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The email address that appears in the "From:" + * header for mail sent using this alias. + * @param string $id The immutable ID for the SmimeInfo. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $sendAsEmail, $id, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified S/MIME config for the specified send-as alias. + * (smimeInfo.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The email address that appears in the "From:" + * header for mail sent using this alias. + * @param string $id The immutable ID for the SmimeInfo. + * @param array $optParams Optional parameters. + * @return SmimeInfo + */ + public function get($userId, $sendAsEmail, $id, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SmimeInfo::class); + } + /** + * Insert (upload) the given S/MIME config for the specified send-as alias. Note + * that pkcs12 format is required for the key. (smimeInfo.insert) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The email address that appears in the "From:" + * header for mail sent using this alias. + * @param SmimeInfo $postBody + * @param array $optParams Optional parameters. + * @return SmimeInfo + */ + public function insert($userId, $sendAsEmail, \WPMailSMTP\Vendor\Google\Service\Gmail\SmimeInfo $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('insert', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\SmimeInfo::class); + } + /** + * Lists S/MIME configs for the specified send-as alias. + * (smimeInfo.listUsersSettingsSendAsSmimeInfo) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The email address that appears in the "From:" + * header for mail sent using this alias. + * @param array $optParams Optional parameters. + * @return ListSmimeInfoResponse + */ + public function listUsersSettingsSendAsSmimeInfo($userId, $sendAsEmail, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListSmimeInfoResponse::class); + } + /** + * Sets the default S/MIME config for the specified send-as alias. + * (smimeInfo.setDefault) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $sendAsEmail The email address that appears in the "From:" + * header for mail sent using this alias. + * @param string $id The immutable ID for the SmimeInfo. + * @param array $optParams Optional parameters. + */ + public function setDefault($userId, $sendAsEmail, $id, $optParams = []) + { + $params = ['userId' => $userId, 'sendAsEmail' => $sendAsEmail, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('setDefault', [$params]); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersSettingsSendAsSmimeInfo::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersSettingsSendAsSmimeInfo'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersThreads.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersThreads.php new file mode 100644 index 000000000..4b1dc9cb2 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Resource/UsersThreads.php @@ -0,0 +1,146 @@ + + * $gmailService = new Google\Service\Gmail(...); + * $threads = $gmailService->users_threads; + * + */ +class UsersThreads extends \WPMailSMTP\Vendor\Google\Service\Resource +{ + /** + * Immediately and permanently deletes the specified thread. Any messages that + * belong to the thread are also deleted. This operation cannot be undone. + * Prefer `threads.trash` instead. (threads.delete) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id ID of the Thread to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('delete', [$params]); + } + /** + * Gets the specified thread. (threads.get) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the thread to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string format The format to return the messages in. + * @opt_param string metadataHeaders When given and format is METADATA, only + * include headers specified. + * @return Thread + */ + public function get($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('get', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Thread::class); + } + /** + * Lists the threads in the user's mailbox. (threads.listUsersThreads) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSpamTrash Include threads from `SPAM` and `TRASH` in + * the results. + * @opt_param string labelIds Only return threads with labels that match all of + * the specified label IDs. + * @opt_param string maxResults Maximum number of threads to return. This field + * defaults to 100. The maximum allowed value for this field is 500. + * @opt_param string pageToken Page token to retrieve a specific page of results + * in the list. + * @opt_param string q Only return threads matching the specified query. + * Supports the same query format as the Gmail search box. For example, + * `"from:someuser@example.com rfc822msgid: is:unread"`. Parameter cannot be + * used when accessing the api using the gmail.metadata scope. + * @return ListThreadsResponse + */ + public function listUsersThreads($userId, $optParams = []) + { + $params = ['userId' => $userId]; + $params = \array_merge($params, $optParams); + return $this->call('list', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\ListThreadsResponse::class); + } + /** + * Modifies the labels applied to the thread. This applies to all messages in + * the thread. (threads.modify) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the thread to modify. + * @param ModifyThreadRequest $postBody + * @param array $optParams Optional parameters. + * @return Thread + */ + public function modify($userId, $id, \WPMailSMTP\Vendor\Google\Service\Gmail\ModifyThreadRequest $postBody, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id, 'postBody' => $postBody]; + $params = \array_merge($params, $optParams); + return $this->call('modify', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Thread::class); + } + /** + * Moves the specified thread to the trash. Any messages that belong to the + * thread are also moved to the trash. (threads.trash) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the thread to Trash. + * @param array $optParams Optional parameters. + * @return Thread + */ + public function trash($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('trash', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Thread::class); + } + /** + * Removes the specified thread from the trash. Any messages that belong to the + * thread are also removed from the trash. (threads.untrash) + * + * @param string $userId The user's email address. The special value `me` can be + * used to indicate the authenticated user. + * @param string $id The ID of the thread to remove from Trash. + * @param array $optParams Optional parameters. + * @return Thread + */ + public function untrash($userId, $id, $optParams = []) + { + $params = ['userId' => $userId, 'id' => $id]; + $params = \array_merge($params, $optParams); + return $this->call('untrash', [$params], \WPMailSMTP\Vendor\Google\Service\Gmail\Thread::class); + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Resource\UsersThreads::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Resource_UsersThreads'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SendAs.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SendAs.php new file mode 100644 index 000000000..8d45e858e --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SendAs.php @@ -0,0 +1,184 @@ +displayName = $displayName; + } + /** + * @return string + */ + public function getDisplayName() + { + return $this->displayName; + } + /** + * @param bool + */ + public function setIsDefault($isDefault) + { + $this->isDefault = $isDefault; + } + /** + * @return bool + */ + public function getIsDefault() + { + return $this->isDefault; + } + /** + * @param bool + */ + public function setIsPrimary($isPrimary) + { + $this->isPrimary = $isPrimary; + } + /** + * @return bool + */ + public function getIsPrimary() + { + return $this->isPrimary; + } + /** + * @param string + */ + public function setReplyToAddress($replyToAddress) + { + $this->replyToAddress = $replyToAddress; + } + /** + * @return string + */ + public function getReplyToAddress() + { + return $this->replyToAddress; + } + /** + * @param string + */ + public function setSendAsEmail($sendAsEmail) + { + $this->sendAsEmail = $sendAsEmail; + } + /** + * @return string + */ + public function getSendAsEmail() + { + return $this->sendAsEmail; + } + /** + * @param string + */ + public function setSignature($signature) + { + $this->signature = $signature; + } + /** + * @return string + */ + public function getSignature() + { + return $this->signature; + } + /** + * @param SmtpMsa + */ + public function setSmtpMsa(\WPMailSMTP\Vendor\Google\Service\Gmail\SmtpMsa $smtpMsa) + { + $this->smtpMsa = $smtpMsa; + } + /** + * @return SmtpMsa + */ + public function getSmtpMsa() + { + return $this->smtpMsa; + } + /** + * @param bool + */ + public function setTreatAsAlias($treatAsAlias) + { + $this->treatAsAlias = $treatAsAlias; + } + /** + * @return bool + */ + public function getTreatAsAlias() + { + return $this->treatAsAlias; + } + /** + * @param string + */ + public function setVerificationStatus($verificationStatus) + { + $this->verificationStatus = $verificationStatus; + } + /** + * @return string + */ + public function getVerificationStatus() + { + return $this->verificationStatus; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\SendAs::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_SendAs'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmimeInfo.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmimeInfo.php new file mode 100644 index 000000000..c284f2477 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmimeInfo.php @@ -0,0 +1,150 @@ +encryptedKeyPassword = $encryptedKeyPassword; + } + /** + * @return string + */ + public function getEncryptedKeyPassword() + { + return $this->encryptedKeyPassword; + } + /** + * @param string + */ + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + /** + * @return string + */ + public function getExpiration() + { + return $this->expiration; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param bool + */ + public function setIsDefault($isDefault) + { + $this->isDefault = $isDefault; + } + /** + * @return bool + */ + public function getIsDefault() + { + return $this->isDefault; + } + /** + * @param string + */ + public function setIssuerCn($issuerCn) + { + $this->issuerCn = $issuerCn; + } + /** + * @return string + */ + public function getIssuerCn() + { + return $this->issuerCn; + } + /** + * @param string + */ + public function setPem($pem) + { + $this->pem = $pem; + } + /** + * @return string + */ + public function getPem() + { + return $this->pem; + } + /** + * @param string + */ + public function setPkcs12($pkcs12) + { + $this->pkcs12 = $pkcs12; + } + /** + * @return string + */ + public function getPkcs12() + { + return $this->pkcs12; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\SmimeInfo::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_SmimeInfo'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmtpMsa.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmtpMsa.php new file mode 100644 index 000000000..218715fc1 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/SmtpMsa.php @@ -0,0 +1,114 @@ +host = $host; + } + /** + * @return string + */ + public function getHost() + { + return $this->host; + } + /** + * @param string + */ + public function setPassword($password) + { + $this->password = $password; + } + /** + * @return string + */ + public function getPassword() + { + return $this->password; + } + /** + * @param int + */ + public function setPort($port) + { + $this->port = $port; + } + /** + * @return int + */ + public function getPort() + { + return $this->port; + } + /** + * @param string + */ + public function setSecurityMode($securityMode) + { + $this->securityMode = $securityMode; + } + /** + * @return string + */ + public function getSecurityMode() + { + return $this->securityMode; + } + /** + * @param string + */ + public function setUsername($username) + { + $this->username = $username; + } + /** + * @return string + */ + public function getUsername() + { + return $this->username; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\SmtpMsa::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_SmtpMsa'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Thread.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Thread.php new file mode 100644 index 000000000..591557dfa --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/Thread.php @@ -0,0 +1,95 @@ +historyId = $historyId; + } + /** + * @return string + */ + public function getHistoryId() + { + return $this->historyId; + } + /** + * @param string + */ + public function setId($id) + { + $this->id = $id; + } + /** + * @return string + */ + public function getId() + { + return $this->id; + } + /** + * @param Message[] + */ + public function setMessages($messages) + { + $this->messages = $messages; + } + /** + * @return Message[] + */ + public function getMessages() + { + return $this->messages; + } + /** + * @param string + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + /** + * @return string + */ + public function getSnippet() + { + return $this->snippet; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\Thread::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_Thread'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/VacationSettings.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/VacationSettings.php new file mode 100644 index 000000000..7bd61cf31 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/VacationSettings.php @@ -0,0 +1,168 @@ +enableAutoReply = $enableAutoReply; + } + /** + * @return bool + */ + public function getEnableAutoReply() + { + return $this->enableAutoReply; + } + /** + * @param string + */ + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + /** + * @return string + */ + public function getEndTime() + { + return $this->endTime; + } + /** + * @param string + */ + public function setResponseBodyHtml($responseBodyHtml) + { + $this->responseBodyHtml = $responseBodyHtml; + } + /** + * @return string + */ + public function getResponseBodyHtml() + { + return $this->responseBodyHtml; + } + /** + * @param string + */ + public function setResponseBodyPlainText($responseBodyPlainText) + { + $this->responseBodyPlainText = $responseBodyPlainText; + } + /** + * @return string + */ + public function getResponseBodyPlainText() + { + return $this->responseBodyPlainText; + } + /** + * @param string + */ + public function setResponseSubject($responseSubject) + { + $this->responseSubject = $responseSubject; + } + /** + * @return string + */ + public function getResponseSubject() + { + return $this->responseSubject; + } + /** + * @param bool + */ + public function setRestrictToContacts($restrictToContacts) + { + $this->restrictToContacts = $restrictToContacts; + } + /** + * @return bool + */ + public function getRestrictToContacts() + { + return $this->restrictToContacts; + } + /** + * @param bool + */ + public function setRestrictToDomain($restrictToDomain) + { + $this->restrictToDomain = $restrictToDomain; + } + /** + * @return bool + */ + public function getRestrictToDomain() + { + return $this->restrictToDomain; + } + /** + * @param string + */ + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + /** + * @return string + */ + public function getStartTime() + { + return $this->startTime; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\VacationSettings::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_VacationSettings'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchRequest.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchRequest.php new file mode 100644 index 000000000..90cfba75e --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchRequest.php @@ -0,0 +1,79 @@ +labelFilterAction = $labelFilterAction; + } + /** + * @return string + */ + public function getLabelFilterAction() + { + return $this->labelFilterAction; + } + /** + * @param string[] + */ + public function setLabelIds($labelIds) + { + $this->labelIds = $labelIds; + } + /** + * @return string[] + */ + public function getLabelIds() + { + return $this->labelIds; + } + /** + * @param string + */ + public function setTopicName($topicName) + { + $this->topicName = $topicName; + } + /** + * @return string + */ + public function getTopicName() + { + return $this->topicName; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\WatchRequest::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_WatchRequest'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchResponse.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchResponse.php new file mode 100644 index 000000000..b0508c47d --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient-services/src/Gmail/WatchResponse.php @@ -0,0 +1,60 @@ +expiration = $expiration; + } + /** + * @return string + */ + public function getExpiration() + { + return $this->expiration; + } + /** + * @param string + */ + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + /** + * @return string + */ + public function getHistoryId() + { + return $this->historyId; + } +} +// Adding a class alias for backwards compatibility with the previous class name. +\class_alias(\WPMailSMTP\Vendor\Google\Service\Gmail\WatchResponse::class, 'WPMailSMTP\\Vendor\\Google_Service_Gmail_WatchResponse'); diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/LICENSE b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/LICENSE new file mode 100644 index 000000000..a148ba564 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/LICENSE @@ -0,0 +1,203 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Revoke.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Revoke.php new file mode 100644 index 000000000..3e002b22b --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Revoke.php @@ -0,0 +1,65 @@ +http = $http; + } + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * + * @param string|array $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token) + { + if (\is_array($token)) { + if (isset($token['refresh_token'])) { + $token = $token['refresh_token']; + } else { + $token = $token['access_token']; + } + } + $body = \WPMailSMTP\Vendor\GuzzleHttp\Psr7\Utils::streamFor(\http_build_query(['token' => $token])); + $request = new \WPMailSMTP\Vendor\GuzzleHttp\Psr7\Request('POST', \WPMailSMTP\Vendor\Google\Client::OAUTH2_REVOKE_URI, ['Cache-Control' => 'no-store', 'Content-Type' => 'application/x-www-form-urlencoded'], $body); + $httpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->http); + $response = $httpHandler($request); + return $response->getStatusCode() == 200; + } +} diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Verify.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Verify.php new file mode 100644 index 000000000..e1a37fb75 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AccessToken/Verify.php @@ -0,0 +1,261 @@ +http = $http; + $this->cache = $cache; + $this->jwt = $jwt ?: $this->getJwtService(); + } + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param string $idToken the ID token in JWT format + * @param string $audience Optional. The audience to verify against JWt "aud" + * @return array|false the token payload, if successful + */ + public function verifyIdToken($idToken, $audience = null) + { + if (empty($idToken)) { + throw new \LogicException('id_token cannot be null'); + } + // set phpseclib constants if applicable + $this->setPhpsecConstants(); + // Check signature + $certs = $this->getFederatedSignOnCerts(); + foreach ($certs as $cert) { + try { + $args = [$idToken]; + $publicKey = $this->getPublicKey($cert); + if (\class_exists(\WPMailSMTP\Vendor\Firebase\JWT\Key::class)) { + $args[] = new \WPMailSMTP\Vendor\Firebase\JWT\Key($publicKey, 'RS256'); + } else { + $args[] = $publicKey; + $args[] = ['RS256']; + } + $payload = \call_user_func_array([$this->jwt, 'decode'], $args); + if (\property_exists($payload, 'aud')) { + if ($audience && $payload->aud != $audience) { + return \false; + } + } + // support HTTP and HTTPS issuers + // @see https://developers.google.com/identity/sign-in/web/backend-auth + $issuers = [self::OAUTH2_ISSUER, self::OAUTH2_ISSUER_HTTPS]; + if (!isset($payload->iss) || !\in_array($payload->iss, $issuers)) { + return \false; + } + return (array) $payload; + } catch (\WPMailSMTP\Vendor\ExpiredException $e) { + // @phpstan-ignore-line + return \false; + } catch (\WPMailSMTP\Vendor\Firebase\JWT\ExpiredException $e) { + return \false; + } catch (\WPMailSMTP\Vendor\Firebase\JWT\SignatureInvalidException $e) { + // continue + } catch (\DomainException $e) { + // continue + } + } + return \false; + } + private function getCache() + { + return $this->cache; + } + /** + * Retrieve and cache a certificates file. + * + * @param string $url location + * @throws \Google\Exception + * @return array certificates + */ + private function retrieveCertsFromLocation($url) + { + // If we're retrieving a local file, just grab it. + if (0 !== \strpos($url, 'http')) { + if (!($file = \file_get_contents($url))) { + throw new \WPMailSMTP\Vendor\Google\Exception("Failed to retrieve verification certificates: '" . $url . "'."); + } + return \json_decode($file, \true); + } + // @phpstan-ignore-next-line + $response = $this->http->get($url); + if ($response->getStatusCode() == 200) { + return \json_decode((string) $response->getBody(), \true); + } + throw new \WPMailSMTP\Vendor\Google\Exception(\sprintf('Failed to retrieve verification certificates: "%s".', $response->getBody()->getContents()), $response->getStatusCode()); + } + // Gets federated sign-on certificates to use for verifying identity tokens. + // Returns certs as array structure, where keys are key ids, and values + // are PEM encoded certificates. + private function getFederatedSignOnCerts() + { + $certs = null; + if ($cache = $this->getCache()) { + $cacheItem = $cache->getItem('federated_signon_certs_v3'); + $certs = $cacheItem->get(); + } + if (!$certs) { + $certs = $this->retrieveCertsFromLocation(self::FEDERATED_SIGNON_CERT_URL); + if ($cache) { + $cacheItem->expiresAt(new \DateTime('+1 hour')); + $cacheItem->set($certs); + $cache->save($cacheItem); + } + } + if (!isset($certs['keys'])) { + throw new \InvalidArgumentException('federated sign-on certs expects "keys" to be set'); + } + return $certs['keys']; + } + private function getJwtService() + { + $jwtClass = 'JWT'; + if (\class_exists('WPMailSMTP\\Vendor\\Firebase\\JWT\\JWT')) { + $jwtClass = 'WPMailSMTP\\Vendor\\Firebase\\JWT\\JWT'; + } + if (\property_exists($jwtClass, 'leeway') && $jwtClass::$leeway < 1) { + // Ensures JWT leeway is at least 1 + // @see https://github.com/google/google-api-php-client/issues/827 + $jwtClass::$leeway = 1; + } + // @phpstan-ignore-next-line + return new $jwtClass(); + } + private function getPublicKey($cert) + { + $bigIntClass = $this->getBigIntClass(); + $modulus = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['n']), 256); + $exponent = new $bigIntClass($this->jwt->urlsafeB64Decode($cert['e']), 256); + $component = ['n' => $modulus, 'e' => $exponent]; + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib3\\Crypt\\RSA\\PublicKey')) { + /** @var PublicKey $loader */ + $loader = \WPMailSMTP\Vendor\phpseclib3\Crypt\PublicKeyLoader::load($component); + return $loader->toString('PKCS8'); + } + $rsaClass = $this->getRsaClass(); + $rsa = new $rsaClass(); + $rsa->loadKey($component); + return $rsa->getPublicKey(); + } + private function getRsaClass() + { + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib3\\Crypt\\RSA')) { + return 'WPMailSMTP\\Vendor\\phpseclib3\\Crypt\\RSA'; + } + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib\\Crypt\\RSA')) { + return 'WPMailSMTP\\Vendor\\phpseclib\\Crypt\\RSA'; + } + return 'Crypt_RSA'; + } + private function getBigIntClass() + { + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib3\\Math\\BigInteger')) { + return 'WPMailSMTP\\Vendor\\phpseclib3\\Math\\BigInteger'; + } + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib\\Math\\BigInteger')) { + return 'WPMailSMTP\\Vendor\\phpseclib\\Math\\BigInteger'; + } + return 'Math_BigInteger'; + } + private function getOpenSslConstant() + { + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib3\\Crypt\\AES')) { + return 'phpseclib3\\Crypt\\AES::ENGINE_OPENSSL'; + } + if (\class_exists('WPMailSMTP\\Vendor\\phpseclib\\Crypt\\RSA')) { + return 'phpseclib\\Crypt\\RSA::MODE_OPENSSL'; + } + if (\class_exists('WPMailSMTP\\Vendor\\Crypt_RSA')) { + return 'CRYPT_RSA_MODE_OPENSSL'; + } + throw new \Exception('Cannot find RSA class'); + } + /** + * phpseclib calls "phpinfo" by default, which requires special + * whitelisting in the AppEngine VM environment. This function + * sets constants to bypass the need for phpseclib to check phpinfo + * + * @see phpseclib/Math/BigInteger + * @see https://github.com/GoogleCloudPlatform/getting-started-php/issues/85 + */ + private function setPhpsecConstants() + { + if (\filter_var(\getenv('GAE_VM'), \FILTER_VALIDATE_BOOLEAN)) { + if (!\defined('WPMailSMTP\\Vendor\\MATH_BIGINTEGER_OPENSSL_ENABLED')) { + \define('WPMailSMTP\\Vendor\\MATH_BIGINTEGER_OPENSSL_ENABLED', \true); + } + if (!\defined('WPMailSMTP\\Vendor\\CRYPT_RSA_MODE')) { + \define('WPMailSMTP\\Vendor\\CRYPT_RSA_MODE', \constant($this->getOpenSslConstant())); + } + } + } +} diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/AuthHandlerFactory.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/AuthHandlerFactory.php new file mode 100644 index 000000000..7192ddcd9 --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/AuthHandlerFactory.php @@ -0,0 +1,49 @@ +cache = $cache; + $this->cacheConfig = $cacheConfig; + } + public function attachCredentials(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, \WPMailSMTP\Vendor\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null) + { + // use the provided cache + if ($this->cache) { + $credentials = new \WPMailSMTP\Vendor\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache); + } + return $this->attachCredentialsCache($http, $credentials, $tokenCallback); + } + public function attachCredentialsCache(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, \WPMailSMTP\Vendor\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null) + { + // if we end up needing to make an HTTP request to retrieve credentials, we + // can use our existing one, but we need to throw exceptions so the error + // bubbles up. + $authHttp = $this->createAuthHttp($http); + $authHttpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $subscriber = new \WPMailSMTP\Vendor\Google\Auth\Subscriber\AuthTokenSubscriber($credentials, $authHttpHandler, $tokenCallback); + $http->setDefaultOption('auth', 'google_auth'); + $http->getEmitter()->attach($subscriber); + return $http; + } + public function attachToken(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, array $token, array $scopes) + { + $tokenFunc = function ($scopes) use($token) { + return $token['access_token']; + }; + $subscriber = new \WPMailSMTP\Vendor\Google\Auth\Subscriber\ScopedAccessTokenSubscriber($tokenFunc, $scopes, $this->cacheConfig, $this->cache); + $http->setDefaultOption('auth', 'scoped'); + $http->getEmitter()->attach($subscriber); + return $http; + } + public function attachKey(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, $key) + { + $subscriber = new \WPMailSMTP\Vendor\Google\Auth\Subscriber\SimpleSubscriber(['key' => $key]); + $http->setDefaultOption('auth', 'simple'); + $http->getEmitter()->attach($subscriber); + return $http; + } + private function createAuthHttp(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http) + { + return new \WPMailSMTP\Vendor\GuzzleHttp\Client(['base_url' => $http->getBaseUrl(), 'defaults' => ['exceptions' => \true, 'verify' => $http->getDefaultOption('verify'), 'proxy' => $http->getDefaultOption('proxy')]]); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php new file mode 100644 index 000000000..bcb2b92ce --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle6AuthHandler.php @@ -0,0 +1,76 @@ +cache = $cache; + $this->cacheConfig = $cacheConfig; + } + public function attachCredentials(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, \WPMailSMTP\Vendor\Google\Auth\CredentialsLoader $credentials, callable $tokenCallback = null) + { + // use the provided cache + if ($this->cache) { + $credentials = new \WPMailSMTP\Vendor\Google\Auth\FetchAuthTokenCache($credentials, $this->cacheConfig, $this->cache); + } + return $this->attachCredentialsCache($http, $credentials, $tokenCallback); + } + public function attachCredentialsCache(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, \WPMailSMTP\Vendor\Google\Auth\FetchAuthTokenCache $credentials, callable $tokenCallback = null) + { + // if we end up needing to make an HTTP request to retrieve credentials, we + // can use our existing one, but we need to throw exceptions so the error + // bubbles up. + $authHttp = $this->createAuthHttp($http); + $authHttpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $middleware = new \WPMailSMTP\Vendor\Google\Auth\Middleware\AuthTokenMiddleware($credentials, $authHttpHandler, $tokenCallback); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'google_auth'; + $http = new \WPMailSMTP\Vendor\GuzzleHttp\Client($config); + return $http; + } + public function attachToken(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, array $token, array $scopes) + { + $tokenFunc = function ($scopes) use($token) { + return $token['access_token']; + }; + $middleware = new \WPMailSMTP\Vendor\Google\Auth\Middleware\ScopedAccessTokenMiddleware($tokenFunc, $scopes, $this->cacheConfig, $this->cache); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'scoped'; + $http = new \WPMailSMTP\Vendor\GuzzleHttp\Client($config); + return $http; + } + public function attachKey(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http, $key) + { + $middleware = new \WPMailSMTP\Vendor\Google\Auth\Middleware\SimpleMiddleware(['key' => $key]); + $config = $http->getConfig(); + $config['handler']->remove('google_auth'); + $config['handler']->push($middleware, 'google_auth'); + $config['auth'] = 'simple'; + $http = new \WPMailSMTP\Vendor\GuzzleHttp\Client($config); + return $http; + } + private function createAuthHttp(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http) + { + return new \WPMailSMTP\Vendor\GuzzleHttp\Client(['http_errors' => \true] + $http->getConfig()); + } +} diff --git a/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php new file mode 100644 index 000000000..780fd7fcf --- /dev/null +++ b/wp-content/plugins/wp-mail-smtp/vendor_prefixed/google/apiclient/src/AuthHandler/Guzzle7AuthHandler.php @@ -0,0 +1,25 @@ +config = \array_merge([ + 'application_name' => '', + // Don't change these unless you're working against a special development + // or testing environment. + 'base_path' => self::API_BASE_PATH, + // https://developers.google.com/console + 'client_id' => '', + 'client_secret' => '', + // Can be a path to JSON credentials or an array representing those + // credentials (@see Google\Client::setAuthConfig), or an instance of + // Google\Auth\CredentialsLoader. + 'credentials' => null, + // @see Google\Client::setScopes + 'scopes' => null, + // Sets X-Goog-User-Project, which specifies a user project to bill + // for access charges associated with the request + 'quota_project' => null, + 'redirect_uri' => null, + 'state' => null, + // Simple API access key, also from the API console. Ensure you get + // a Server key, and not a Browser key. + 'developer_key' => '', + // For use with Google Cloud Platform + // fetch the ApplicationDefaultCredentials, if applicable + // @see https://developers.google.com/identity/protocols/application-default-credentials + 'use_application_default_credentials' => \false, + 'signing_key' => null, + 'signing_algorithm' => null, + 'subject' => null, + // Other OAuth2 parameters. + 'hd' => '', + 'prompt' => '', + 'openid.realm' => '', + 'include_granted_scopes' => null, + 'login_hint' => '', + 'request_visible_actions' => '', + 'access_type' => 'online', + 'approval_prompt' => 'auto', + // Task Runner retry configuration + // @see Google\Task\Runner + 'retry' => [], + 'retry_map' => null, + // Cache class implementing Psr\Cache\CacheItemPoolInterface. + // Defaults to Google\Auth\Cache\MemoryCacheItemPool. + 'cache' => null, + // cache config for downstream auth caching + 'cache_config' => [], + // function to be called when an access token is fetched + // follows the signature function ($cacheKey, $accessToken) + 'token_callback' => null, + // Service class used in Google\Client::verifyIdToken. + // Explicitly pass this in to avoid setting JWT::$leeway + 'jwt' => null, + // Setting api_format_v2 will return more detailed error messages + // from certain APIs. + 'api_format_v2' => \false, + ], $config); + if (!\is_null($this->config['credentials'])) { + if ($this->config['credentials'] instanceof \WPMailSMTP\Vendor\Google\Auth\CredentialsLoader) { + $this->credentials = $this->config['credentials']; + } else { + $this->setAuthConfig($this->config['credentials']); + } + unset($this->config['credentials']); + } + if (!\is_null($this->config['scopes'])) { + $this->setScopes($this->config['scopes']); + unset($this->config['scopes']); + } + // Set a default token callback to update the in-memory access token + if (\is_null($this->config['token_callback'])) { + $this->config['token_callback'] = function ($cacheKey, $newAccessToken) { + $this->setAccessToken([ + 'access_token' => $newAccessToken, + 'expires_in' => 3600, + // Google default + 'created' => \time(), + ]); + }; + } + if (!\is_null($this->config['cache'])) { + $this->setCache($this->config['cache']); + unset($this->config['cache']); + } + } + /** + * Get a string containing the version of the library. + * + * @return string + */ + public function getLibraryVersion() + { + return self::LIBVER; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithAuthCode + * + * @param string $code string code from accounts.google.com + * @return array access token + * @deprecated + */ + public function authenticate($code) + { + return $this->fetchAccessTokenWithAuthCode($code); + } + /** + * Attempt to exchange a code for an valid authentication token. + * Helper wrapped around the OAuth 2.0 implementation. + * + * @param string $code code from accounts.google.com + * @return array access token + */ + public function fetchAccessTokenWithAuthCode($code) + { + if (\strlen($code) == 0) { + throw new \InvalidArgumentException("Invalid code"); + } + $auth = $this->getOAuth2Service(); + $auth->setCode($code); + $auth->setRedirectUri($this->getRedirectUri()); + $httpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient()); + $creds = $auth->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + $this->setAccessToken($creds); + } + return $creds; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithAssertion + * + * @return array access token + * @deprecated + */ + public function refreshTokenWithAssertion() + { + return $this->fetchAccessTokenWithAssertion(); + } + /** + * Fetches a fresh access token with a given assertion token. + * @param ClientInterface $authHttp optional. + * @return array access token + */ + public function fetchAccessTokenWithAssertion(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $authHttp = null) + { + if (!$this->isUsingApplicationDefaultCredentials()) { + throw new \DomainException('set the JSON service account credentials using' . ' Google\\Client::setAuthConfig or set the path to your JSON file' . ' with the "GOOGLE_APPLICATION_CREDENTIALS" environment variable' . ' and call Google\\Client::useApplicationDefaultCredentials to' . ' refresh a token with assertion.'); + } + $this->getLogger()->log('info', 'OAuth2 access token refresh with Signed JWT assertion grants.'); + $credentials = $this->createApplicationDefaultCredentials(); + $httpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($authHttp); + $creds = $credentials->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + $this->setAccessToken($creds); + } + return $creds; + } + /** + * For backwards compatibility + * alias for fetchAccessTokenWithRefreshToken + * + * @param string $refreshToken + * @return array access token + */ + public function refreshToken($refreshToken) + { + return $this->fetchAccessTokenWithRefreshToken($refreshToken); + } + /** + * Fetches a fresh OAuth 2.0 access token with the given refresh token. + * @param string $refreshToken + * @return array access token + */ + public function fetchAccessTokenWithRefreshToken($refreshToken = null) + { + if (null === $refreshToken) { + if (!isset($this->token['refresh_token'])) { + throw new \LogicException('refresh token must be passed in or set as part of setAccessToken'); + } + $refreshToken = $this->token['refresh_token']; + } + $this->getLogger()->info('OAuth2 access token refresh'); + $auth = $this->getOAuth2Service(); + $auth->setRefreshToken($refreshToken); + $httpHandler = \WPMailSMTP\Vendor\Google\Auth\HttpHandler\HttpHandlerFactory::build($this->getHttpClient()); + $creds = $auth->fetchAuthToken($httpHandler); + if ($creds && isset($creds['access_token'])) { + $creds['created'] = \time(); + if (!isset($creds['refresh_token'])) { + $creds['refresh_token'] = $refreshToken; + } + $this->setAccessToken($creds); + } + return $creds; + } + /** + * Create a URL to obtain user authorization. + * The authorization endpoint allows the user to first + * authenticate, and then grant/deny the access request. + * @param string|array $scope The scope is expressed as an array or list of space-delimited strings. + * @param array $queryParams Querystring params to add to the authorization URL. + * @return string + */ + public function createAuthUrl($scope = null, array $queryParams = []) + { + if (empty($scope)) { + $scope = $this->prepareScopes(); + } + if (\is_array($scope)) { + $scope = \implode(' ', $scope); + } + // only accept one of prompt or approval_prompt + $approvalPrompt = $this->config['prompt'] ? null : $this->config['approval_prompt']; + // include_granted_scopes should be string "true", string "false", or null + $includeGrantedScopes = $this->config['include_granted_scopes'] === null ? null : \var_export($this->config['include_granted_scopes'], \true); + $params = \array_filter(['access_type' => $this->config['access_type'], 'approval_prompt' => $approvalPrompt, 'hd' => $this->config['hd'], 'include_granted_scopes' => $includeGrantedScopes, 'login_hint' => $this->config['login_hint'], 'openid.realm' => $this->config['openid.realm'], 'prompt' => $this->config['prompt'], 'redirect_uri' => $this->config['redirect_uri'], 'response_type' => 'code', 'scope' => $scope, 'state' => $this->config['state']]) + $queryParams; + // If the list of scopes contains plus.login, add request_visible_actions + // to auth URL. + $rva = $this->config['request_visible_actions']; + if (\strlen($rva) > 0 && \false !== \strpos($scope, 'plus.login')) { + $params['request_visible_actions'] = $rva; + } + $auth = $this->getOAuth2Service(); + return (string) $auth->buildFullAuthorizationUri($params); + } + /** + * Adds auth listeners to the HTTP client based on the credentials + * set in the Google API Client object + * + * @param ClientInterface $http the http client object. + * @return ClientInterface the http client object + */ + public function authorize(\WPMailSMTP\Vendor\GuzzleHttp\ClientInterface $http = null) + { + $http = $http ?: $this->getHttpClient(); + $authHandler = $this->getAuthHandler(); + // These conditionals represent the decision tree for authentication + // 1. Check if a Google\Auth\CredentialsLoader instance has been supplied via the "credentials" option + // 2. Check for Application Default Credentials + // 3a. Check for an Access Token + // 3b. If access token exists but is expired, try to refresh it + // 4. Check for API Key + if ($this->credentials) { + return $authHandler->attachCredentials($http, $this->credentials, $this->config['token_callback']); + } + if ($this->isUsingApplicationDefaultCredentials()) { + $credentials = $this->createApplicationDefaultCredentials(); + return $authHandler->attachCredentialsCache($http, $credentials, $this->config['token_callback']); + } + if ($token = $this->getAccessToken()) { + $scopes = $this->prepareScopes(); + // add refresh subscriber to request a new token + if (isset($token['refresh_token']) && $this->isAccessTokenExpired()) { + $credentials = $this->createUserRefreshCredentials($scopes, $token['refresh_token']); + return $authHandler->attachCredentials($http, $credentials, $this->config['token_callback']); + } + return $authHandler->attachToken($http, $token, (array) $scopes); + } + if ($key = $this->config['developer_key']) { + return $authHandler->attachKey($http, $key); + } + return $http; + } + /** + * Set the configuration to use application default credentials for + * authentication + * + * @see https://developers.google.com/identity/protocols/application-default-credentials + * @param boolean $useAppCreds + */ + public function useApplicationDefaultCredentials($useAppCreds = \true) + { + $this->config['use_application_default_credentials'] = $useAppCreds; + } + /** + * To prevent useApplicationDefaultCredentials from inappropriately being + * called in a conditional + * + * @see https://developers.google.com/identity/protocols/application-default-credentials + */ + public function isUsingApplicationDefaultCredentials() + { + return $this->config['use_application_default_credentials']; + } + /** + * Set the access token used for requests. + * + * Note that at the time requests are sent, tokens are cached. A token will be + * cached for each combination of service and authentication scopes. If a + * cache pool is not provided, creating a new instance of the client will + * allow modification of access tokens. If a persistent cache pool is + * provided, in order to change the access token, you must clear the cached + * token by calling `$client->getCache()->clear()`. (Use caution in this case, + * as calling `clear()` will remove all cache items, including any items not + * related to Google API PHP Client.) + * + * @param string|array $token + * @throws InvalidArgumentException + */ + public function setAccessToken($token) + { + if (\is_string($token)) { + if ($json = \json_decode($token, \true)) { + $token = $json; + } else { + // assume $token is just the token string + $token = ['access_token' => $token]; + } + } + if ($token == null) { + throw new \InvalidArgumentException('invalid json token'); + } + if (!isset($token['access_token'])) { + throw new \InvalidArgumentException("Invalid token format"); + } + $this->token = $token; + } + public function getAccessToken() + { + return $this->token; + } + /** + * @return string|null + */ + public function getRefreshToken() + { + if (isset($this->token['refresh_token'])) { + return $this->token['refresh_token']; + } + return null; + } + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + if (!$this->token) { + return \true; + } + $created = 0; + if (isset($this->token['created'])) { + $created = $this->token['created']; + } elseif (isset($this->token['id_token'])) { + // check the ID token for "iat" + // signature verification is not required here, as we are just + // using this for convenience to save a round trip request + // to the Google API server + $idToken = $this->token['id_token']; + if (\substr_count($idToken, '.') == 2) { + $parts = \explode('.', $idToken); + $payload = \json_decode(\base64_decode($parts[1]), \true); + if ($payload && isset($payload['iat'])) { + $created = $payload['iat']; + } + } + } + if (!isset($this->token['expires_in'])) { + // if the token does not have an "expires_in", then it's considered expired + return \true; + } + // If the token is set to expire in the next 30 seconds. + return $created + ($this->token['expires_in'] - 30) < \time(); + } + /** + * @deprecated See UPGRADING.md for more information + */ + public function getAuth() + { + throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information'); + } + /** + * @deprecated See UPGRADING.md for more information + */ + public function setAuth($auth) + { + throw new \BadMethodCallException('This function no longer exists. See UPGRADING.md for more information'); + } + /** + * Set the OAuth 2.0 Client ID. + * @param string $clientId + */ + public function setClientId($clientId) + { + $this->config['client_id'] = $clientId; + } + public function getClientId() + { + return $this->config['client_id']; + } + /** + * Set the OAuth 2.0 Client Secret. + * @param string $clientSecret + */ + public function setClientSecret($clientSecret) + { + $this->config['client_secret'] = $clientSecret; + } + public function getClientSecret() + { + return $this->config['client_secret']; + } + /** + * Set the OAuth 2.0 Redirect URI. + * @param string $redirectUri + */ + public function setRedirectUri($redirectUri) + { + $this->config['redirect_uri'] = $redirectUri; + } + public function getRedirectUri() + { + return $this->config['redirect_uri']; + } + /** + * Set OAuth 2.0 "state" parameter to achieve per-request customization. + * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2 + * @param string $state + */ + public function setState($state) + { + $this->config['state'] = $state; + } + /** + * @param string $accessType Possible values for access_type include: + * {@code "offline"} to request offline access from the user. + * {@code "online"} to request online access from the user. + */ + public function setAccessType($accessType) + { + $this->config['access_type'] = $accessType; + } + /** + * @param string $approvalPrompt Possible values for approval_prompt include: + * {@code "force"} to force the approval UI to appear. + * {@code "auto"} to request auto-approval when possible. (This is the default value) + */ + public function setApprovalPrompt($approvalPrompt) + { + $this->config['approval_prompt'] = $approvalPrompt; + } + /** + * Set the login hint, email address or sub id. + * @param string $loginHint + */ + public function setLoginHint($loginHint) + { + $this->config['login_hint'] = $loginHint; + } + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $applicationName + */ + public function setApplicationName($applicationName) + { + $this->config['application_name'] = $applicationName; + } + /** + * If 'plus.login' is included in the list of requested scopes, you can use + * this method to define types of app activities that your app will write. + * You can find a list of available types here: + * @link https://developers.google.com/+/api/moment-types + * + * @param array $requestVisibleActions Array of app activity types + */ + public function setRequestVisibleActions($requestVisibleActions) + { + if (\is_array($requestVisibleActions)) { + $requestVisibleActions = \implode(" ", $requestVisibleActions); + } + $this->config['request_visible_actions'] = $requestVisibleActions; + } + /** + * Set the developer key to use, these are obtained through the API Console. + * @see http://code.google.com/apis/console-help/#generatingdevkeys + * @param string $developerKey + */ + public function setDeveloperKey($developerKey) + { + $this->config['developer_key'] = $developerKey; + } + /** + * Set the hd (hosted domain) parameter streamlines the login process for + * Google Apps hosted accounts. By including the domain of the user, you + * restrict sign-in to accounts at that domain. + * @param string $hd the domain to use. + */ + public function setHostedDomain($hd) + { + $this->config['hd'] = $hd; + } + /** + * Set the prompt hint. Valid values are none, consent and select_account. + * If no value is specified and the user has not previously authorized + * access, then the user is shown a consent screen. + * @param string $prompt + * {@code "none"} Do not display any authentication or consent screens. Must not be specified with other values. + * {@code "consent"} Prompt the user for consent. + * {@code "select_account"} Prompt the user to select an account. + */ + public function setPrompt($prompt) + { + $this->config['prompt'] = $prompt; + } + /** + * openid.realm is a parameter from the OpenID 2.0 protocol, not from OAuth + * 2.0. It is used in OpenID 2.0 requests to signify the URL-space for which + * an authentication request is valid. + * @param string $realm the URL-space to use. + */ + public function setOpenidRealm($realm) + { + $this->config['openid.realm'] = $realm; + } + /** + * If this is provided with the value true, and the authorization request is + * granted, the authorization will include any previous authorizations + * granted to this user/application combination for other scopes. + * @param bool $include the URL-space to use. + */ + public function setIncludeGrantedScopes($include) + { + $this->config['include_granted_scopes'] = $include; + } + /** + * sets function to be called when an access token is fetched + * @param callable $tokenCallback - function ($cacheKey, $accessToken) + */ + public function setTokenCallback(callable $tokenCallback) + { + $this->config['token_callback'] = $tokenCallback; + } + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * + * @param string|array|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + $tokenRevoker = new \WPMailSMTP\Vendor\Google\AccessToken\Revoke($this->getHttpClient()); + return $tokenRevoker->revokeToken($token ?: $this->getAccessToken()); + } + /** + * Verify an id_token. This method will verify the current id_token, if one + * isn't provided. + * + * @throws LogicException If no token was provided and no token was set using `setAccessToken`. + * @throws UnexpectedValueException If the token is not a valid JWT. + * @param string|null $idToken The token (id_token) that should be verified. + * @return array|false Returns the token payload as an array if the verification was + * successful, false otherwise. + */ + public function verifyIdToken($idToken = null) + { + $tokenVerifier = new \WPMailSMTP\Vendor\Google\AccessToken\Verify($this->getHttpClient(), $this->getCache(), $this->config['jwt']); + if (null === $idToken) { + $token = $this->getAccessToken(); + if (!isset($token['id_token'])) { + throw new \LogicException('id_token must be passed in or set as part of setAccessToken'); + } + $idToken = $token['id_token']; + } + return $tokenVerifier->verifyIdToken($idToken, $this->getClientId()); + } + /** + * Set the scopes to be requested. Must be called before createAuthUrl(). + * Will remove any previously configured scopes. + * @param string|array $scope_or_scopes, ie: + * array( + * 'https://www.googleapis.com/auth/plus.login', + * 'https://www.googleapis.com/auth/moderator' + * ); + */ + public function setScopes($scope_or_scopes) + { + $this->requestedScopes = []; + $this->addScope($scope_or_scopes); + } + /** + * This functions adds a scope to be requested as part of the OAuth2.0 flow. + * Will append any scopes not previously requested to the scope parameter. + * A single string will be treated as a scope to request. An array of strings + * will each be appended. + * @param string|string[] $scope_or_scopes e.g. "profile" + */ + public function addScope($scope_or_scopes) + { + if (\is_string($scope_or_scopes) && !\in_array($scope_or_scopes, $this->requestedScopes)) { + $this->requestedScopes[] = $scope_or_scopes; + } elseif (\is_array($scope_or_scopes)) { + foreach ($scope_or_scopes as $scope) { + $this->addScope($scope); + } + } + } + /** + * Returns the list of scopes requested by the client + * @return array the list of scopes + * + */ + public function getScopes() + { + return $this->requestedScopes; + } + /** + * @return string|null + * @visible For Testing + */ + public function prepareScopes() + { + if (empty($this->requestedScopes)) { + return null; + } + return \implode(' ', $this->requestedScopes); + } + /** + * Helper method to execute deferred HTTP requests. + * + * @template T + * @param RequestInterface $request + * @param class-stringErrorHandler::register($logger);
+ *
+ * @author Jordi Boggiano ' . \htmlspecialchars($td, \ENT_NOQUOTES, 'UTF-8') . ''; + } + return "
+ * $activationStrategy = new ChannelLevelActivationStrategy(
+ * Logger::CRITICAL,
+ * array(
+ * 'request' => Logger::ALERT,
+ * 'sensitive' => Logger::ERROR,
+ * )
+ * );
+ * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy);
+ *
+ *
+ * @author Mike Meessen