WP Mail SMTP by WPForms - Version 1.8.0

Version Description

  • 2019-12-12 =
  • Added: New recommended mailer: Pepipost.
  • Added: "Suggest a Mailer" link in a list of mailers to send us your ideas about new ones.
  • Fixed: Sendgrid: Content ID for attachments missing.
  • Changed: Timeout to HTTP requests (pepipost, sendgrid, mailgun), same as max_execution_time, to prevent fails when sending emails with big attachments.
Download this release

Release Info

Developer slaFFik
Plugin Icon 128x128 WP Mail SMTP by WPForms
Version 1.8.0
Comparing to
See all releases

Code changes from version 1.7.1 to 1.8.0

Files changed (60) hide show
  1. assets/css/smtp-admin.min.css +1 -1
  2. assets/images/providers/pepipost-smtp.png +0 -0
  3. assets/images/providers/pepipost.png +0 -0
  4. assets/js/smtp-about.js +190 -190
  5. assets/languages/wp-mail-smtp.pot +67 -37
  6. readme.txt +395 -377
  7. src/Admin/Area.php +889 -889
  8. src/Admin/Pages/About.php +702 -702
  9. src/Admin/Pages/SettingsTab.php +546 -537
  10. src/Admin/PluginsInstallSkin.php +55 -55
  11. src/Options.php +38 -13
  12. src/Processor.php +232 -232
  13. src/Providers/Loader.php +205 -204
  14. src/Providers/MailerAbstract.php +24 -4
  15. src/Providers/Pepipost/Options.php +2 -2
  16. src/Providers/PepipostAPI/Mailer.php +440 -0
  17. src/Providers/PepipostAPI/Options.php +119 -0
  18. src/Providers/Sendgrid/Mailer.php +1 -0
  19. src/Providers/Sendinblue/Options.php +119 -119
  20. vendor/guzzlehttp/guzzle/phpstan-baseline.neon +1412 -0
  21. vendor/guzzlehttp/guzzle/src/Client.php +531 -422
  22. vendor/guzzlehttp/guzzle/src/ClientInterface.php +87 -84
  23. vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +316 -314
  24. vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +84 -84
  25. vendor/guzzlehttp/guzzle/src/Exception/RequestException.php +192 -217
  26. vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +585 -580
  27. vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +219 -205
  28. vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +195 -190
  29. vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php +544 -544
  30. vendor/guzzlehttp/guzzle/src/HandlerStack.php +277 -273
  31. vendor/guzzlehttp/guzzle/src/MessageFormatter.php +185 -180
  32. vendor/guzzlehttp/guzzle/src/Pool.php +132 -123
  33. vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +111 -106
  34. vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +249 -237
  35. vendor/guzzlehttp/guzzle/src/RequestOptions.php +263 -255
  36. vendor/guzzlehttp/guzzle/src/RetryMiddleware.php +128 -115
  37. vendor/guzzlehttp/guzzle/src/TransferStats.php +126 -126
  38. vendor/guzzlehttp/guzzle/src/functions.php +346 -346
  39. vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php +3 -1
  40. vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php +3 -2
  41. vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php +2 -2
  42. vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php +1 -1
  43. vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php +1 -1
  44. vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php +4 -125
  45. vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php +5 -4
  46. vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php +19 -0
  47. vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php +3 -2
  48. vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php +3 -2
  49. vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php +41 -11
  50. vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php +44 -14
  51. vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php +2 -1
  52. vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php +2 -1
  53. vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php +2 -1
  54. vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php +2 -1
  55. vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php +42 -11
  56. vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php +7 -2
  57. vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php +2 -1
  58. vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php +2 -1
  59. vendor/monolog/monolog/src/Monolog/Utils.php +134 -0
  60. wp_mail_smtp.php +167 -166
assets/css/smtp-admin.min.css CHANGED
@@ -1,3 +1,3 @@
1
- #wpcontent{padding-left:0 !important;position:relative}@media (max-width: 600px){#wpcontent{padding-top:46px}}@media (max-width: 600px){#wpbody{padding-top:0}}body.toplevel_page_wp-mail-smtp div.jconfirm *,body.toplevel_page_wp-mail-smtp div.jconfirm *::before,body.toplevel_page_wp-mail-smtp div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box{border-radius:0;box-shadow:0 2px 6px rgba(0,0,0,0.2)}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.4);top:8px;right:8px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,0.8)}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c{margin:0 0 26px 0 !important;padding:0 !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin:0 !important;color:#c4c4c4 !important;-webkit-transition:none !important;transition:none !important;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;font-size:45px !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i:empty{display:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c svg{height:35px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-title{display:block;color:#333}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c+span.jconfirm-title{margin-top:20px !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content-pane{margin-bottom:0;display:block}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:inherit}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content{font-size:16px;color:#555;line-height:1.4}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content.lite-upgrade p{font-size:18px;padding:0 20px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p{margin:0 0 16px;font-size:18px;line-height:1.5}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p.large{font-size:18px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p.small{font-size:14px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased{font-size:12px;color:#ccc;text-decoration:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased:hover{text-decoration:underline}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased{display:block;font-size:12px;color:#aaa;text-decoration:none;padding-top:20px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased:hover{color:#999;text-decoration:underline}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note{text-align:center;margin:30px 0 0}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note p{background-color:#faffac;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note p:after{content:'\f058';display:inline-block;font:normal normal normal 14px/1 FontAwesome;background-color:#fff;font-size:26px;border-radius:50%;padding:5px 6px;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:-20px;right:50%;margin-right:-18px;color:#3abc01}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note span{font-weight:700;color:#3abc01}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note a{color:#aaa;display:block;margin-top:12px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box input[type=text]{display:block;width:99%;border:1px solid #d6d6d6;padding:10px;box-shadow:none;margin:20px auto 0 auto}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-confirm{background-color:#FF982D;color:#fff;outline:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-confirm:hover{background-color:#f97f00;border-color:#f97f00}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button,body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-default{color:#666}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-block{display:block;text-align:center;width:100%;margin:0 0 10px 0 !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-normal-case{text-transform:none !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .error{display:none;color:red}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .wpforms-error{border:1px solid #ebccd1 !important}#wp-mail-smtp-header{border-top:3px solid #FF982D;padding: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{margin:0}#wp-mail-smtp .wp-mail-smtp-hide{display:none}#wp-mail-smtp .wp-mail-smtp-page-title{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:2px solid #fff;box-shadow:none;color:#666;display:inline-block;margin-right:30px;padding:20px 0 18px 0;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-title a.tab.active{border-bottom:2px solid #FF982D}#wp-mail-smtp .wp-mail-smtp-page-title a.tab:hover{border-color:#999}#wp-mail-smtp .wp-mail-smtp-page-title a.action{padding:5px;border:0;min-height:auto;color:#fff;margin:-10px 0 0 20px}#wp-mail-smtp .wp-mail-smtp-page-title .page-title{background-color:#fff;display:inline-block;font-size:23px;margin:0;padding:15px 20px 15px 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}#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-setting-field{margin:0;max-width:1005px}#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}#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-checkbox-toggle .wp-mail-smtp-setting-field label{vertical-align:middle;display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field label:hover .wp-mail-smtp-setting-toggle-switch{background-color:#999}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch{background-color:#46B450}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch{background-color:#69c471;cursor:default}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label{display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label+.wp-mail-smtp-setting-toggle-unchecked-label{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-unchecked-label{color:#aaa}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-unchecked-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-checked-label{text-transform:uppercase;font-weight:400;color:#777;font-size:13px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-checked-label{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-switch{position:relative;cursor:pointer;background-color:#ccc;border-radius:15px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;vertical-align:middle;position:relative;display:inline-block;margin:0 5px 0 0;width:40px;height:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-switch:before{position:absolute;content:"";height:14px;width:14px;left:3px;top:3px;background-color:#fff;border-radius:50%;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}#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{width:680px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailer{display:inline-block;width:150px;margin-right:15px;margin-bottom:15px;position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailer .wp-mail-smtp-mailer-recommended{position:absolute;right:-1px;width:99px;top:2px;z-index:1}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailer:last-child{margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .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 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.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-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-mailer .wp-mail-smtp-mailer-image img{max-width:90%;max-height:40px;display:block;position:relative;top:50%;left:50%;transform:translate(-50%, -50%);opacity:0.6;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.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-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-mailer.active .wp-mail-smtp-mailer-image{border-color:#FF982D}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .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-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-mailer:hover .wp-mail-smtp-mailer-image img{opacity:1}#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:#444;font-size:20px;font-weight:700;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:#444;font-size:24px;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{font-style:italic;color:#777}#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 transparent;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-error{border-color:#dc3232;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]{color:#a00}#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{color:#400}#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]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}@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]{width:300px}}#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]{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{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{border-color:#bbb}#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{opacity:0.6}#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;font-size:1.1em}#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-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;width:1005px}#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,0.1);margin:5px 0 15px;padding:1px 12px}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-success{border-left-color:#46b450}#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:#dc3232}#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{margin:0.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}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug{background-color:#fff;padding:25px 20px 1px 25px}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug h2{color:#444;margin:1.4em 0 0.8em;font-size:16px;font-weight:700}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug p{font-size:14px;color:#555;margin-bottom:1.1em}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol{font-size:14px;color:#555;margin:0 0 1.1em 1.8em}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li{margin:0 0 8px 0;line-height:1.5}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li:last-of-type,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li:last-of-type{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li ul,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li ul{list-style-type:disc}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug a{color:#FF982D}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug a:hover{color:#f97f00}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .dashicons-star-filled{color:#FF982D;width:16px;height:16px;font-size:16px;vertical-align:text-top}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .price-off{color:green;font-weight:bold}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle{text-decoration:none;color:#444}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle:hover{color:#FF982D}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle .dashicons{font-size:15px;height:15px;width:15px;padding-top:3px;border:0;outline:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log{border-left:3px solid #ffb900;padding:0 0 0 20px;margin:0 0 10px 0;font-size:12px;display:none}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log pre{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-note{display:none}#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:#444;margin-top:0;font-size:16px;font-weight:700}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner p{font-size:14px;color:#555;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:#555;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:#FF982D}#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:#f97f00}#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:green;font-weight:bold}#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 .wp-mail-smtp-page-upsell{display:flex;align-items:center;justify-content:center;height:auto;flex-direction:column}#wp-mail-smtp .wp-mail-smtp-page-upsell>*{width:800px}#wp-mail-smtp .wp-mail-smtp-page-upsell *,#wp-mail-smtp .wp-mail-smtp-page-upsell *::before,#wp-mail-smtp .wp-mail-smtp-page-upsell *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-mail-smtp .wp-mail-smtp-page-upsell h2{font-size:24px;color:#444444;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell h3{font-size:16px;font-weight:normal;color:#72777C;line-height:1.5em;margin-top:0;margin-bottom:25px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features{margin-bottom:40px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;align-content:flex-start}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature{display:flex;flex-direction:row;width:360px;align-items:flex-start;align-content:flex-start;margin-right:60px;margin-top:40px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(1){margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(2){margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(even){margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-image{width:65px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-image img{display:block;margin:5px auto 0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content{margin-left:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content h4{font-size:15px;margin:0 0 0.5em}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content p{color:#72777C;margin:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images{margin-bottom:20px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images img{width:380px;height:auto;margin-right:20px;border:5px solid #fff;border-radius:5px;box-shadow:0 0 10px 5px rgba(0,0,0,0.15)}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images img:last-child{margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-button{text-align:center}.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:disabled{opacity:0.5;cursor:not-allowed}.wp-mail-smtp-btn.wp-mail-smtp-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}.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-orange{background-color:#FF982D;border-color:#FF982D;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:#f97f00;border-color:#f97f00}.wp-mail-smtp-btn.wp-mail-smtp-btn-red{background-color:#DC3232;border-color:#DC3232;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:darkred;border-color:darkred}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}.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:#d7d7d7;border-color:#ccc;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey{background-color:#f5f5f5;border:1px solid #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:1px solid #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}
2
3
/*# sourceMappingURL=smtp-admin.min.css.map */
1
+ #wpcontent{padding-left:0 !important;position:relative}@media (max-width: 600px){#wpcontent{padding-top:46px}}@media (max-width: 600px){#wpbody{padding-top:0}}body.toplevel_page_wp-mail-smtp div.jconfirm *,body.toplevel_page_wp-mail-smtp div.jconfirm *::before,body.toplevel_page_wp-mail-smtp div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box{border-radius:0;box-shadow:0 2px 6px rgba(0,0,0,0.2)}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.4);top:8px;right:8px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box-container div.jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,0.8)}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c{margin:0 0 26px 0 !important;padding:0 !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin:0 !important;color:#c4c4c4 !important;-webkit-transition:none !important;transition:none !important;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;font-size:45px !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i:empty{display:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c svg{height:35px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-title{display:block;color:#333}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-title-c .jconfirm-icon-c+span.jconfirm-title{margin-top:20px !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content-pane{margin-bottom:0;display:block}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:inherit}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content{font-size:16px;color:#555;line-height:1.4}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content.lite-upgrade p{font-size:18px;padding:0 20px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p{margin:0 0 16px;font-size:18px;line-height:1.5}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p.large{font-size:18px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content p.small{font-size:14px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased{font-size:12px;color:#ccc;text-decoration:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-content .already-purchased:hover{text-decoration:underline}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased{display:block;font-size:12px;color:#aaa;text-decoration:none;padding-top:20px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box div.jconfirm-buttons .already-purchased:hover{color:#999;text-decoration:underline}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note{text-align:center;margin:30px 0 0}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note p{background-color:#faffac;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note p:after{content:'\f058';display:inline-block;font:normal normal normal 14px/1 FontAwesome;background-color:#fff;font-size:26px;border-radius:50%;padding:5px 6px;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:-20px;right:50%;margin-right:-18px;color:#3abc01}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note span{font-weight:700;color:#3abc01}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .discount-note a{color:#aaa;display:block;margin-top:12px}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box input[type=text]{display:block;width:99%;border:1px solid #d6d6d6;padding:10px;box-shadow:none;margin:20px auto 0 auto}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-confirm{background-color:#FF982D;color:#fff;outline:none}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-confirm:hover{background-color:#f97f00;border-color:#f97f00}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button,body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-default{color:#666}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-block{display:block;text-align:center;width:100%;margin:0 0 10px 0 !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box button.btn-normal-case{text-transform:none !important}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .error{display:none;color:red}body.toplevel_page_wp-mail-smtp div.jconfirm div.jconfirm-box .wpforms-error{border:1px solid #ebccd1 !important}#wp-mail-smtp-header{border-top:3px solid #FF982D;padding: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{margin:0}#wp-mail-smtp .wp-mail-smtp-hide{display:none}#wp-mail-smtp .wp-mail-smtp-page-title{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:2px solid #fff;box-shadow:none;color:#666;display:inline-block;margin-right:30px;padding:20px 0 18px 0;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-title a.tab.active{border-bottom:2px solid #FF982D}#wp-mail-smtp .wp-mail-smtp-page-title a.tab:hover{border-color:#999}#wp-mail-smtp .wp-mail-smtp-page-title a.action{padding:5px;border:0;min-height:auto;color:#fff;margin:-10px 0 0 20px}#wp-mail-smtp .wp-mail-smtp-page-title .page-title{background-color:#fff;display:inline-block;font-size:23px;margin:0;padding:15px 20px 15px 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}#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-setting-field{margin:0;max-width:1005px}#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}#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-checkbox-toggle .wp-mail-smtp-setting-field label{vertical-align:middle;display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field label:hover .wp-mail-smtp-setting-toggle-switch{background-color:#999}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch{background-color:#46B450}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch{background-color:#69c471;cursor:default}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label{display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:checked+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label+.wp-mail-smtp-setting-toggle-unchecked-label{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-checked-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field input[type=checkbox]:disabled+.wp-mail-smtp-setting-toggle-switch+.wp-mail-smtp-setting-toggle-unchecked-label{color:#aaa}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-unchecked-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-checked-label{text-transform:uppercase;font-weight:400;color:#777;font-size:13px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-checked-label{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-switch{position:relative;cursor:pointer;background-color:#ccc;border-radius:15px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;vertical-align:middle;position:relative;display:inline-block;margin:0 5px 0 0;width:40px;height:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox-toggle .wp-mail-smtp-setting-field .wp-mail-smtp-setting-toggle-switch:before{position:absolute;content:"";height:14px;width:14px;left:3px;top:3px;background-color:#fff;border-radius:50%;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}#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 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.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:90%;max-height:40px;display:block;position:relative;top:50%;left:50%;transform:translate(-50%, -50%);opacity:0.6;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;transition:all 0.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.suggest-new a.wp-mail-smtp-mailer-image{min-width:140px;display:table-cell;color:#777777;text-decoration:underline;vertical-align:middle;bottom:10px}#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.suggest-new .wp-mail-smtp-mailer-text{visibility:hidden}#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:#FF982D}#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 h2,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h4{color:#444;font-size:20px;font-weight:700;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:#444;font-size:24px;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{font-style:italic;color:#777}#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 transparent;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-error{border-color:#dc3232;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]{color:#a00}#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{color:#400}#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]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px;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]{width:300px}}#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]{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{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{border-color:#bbb}#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{opacity:0.6}#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;font-size:1.1em}#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-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;width:1005px}#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,0.1);margin:5px 0 15px;padding:1px 12px}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-success{border-left-color:#46b450}#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:#dc3232}#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{margin:0.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}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug{background-color:#fff;padding:25px 20px 1px 25px}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug h2{color:#444;margin:1.4em 0 0.8em;font-size:16px;font-weight:700}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug p{font-size:14px;color:#555;margin-bottom:1.1em}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol{font-size:14px;color:#555;margin:0 0 1.1em 1.8em}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li{margin:0 0 8px 0;line-height:1.5}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li:last-of-type,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li:last-of-type{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ul li ul,#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug ol li ul{list-style-type:disc}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug a{color:#FF982D}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug a:hover{color:#f97f00}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .dashicons-star-filled{color:#FF982D;width:16px;height:16px;font-size:16px;vertical-align:text-top}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .price-off{color:green;font-weight:bold}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle{text-decoration:none;color:#444}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle:hover{color:#FF982D}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-toggle .dashicons{font-size:15px;height:15px;width:15px;padding-top:3px;border:0;outline:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log{border-left:3px solid #ffb900;padding:0 0 0 20px;margin:0 0 10px 0;font-size:12px;display:none}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log pre{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-debug .error-log-note{display:none}#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:#444;margin-top:0;font-size:16px;font-weight:700}#wp-mail-smtp .wp-mail-smtp-page-content #wp-mail-smtp-pro-banner p{font-size:14px;color:#555;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:#555;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:#FF982D}#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:#f97f00}#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:green;font-weight:bold}#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 .wp-mail-smtp-page-upsell{display:flex;align-items:center;justify-content:center;height:auto;flex-direction:column}#wp-mail-smtp .wp-mail-smtp-page-upsell>*{width:800px}#wp-mail-smtp .wp-mail-smtp-page-upsell *,#wp-mail-smtp .wp-mail-smtp-page-upsell *::before,#wp-mail-smtp .wp-mail-smtp-page-upsell *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-mail-smtp .wp-mail-smtp-page-upsell h2{font-size:24px;color:#444444;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell h3{font-size:16px;font-weight:normal;color:#72777C;line-height:1.5em;margin-top:0;margin-bottom:25px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features{margin-bottom:40px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;align-content:flex-start}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature{display:flex;flex-direction:row;width:360px;align-items:flex-start;align-content:flex-start;margin-right:60px;margin-top:40px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(1){margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(2){margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature:nth-of-type(even){margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-image{width:65px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-image img{display:block;margin:5px auto 0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content{margin-left:20px}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content h4{font-size:15px;margin:0 0 0.5em}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-content .wp-mail-smtp-page-upsell-features .wp-mail-smtp-page-upsell-feature .wp-mail-smtp-page-upsell-feature-content p{color:#72777C;margin:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images{margin-bottom:20px;text-align:center}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images img{width:380px;height:auto;margin-right:20px;border:5px solid #fff;border-radius:5px;box-shadow:0 0 10px 5px rgba(0,0,0,0.15)}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-images img:last-child{margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-upsell .wp-mail-smtp-page-upsell-button{text-align:center}.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:disabled{opacity:0.5;cursor:not-allowed}.wp-mail-smtp-btn.wp-mail-smtp-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}.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-orange{background-color:#FF982D;border-color:#FF982D;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:#f97f00;border-color:#f97f00}.wp-mail-smtp-btn.wp-mail-smtp-btn-red{background-color:#DC3232;border-color:#DC3232;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:darkred;border-color:darkred}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}.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:#d7d7d7;border-color:#ccc;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey{background-color:#f5f5f5;border:1px solid #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:1px solid #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}
2
3
/*# sourceMappingURL=smtp-admin.min.css.map */
assets/images/providers/pepipost-smtp.png ADDED
Binary file
assets/images/providers/pepipost.png CHANGED
Binary file
assets/js/smtp-about.js CHANGED
@@ -1,190 +1,190 @@
1
- /* global WPMailSMTP, jQuery, wp_mail_smtp_about */
2
-
3
- var WPMailSMTP = window.WPMailSMTP || {};
4
- WPMailSMTP.Admin = WPMailSMTP.Admin || {};
5
-
6
- /**
7
- * WP Mail SMTP Admin area About module.
8
- *
9
- * @since 1.5.0
10
- */
11
- WPMailSMTP.Admin.About = WPMailSMTP.Admin.About || (function ( document, window, $ ) {
12
-
13
- 'use strict';
14
-
15
- /**
16
- * Private functions and properties.
17
- *
18
- * @since 1.5.0
19
- *
20
- * @type {Object}
21
- */
22
- var __private = {};
23
-
24
- /**
25
- * Public functions and properties.
26
- *
27
- * @since 1.5.0
28
- *
29
- * @type {Object}
30
- */
31
- var app = {
32
-
33
- /**
34
- * Start the engine. DOM is not ready yet, use only to init something.
35
- *
36
- * @since 1.5.0
37
- */
38
- init: function () {
39
-
40
- // Do that when DOM is ready.
41
- $( document ).ready( app.ready );
42
- },
43
-
44
- /**
45
- * DOM is fully loaded.
46
- *
47
- * @since 1.5.0
48
- */
49
- ready: function () {
50
-
51
- app.pageHolder = $( '.wp-mail-smtp-page-about' );
52
-
53
- app.bindActions();
54
-
55
- $( '.wp-mail-smtp-page' ).trigger( 'WPMailSMTP.Admin.About.ready' );
56
- },
57
-
58
- /**
59
- * Process all generic actions/events, mostly custom that were fired by our API.
60
- *
61
- * @since 1.5.0
62
- */
63
- bindActions: function () {
64
-
65
- /*
66
- * Make plugins description the same height.
67
- */
68
- jQuery('.wp-mail-smtp-admin-about-plugins .plugin-item .details').matchHeight();
69
-
70
- /*
71
- * Install/Active the plugins.
72
- */
73
- $( document ).on( 'click', '.wp-mail-smtp-admin-about-plugins .plugin-item .action-button .button', function( e ) {
74
- e.preventDefault();
75
-
76
- var $btn = $( this );
77
-
78
- if ( $btn.hasClass( 'disabled' ) || $btn.hasClass( 'loading' ) ) {
79
- return false;
80
- }
81
-
82
- var $plugin = $btn.closest( '.plugin-item' ),
83
- plugin = $btn.attr( 'data-plugin' ),
84
- task,
85
- cssClass,
86
- statusText,
87
- buttonText,
88
- errorText,
89
- successText;
90
-
91
- $btn.prop( 'disabled', true ).addClass( 'loading' );
92
- $btn.text( wp_mail_smtp_about.plugin_processing );
93
-
94
- if ( $btn.hasClass( 'status-inactive' ) ) {
95
- // Activate.
96
- task = 'about_plugin_activate';
97
- cssClass = 'status-active button button-secondary disabled';
98
- statusText = wp_mail_smtp_about.plugin_active;
99
- buttonText = wp_mail_smtp_about.plugin_activated;
100
- errorText = wp_mail_smtp_about.plugin_activate;
101
-
102
- } else if ( $btn.hasClass( 'status-download' ) ) {
103
- // Install & Activate.
104
- task = 'about_plugin_install';
105
- cssClass = 'status-active button disabled';
106
- statusText = wp_mail_smtp_about.plugin_active;
107
- buttonText = wp_mail_smtp_about.plugin_activated;
108
- errorText = wp_mail_smtp_about.plugin_activate;
109
-
110
- } else {
111
- return;
112
- }
113
-
114
- // Setup ajax POST data.
115
- var data = {
116
- action: 'wp_mail_smtp_ajax',
117
- task: task,
118
- nonce : wp_mail_smtp_about.nonce,
119
- plugin: plugin
120
- };
121
-
122
- $.post( wp_mail_smtp_about.ajax_url, data, function( res ) {
123
- var is_install_successful;
124
-
125
- if ( res.success ) {
126
- is_install_successful = true;
127
- if ( 'about_plugin_install' === task ) {
128
- $btn.attr( 'data-plugin', res.data.basename );
129
- successText = res.data.msg;
130
- if ( ! res.data.is_activated ) {
131
- cssClass = 'button';
132
- statusText = wp_mail_smtp_about.plugin_inactive;
133
- buttonText = wp_mail_smtp_about.plugin_activate;
134
- }
135
- } else {
136
- successText = res.data;
137
- }
138
- $plugin.find( '.actions' ).append( '<div class="msg success">'+successText+'</div>' );
139
- $plugin.find( 'span.status-label' )
140
- .removeClass( 'status-active status-inactive status-download' )
141
- .addClass( cssClass )
142
- .removeClass( 'button button-primary button-secondary disabled' )
143
- .text( statusText );
144
- $btn
145
- .removeClass( 'status-active status-inactive status-download' )
146
- .removeClass( 'button button-primary button-secondary disabled' )
147
- .addClass( cssClass ).html( buttonText );
148
- } else {
149
- is_install_successful = false;
150
-
151
- if (
152
- res.hasOwnProperty( 'data' ) &&
153
- res.data.hasOwnProperty( 0 ) &&
154
- res.data[ 0 ].hasOwnProperty( 'code' ) &&
155
- res.data[ 0 ].code === 'download_failed'
156
- ) {
157
- // Specific server-returned error.
158
- $plugin.find( '.actions' ).append( '<div class="msg error">' + wp_mail_smtp_about.plugin_install_error + '</div>' );
159
- }
160
- else {
161
- // Generic error.
162
- $plugin.find( '.actions' ).append( '<div class="msg error">' + res.data + '</div>' );
163
- }
164
-
165
- $btn.html( wp_mail_smtp_about.plugin_download_btn );
166
- }
167
-
168
- if ( is_install_successful ) {
169
- $btn.prop( 'disabled', false );
170
- }
171
- $btn.removeClass( 'loading' );
172
-
173
- // Automatically clear plugin messages after 3 seconds.
174
- setTimeout( function () {
175
- $( '.plugin-item .msg' ).remove();
176
- }, 3000 );
177
-
178
- }).fail( function( xhr ) {
179
- console.log( xhr.responseText );
180
- });
181
- });
182
- }
183
- };
184
-
185
- // Provide access to public functions/properties.
186
- return app;
187
- })( document, window, jQuery );
188
-
189
- // Initialize.
190
- WPMailSMTP.Admin.About.init();
1
+ /* global WPMailSMTP, jQuery, wp_mail_smtp_about */
2
+
3
+ var WPMailSMTP = window.WPMailSMTP || {};
4
+ WPMailSMTP.Admin = WPMailSMTP.Admin || {};
5
+
6
+ /**
7
+ * WP Mail SMTP Admin area About module.
8
+ *
9
+ * @since 1.5.0
10
+ */
11
+ WPMailSMTP.Admin.About = WPMailSMTP.Admin.About || (function ( document, window, $ ) {
12
+
13
+ 'use strict';
14
+
15
+ /**
16
+ * Private functions and properties.
17
+ *
18
+ * @since 1.5.0
19
+ *
20
+ * @type {Object}
21
+ */
22
+ var __private = {};
23
+
24
+ /**
25
+ * Public functions and properties.
26
+ *
27
+ * @since 1.5.0
28
+ *
29
+ * @type {Object}
30
+ */
31
+ var app = {
32
+
33
+ /**
34
+ * Start the engine. DOM is not ready yet, use only to init something.
35
+ *
36
+ * @since 1.5.0
37
+ */
38
+ init: function () {
39
+
40
+ // Do that when DOM is ready.
41
+ $( document ).ready( app.ready );
42
+ },
43
+
44
+ /**
45
+ * DOM is fully loaded.
46
+ *
47
+ * @since 1.5.0
48
+ */
49
+ ready: function () {
50
+
51
+ app.pageHolder = $( '.wp-mail-smtp-page-about' );
52
+
53
+ app.bindActions();
54
+
55
+ $( '.wp-mail-smtp-page' ).trigger( 'WPMailSMTP.Admin.About.ready' );
56
+ },
57
+
58
+ /**
59
+ * Process all generic actions/events, mostly custom that were fired by our API.
60
+ *
61
+ * @since 1.5.0
62
+ */
63
+ bindActions: function () {
64
+
65
+ /*
66
+ * Make plugins description the same height.
67
+ */
68
+ jQuery('.wp-mail-smtp-admin-about-plugins .plugin-item .details').matchHeight();
69
+
70
+ /*
71
+ * Install/Active the plugins.
72
+ */
73
+ $( document ).on( 'click', '.wp-mail-smtp-admin-about-plugins .plugin-item .action-button .button', function( e ) {
74
+ e.preventDefault();
75
+
76
+ var $btn = $( this );
77
+
78
+ if ( $btn.hasClass( 'disabled' ) || $btn.hasClass( 'loading' ) ) {
79
+ return false;
80
+ }
81
+
82
+ var $plugin = $btn.closest( '.plugin-item' ),
83
+ plugin = $btn.attr( 'data-plugin' ),
84
+ task,
85
+ cssClass,
86
+ statusText,
87
+ buttonText,
88
+ errorText,
89
+ successText;
90
+
91
+ $btn.prop( 'disabled', true ).addClass( 'loading' );
92
+ $btn.text( wp_mail_smtp_about.plugin_processing );
93
+
94
+ if ( $btn.hasClass( 'status-inactive' ) ) {
95
+ // Activate.
96
+ task = 'about_plugin_activate';
97
+ cssClass = 'status-active button button-secondary disabled';
98
+ statusText = wp_mail_smtp_about.plugin_active;
99
+ buttonText = wp_mail_smtp_about.plugin_activated;
100
+ errorText = wp_mail_smtp_about.plugin_activate;
101
+
102
+ } else if ( $btn.hasClass( 'status-download' ) ) {
103
+ // Install & Activate.
104
+ task = 'about_plugin_install';
105
+ cssClass = 'status-active button disabled';
106
+ statusText = wp_mail_smtp_about.plugin_active;
107
+ buttonText = wp_mail_smtp_about.plugin_activated;
108
+ errorText = wp_mail_smtp_about.plugin_activate;
109
+
110
+ } else {
111
+ return;
112
+ }
113
+
114
+ // Setup ajax POST data.
115
+ var data = {
116
+ action: 'wp_mail_smtp_ajax',
117
+ task: task,
118
+ nonce : wp_mail_smtp_about.nonce,
119
+ plugin: plugin
120
+ };
121
+
122
+ $.post( wp_mail_smtp_about.ajax_url, data, function( res ) {
123
+ var is_install_successful;
124
+
125
+ if ( res.success ) {
126
+ is_install_successful = true;
127
+ if ( 'about_plugin_install' === task ) {
128
+ $btn.attr( 'data-plugin', res.data.basename );
129
+ successText = res.data.msg;
130
+ if ( ! res.data.is_activated ) {
131
+ cssClass = 'button';
132
+ statusText = wp_mail_smtp_about.plugin_inactive;
133
+ buttonText = wp_mail_smtp_about.plugin_activate;
134
+ }
135
+ } else {
136
+ successText = res.data;
137
+ }
138
+ $plugin.find( '.actions' ).append( '<div class="msg success">'+successText+'</div>' );
139
+ $plugin.find( 'span.status-label' )
140
+ .removeClass( 'status-active status-inactive status-download' )
141
+ .addClass( cssClass )
142
+ .removeClass( 'button button-primary button-secondary disabled' )
143
+ .text( statusText );
144
+ $btn
145
+ .removeClass( 'status-active status-inactive status-download' )
146
+ .removeClass( 'button button-primary button-secondary disabled' )
147
+ .addClass( cssClass ).html( buttonText );
148
+ } else {
149
+ is_install_successful = false;
150
+
151
+ if (
152
+ res.hasOwnProperty( 'data' ) &&
153
+ res.data.hasOwnProperty( 0 ) &&
154
+ res.data[ 0 ].hasOwnProperty( 'code' ) &&
155
+ res.data[ 0 ].code === 'download_failed'
156
+ ) {
157
+ // Specific server-returned error.
158
+ $plugin.find( '.actions' ).append( '<div class="msg error">' + wp_mail_smtp_about.plugin_install_error + '</div>' );
159
+ }
160
+ else {
161
+ // Generic error.
162
+ $plugin.find( '.actions' ).append( '<div class="msg error">' + res.data + '</div>' );
163
+ }
164
+
165
+ $btn.html( wp_mail_smtp_about.plugin_download_btn );
166
+ }
167
+
168
+ if ( is_install_successful ) {
169
+ $btn.prop( 'disabled', false );
170
+ }
171
+ $btn.removeClass( 'loading' );
172
+
173
+ // Automatically clear plugin messages after 3 seconds.
174
+ setTimeout( function () {
175
+ $( '.plugin-item .msg' ).remove();
176
+ }, 3000 );
177
+
178
+ }).fail( function( xhr ) {
179
+ console.log( xhr.responseText );
180
+ });
181
+ });
182
+ }
183
+ };
184
+
185
+ // Provide access to public functions/properties.
186
+ return app;
187
+ })( document, window, jQuery );
188
+
189
+ // Initialize.
190
+ WPMailSMTP.Admin.About.init();
assets/languages/wp-mail-smtp.pot CHANGED
@@ -1,13 +1,13 @@
1
msgid ""
2
msgstr ""
3
- "Project-Id-Version: WP Mail SMTP 1.7.1\n"
4
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
5
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
"Language-Team: LANGUAGE <LL@li.org>\n"
7
"MIME-Version: 1.0\n"
8
"Content-Type: text/plain; charset=UTF-8\n"
9
"Content-Transfer-Encoding: 8bit\n"
10
- "POT-Creation-Date: 2019-11-11T16:59:39+02:00\n"
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
"X-Generator: WP-CLI 2.2.0\n"
13
"X-Domain: wp-mail-smtp\n"
@@ -478,7 +478,7 @@ msgid "Check this if you would like to remove ALL WP Mail SMTP data upon plugin
478
msgstr ""
479
480
#: src/Admin/Pages/MiscTab.php:215
481
- #: src/Admin/Pages/SettingsTab.php:533
482
msgid "Settings were successfully saved."
483
msgstr ""
484
@@ -578,93 +578,98 @@ msgstr ""
578
msgid "Mailer"
579
msgstr ""
580
581
- #: src/Admin/Pages/SettingsTab.php:265
582
msgid "Dismiss this notice"
583
msgstr ""
584
585
- #: src/Admin/Pages/SettingsTab.php:307
586
msgid "You're using WP Mail SMTP Lite - no license needed. Enjoy!"
587
msgstr ""
588
589
#. translators: %s - WPMailSMTP.com upgrade URL.
590
- #: src/Admin/Pages/SettingsTab.php:313
591
msgid "To unlock more features consider <strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wp-mail-smtp-upgrade-modal\">upgrading to PRO</a></strong>."
592
msgstr ""
593
594
- #: src/Admin/Pages/SettingsTab.php:332
595
msgid "As a valued WP Mail SMTP Lite user you receive <strong>20% off</strong>, automatically applied at checkout!"
596
msgstr ""
597
598
- #: src/Admin/Pages/SettingsTab.php:393
599
msgid "Get WP Mail SMTP Pro and Unlock all the Powerful Features"
600
msgstr ""
601
602
- #: src/Admin/Pages/SettingsTab.php:397
603
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."
604
msgstr ""
605
606
- #: src/Admin/Pages/SettingsTab.php:401
607
msgid "We know that you will truly love WP Mail SMTP. It's used by over 1,000,000 websites."
608
msgstr ""
609
610
- #: src/Admin/Pages/SettingsTab.php:404
611
msgid "Pro Features:"
612
msgstr ""
613
614
- #: src/Admin/Pages/SettingsTab.php:408
615
msgid "Manage Notifications - control which emails your site sends"
616
msgstr ""
617
618
- #: src/Admin/Pages/SettingsTab.php:409
619
msgid "Email Logging - keep track of every email sent from your site"
620
msgstr ""
621
622
- #: src/Admin/Pages/SettingsTab.php:410
623
msgid "Office 365 - send emails using your Office 365 account"
624
msgstr ""
625
626
- #: src/Admin/Pages/SettingsTab.php:411
627
msgid "Amazon SES - harness the power of AWS"
628
msgstr ""
629
630
- #: src/Admin/Pages/SettingsTab.php:412
631
msgid "Outlook.com - send emails using your Outlook.com account"
632
msgstr ""
633
634
- #: src/Admin/Pages/SettingsTab.php:413
635
msgid "Access to our world class support team"
636
msgstr ""
637
638
- #: src/Admin/Pages/SettingsTab.php:416
639
msgid "White Glove Setup - sit back and relax while we handle everything for you"
640
msgstr ""
641
642
- #: src/Admin/Pages/SettingsTab.php:417
643
msgid "Install WP Mail SMTP Pro plugin"
644
msgstr ""
645
646
- #: src/Admin/Pages/SettingsTab.php:418
647
msgid "Set up domain name verification (DNS)"
648
msgstr ""
649
650
- #: src/Admin/Pages/SettingsTab.php:419
651
msgid "Configure Mailgun service"
652
msgstr ""
653
654
- #: src/Admin/Pages/SettingsTab.php:420
655
msgid "Set up WP Mail SMTP Pro plugin"
656
msgstr ""
657
658
- #: src/Admin/Pages/SettingsTab.php:421
659
msgid "Test and verify email delivery"
660
msgstr ""
661
662
#. translators: %s - WPMailSMTP.com URL.
663
- #: src/Admin/Pages/SettingsTab.php:429
664
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get WP Mail SMTP Pro Today and Unlock all the Powerful Features &raquo;</a>"
665
msgstr ""
666
667
- #: src/Admin/Pages/SettingsTab.php:447
668
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span class=\"price-off\">20% off regular price</span>, automatically applied at checkout."
669
msgstr ""
670
@@ -1445,9 +1450,44 @@ msgid "We're sorry, the Microsoft Outlook mailer is not available on your plan.
1445
msgstr ""
1446
1447
#: src/Providers/Pepipost/Options.php:25
1448
msgid "Pepipost"
1449
msgstr ""
1450
1451
#: src/Providers/Sendgrid/Options.php:25
1452
msgid "SendGrid"
1453
msgstr ""
@@ -1457,11 +1497,6 @@ msgstr ""
1457
msgid "%1$sSendGrid%2$s is one of the leading transactional email services, sending over 35 billion emails every month. They provide users 100 free emails per day.<br><br>Read our %3$sSendGrid documentation%4$s to learn how to set up SendGrid and improve your email deliverability."
1458
msgstr ""
1459
1460
- #: src/Providers/Sendgrid/Options.php:57
1461
- #: src/Providers/Sendinblue/Options.php:88
1462
- msgid "API Key"
1463
- msgstr ""
1464
-
1465
#. translators: %s - API key link.
1466
#: src/Providers/Sendgrid/Options.php:76
1467
msgid "Follow this link to get an API Key from SendGrid: %s."
@@ -1478,7 +1513,7 @@ msgstr ""
1478
1479
#. translators: %1$s - URL to sendinblue.com site.
1480
#: src/Providers/Sendinblue/Options.php:31
1481
- msgid "<strong><a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue</a> is our recommended transactional email service.</strong> Founded in 2012, they serve 80,000+ growing companies around the world and send over 30 million emails each day. They understand that transactional emails are the heart of your customer relationships. Their email deliverability experts are constantly at work optimizing the reliability and speed of their SMTP infrastructure. Sendinblue provides users 300 free emails per day."
1482
msgstr ""
1483
1484
#. translators: %2$s - URL to wpmailsmtp.com doc.
@@ -1494,11 +1529,6 @@ msgstr ""
1494
msgid "Sendinblue"
1495
msgstr ""
1496
1497
- #. translators: %s - sendinblue.com link to get an API Key.
1498
- #: src/Providers/Sendinblue/Options.php:107
1499
- msgid "Follow this link to get an API Key: %s."
1500
- msgstr ""
1501
-
1502
#: src/Providers/Sendinblue/Options.php:109
1503
msgid "Get v3 API Key"
1504
msgstr ""
@@ -1662,6 +1692,6 @@ msgstr ""
1662
msgid "Your site is running an outdated version of PHP that is no longer supported and may cause issues with %1$s. %2$sRead more%3$s for additional information."
1663
msgstr ""
1664
1665
- #: wp_mail_smtp.php:130
1666
msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro."
1667
msgstr ""
1
msgid ""
2
msgstr ""
3
+ "Project-Id-Version: WP Mail SMTP 1.8.0\n"
4
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
5
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
"Language-Team: LANGUAGE <LL@li.org>\n"
7
"MIME-Version: 1.0\n"
8
"Content-Type: text/plain; charset=UTF-8\n"
9
"Content-Transfer-Encoding: 8bit\n"
10
+ "POT-Creation-Date: 2019-12-12T16:09:57+02:00\n"
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
"X-Generator: WP-CLI 2.2.0\n"
13
"X-Domain: wp-mail-smtp\n"
478
msgstr ""
479
480
#: src/Admin/Pages/MiscTab.php:215
481
+ #: src/Admin/Pages/SettingsTab.php:542
482
msgid "Settings were successfully saved."
483
msgstr ""
484
578
msgid "Mailer"
579
msgstr ""
580
581
+ #: src/Admin/Pages/SettingsTab.php:241
582
+ #: src/Admin/Pages/SettingsTab.php:245
583
+ msgid "Suggest a Mailer"
584
+ msgstr ""
585
+
586
+ #: src/Admin/Pages/SettingsTab.php:274
587
msgid "Dismiss this notice"
588
msgstr ""
589
590
+ #: src/Admin/Pages/SettingsTab.php:316
591
msgid "You're using WP Mail SMTP Lite - no license needed. Enjoy!"
592
msgstr ""
593
594
#. translators: %s - WPMailSMTP.com upgrade URL.
595
+ #: src/Admin/Pages/SettingsTab.php:322
596
msgid "To unlock more features consider <strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wp-mail-smtp-upgrade-modal\">upgrading to PRO</a></strong>."
597
msgstr ""
598
599
+ #: src/Admin/Pages/SettingsTab.php:341
600
msgid "As a valued WP Mail SMTP Lite user you receive <strong>20% off</strong>, automatically applied at checkout!"
601
msgstr ""
602
603
+ #: src/Admin/Pages/SettingsTab.php:402
604
msgid "Get WP Mail SMTP Pro and Unlock all the Powerful Features"
605
msgstr ""
606
607
+ #: src/Admin/Pages/SettingsTab.php:406
608
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."
609
msgstr ""
610
611
+ #: src/Admin/Pages/SettingsTab.php:410
612
msgid "We know that you will truly love WP Mail SMTP. It's used by over 1,000,000 websites."
613
msgstr ""
614
615
+ #: src/Admin/Pages/SettingsTab.php:413
616
msgid "Pro Features:"
617
msgstr ""
618
619
+ #: src/Admin/Pages/SettingsTab.php:417
620
msgid "Manage Notifications - control which emails your site sends"
621
msgstr ""
622
623
+ #: src/Admin/Pages/SettingsTab.php:418
624
msgid "Email Logging - keep track of every email sent from your site"
625
msgstr ""
626
627
+ #: src/Admin/Pages/SettingsTab.php:419
628
msgid "Office 365 - send emails using your Office 365 account"
629
msgstr ""
630
631
+ #: src/Admin/Pages/SettingsTab.php:420
632
msgid "Amazon SES - harness the power of AWS"
633
msgstr ""
634
635
+ #: src/Admin/Pages/SettingsTab.php:421
636
msgid "Outlook.com - send emails using your Outlook.com account"
637
msgstr ""
638
639
+ #: src/Admin/Pages/SettingsTab.php:422
640
msgid "Access to our world class support team"
641
msgstr ""
642
643
+ #: src/Admin/Pages/SettingsTab.php:425
644
msgid "White Glove Setup - sit back and relax while we handle everything for you"
645
msgstr ""
646
647
+ #: src/Admin/Pages/SettingsTab.php:426
648
msgid "Install WP Mail SMTP Pro plugin"
649
msgstr ""
650
651
+ #: src/Admin/Pages/SettingsTab.php:427
652
msgid "Set up domain name verification (DNS)"
653
msgstr ""
654
655
+ #: src/Admin/Pages/SettingsTab.php:428
656
msgid "Configure Mailgun service"
657
msgstr ""
658
659
+ #: src/Admin/Pages/SettingsTab.php:429
660
msgid "Set up WP Mail SMTP Pro plugin"
661
msgstr ""
662
663
+ #: src/Admin/Pages/SettingsTab.php:430
664
msgid "Test and verify email delivery"
665
msgstr ""
666
667
#. translators: %s - WPMailSMTP.com URL.
668
+ #: src/Admin/Pages/SettingsTab.php:438
669
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get WP Mail SMTP Pro Today and Unlock all the Powerful Features &raquo;</a>"
670
msgstr ""
671
672
+ #: src/Admin/Pages/SettingsTab.php:456
673
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span class=\"price-off\">20% off regular price</span>, automatically applied at checkout."
674
msgstr ""
675
1450
msgstr ""
1451
1452
#: src/Providers/Pepipost/Options.php:25
1453
+ msgid "Pepipost SMTP"
1454
+ msgstr ""
1455
+
1456
+ #. translators: %1$s - URL to pepipost.com site.
1457
+ #: src/Providers/PepipostAPI/Options.php:31
1458
+ msgid "<strong><a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost</a> is a recommended transactional email service.</strong> 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, then 100 emails per day."
1459
+ msgstr ""
1460
+
1461
+ #. translators: %1$s - URL to wpmailsmtp.com doc.
1462
+ #: src/Providers/PepipostAPI/Options.php:34
1463
+ msgid "Read our <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost documentation</a> to learn how to configure Pepipost and improve your email deliverability."
1464
+ msgstr ""
1465
+
1466
+ #: src/Providers/PepipostAPI/Options.php:53
1467
+ msgid "Get Pepipost Now (Free)"
1468
+ msgstr ""
1469
+
1470
+ #: src/Providers/PepipostAPI/Options.php:61
1471
msgid "Pepipost"
1472
msgstr ""
1473
1474
+ #: src/Providers/PepipostAPI/Options.php:88
1475
+ #: src/Providers/Sendgrid/Options.php:57
1476
+ #: src/Providers/Sendinblue/Options.php:88
1477
+ msgid "API Key"
1478
+ msgstr ""
1479
+
1480
+ #. translators: %s - pepipost.com link to get an API Key.
1481
+ #. translators: %s - sendinblue.com link to get an API Key.
1482
+ #: src/Providers/PepipostAPI/Options.php:107
1483
+ #: src/Providers/Sendinblue/Options.php:107
1484
+ msgid "Follow this link to get an API Key: %s."
1485
+ msgstr ""
1486
+
1487
+ #: src/Providers/PepipostAPI/Options.php:109
1488
+ msgid "Get the API Key"
1489
+ msgstr ""
1490
+
1491
#: src/Providers/Sendgrid/Options.php:25
1492
msgid "SendGrid"
1493
msgstr ""
1497
msgid "%1$sSendGrid%2$s is one of the leading transactional email services, sending over 35 billion emails every month. They provide users 100 free emails per day.<br><br>Read our %3$sSendGrid documentation%4$s to learn how to set up SendGrid and improve your email deliverability."
1498
msgstr ""
1499
1500
#. translators: %s - API key link.
1501
#: src/Providers/Sendgrid/Options.php:76
1502
msgid "Follow this link to get an API Key from SendGrid: %s."
1513
1514
#. translators: %1$s - URL to sendinblue.com site.
1515
#: src/Providers/Sendinblue/Options.php:31
1516
+ msgid "<strong><a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue</a> is a recommended transactional email service.</strong> Founded in 2012, they serve 80,000+ growing companies around the world and send over 30 million emails each day. They understand that transactional emails are the heart of your customer relationships. Their email deliverability experts are constantly at work optimizing the reliability and speed of their SMTP infrastructure. Sendinblue provides users 300 free emails per day."
1517
msgstr ""
1518
1519
#. translators: %2$s - URL to wpmailsmtp.com doc.
1529
msgid "Sendinblue"
1530
msgstr ""
1531
1532
#: src/Providers/Sendinblue/Options.php:109
1533
msgid "Get v3 API Key"
1534
msgstr ""
1692
msgid "Your site is running an outdated version of PHP that is no longer supported and may cause issues with %1$s. %2$sRead more%3$s for additional information."
1693
msgstr ""
1694
1695
+ #: wp_mail_smtp.php:131
1696
msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro."
1697
msgstr ""
readme.txt CHANGED
@@ -1,377 +1,395 @@
1
- === WP Mail SMTP by WPForms ===
2
- Contributors: wpforms, jaredatch, smub, slaFFik
3
- Tags: smtp, wp mail smtp, wordpress smtp, gmail smtp, sendgrid smtp, mailgun smtp, mail, mailer, phpmailer, wp_mail, email, mailgun, sengrid, gmail, wp smtp
4
- Requires at least: 4.9
5
- Tested up to: 5.3
6
- Stable tag: 1.7.1
7
- Requires PHP: 5.3
8
-
9
- The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
10
-
11
- == Description ==
12
-
13
- ### WordPress Mail SMTP Plugin
14
-
15
- Having problems with your WordPress site not sending emails? You're not alone. Over 1 million websites use WP Mail SMTP to send their emails reliably.
16
-
17
- Our goal is to make email deliverability easy and reliable. We want to ensure your emails reach the inbox.
18
-
19
- WP Mail SMTP fixes your email deliverability by reconfiguring WordPress to use a proper SMTP provider when sending emails.
20
-
21
- = What is SMTP? =
22
-
23
- SMTP (Simple Mail Transfer Protocol) is an industry standard for sending emails. Proper SMTP configuration helps increase email deliverability by using authentication.
24
-
25
- Popular email clients like Gmail, Yahoo, and Office 365 are in a constant battle with email spammers. One of the things they look at is if an email is originating from the location it claims to be originating from.
26
-
27
- If the proper authentication isn't there, then emails either go in the SPAM folder or worst, don't get delivered at all.
28
-
29
- This is a problem for a lot of WordPress sites because by default, WordPress uses the PHP mail function to send emails generated by WordPress or any contact form plugin like <a href="https://wpforms.com/" rel="friend">WPForms</a>.
30
-
31
- The issue is that most <a href"http://www.wpbeginner.com/wordpress-hosting/" rel="friend">WordPress hosting companies</a> don't have their servers properly configured for sending PHP emails.
32
-
33
- The combination of two causes your WordPress emails to not get delivered.
34
-
35
- = How does WP Mail SMTP work? =
36
-
37
- WP Mail SMTP plugin easily resolves email delivery problems by improving and changing how your WordPress site sends email. We reconfigure the `wp_mail()` function to either use proper SMTP host credentials or leverage a built-in SMTP mail provider.
38
-
39
- When using one of our built-in SMTP mail provider integrations (recommended), emails are sent using the provider's direct API. This means even if your web host is blocking SMTP ports, your emails still send successfully.
40
-
41
- This helps you fix all WordPress not sending email issues.
42
-
43
- WP Mail SMTP plugin includes many different SMTP setup options:
44
-
45
- 1. Sendinblue SMTP <strong>(Recommended)</strong>
46
- 2. Mailgun SMTP
47
- 3. SendGrid SMTP
48
- 4. Gmail SMTP
49
- 5. Microsoft SMTP (Outlook.com and Office 365) <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">[Pro]</a>
50
- 6. Amazon SES SMTP <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">[Pro]</a>
51
- 7. All Other SMTP
52
-
53
- For all options, you can specify the "from name" and "email address" for outgoing emails.
54
-
55
- Instead of having users use different SMTP plugins and workflows for different SMTP providers, we decided to bring it all in one. This is what makes WP Mail SMTP, the best SMTP solution for WordPress.
56
-
57
- = Sendinblue SMTP =
58
-
59
- Sendinblue is our recommended transactional email service.
60
-
61
- They serve 80,000+ growing companies around the world and send over 30 million emails each day.
62
-
63
- Their email deliverability experts are constantly at work optimizing the reliability and speed of their SMTP infrastructure. Sendinblue provides users 300 free emails per day.
64
-
65
- Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-wp-mail-smtp/" rel="friend">Sendinblue documentation</a> for more details.
66
-
67
- = Mailgun SMTP =
68
-
69
- Mailgun SMTP is a popular SMTP service provider that allows you to send large quantities of emails. They allow you to send your first 10,000 emails for free every month.
70
-
71
- WP Mail SMTP plugin offers a native integration with MailGun. All you have to do is connect your Mailgun account, and you will improve your email deliverability.
72
-
73
- Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-mailgun-mailer-in-wp-mail-smtp/" rel="friend">Mailgun documentation</a> for more details.
74
-
75
- = SendGrid SMTP =
76
-
77
- SendGrid has a free SMTP plan that you can use to send up to 100 emails per day. With our native SendGrid SMTP integration, you can easily and securely set up SendGrid SMTP on your WordPress site.
78
-
79
- Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-wp-mail-smtp/" rel="friend">SendGrid documentation</a> for more details.
80
-
81
- = Gmail SMTP =
82
-
83
- Often bloggers and small business owners don't want to use third-party SMTP services. Well you can use your Gmail or G Suite account for SMTP emails.
84
-
85
- This allows you to use your <a href="http://www.wpbeginner.com/beginners-guide/how-to-setup-a-professional-email-address-with-gmail-and-google-apps/" rel="friend">professional email address</a> and improve email deliverability.
86
-
87
- Unlike other Gmail SMTP plugins, our Gmail SMTP option uses OAuth to authenticate your Google account, keeping your login information 100% secure.
88
-
89
- Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/" rel="friend">Gmail documentation</a> for more details.
90
-
91
- = Microsoft SMTP (Outlook.com and Office 365) =
92
-
93
- Many business use Outlook.com or Office 365 to their to power their email. For those users, the Microsoft mailer can be a great option. This integration allows you to use your existing Outlook.com or Office 365 account to send your emails reliably.
94
-
95
- = Amazon SES SMTP =
96
-
97
- Advanced or technical users can harness the power of Amazon AWS (Amazon Web Services) with the Amazon SES mailer. With this integration, you can send a high volume of emails at a very reasonable rate.
98
-
99
- Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-amazon-ses-mailer-in-wp-mail-smtp/" rel="friend">Amazon SES documentation</a> for more details.
100
-
101
- = Other SMTP =
102
-
103
- WP Mail SMTP plugin also works with all major email services such as Gmail, Yahoo, Outlook, Microsoft Live, and any other email sending service that offers SMTP.
104
-
105
- You can set the following options:
106
-
107
- * Specify an SMTP host.
108
- * Specify an SMTP port.
109
- * Choose SSL / TLS encryption.
110
- * Choose to use SMTP authentication or not.
111
- * Specify an SMTP username and password.
112
-
113
- To see recommended settings for the popular services as well as troubleshooting tips, check out our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/" rel="friend">SMTP documentation</a>.
114
-
115
- We hope that you find WP Mail SMTP plugin helpful!
116
-
117
- ### WP Mail SMTP PRO
118
-
119
- In addition to native Microsoft and Amazon SES integrations, WP Mail SMTP Pro provides access to many other powerful features and services.
120
-
121
- <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">Click here to purchase WP Mail SMTP Pro now!</a>
122
-
123
- = Email Log =
124
-
125
- Email Logging lets you log and view all emails sent from your site. Email logs are helpful for storing emails for your records, auditing outgoing emails, and debugging during site development.
126
-
127
- = Manage WordPress Emails and Notifications =
128
-
129
- The Manage Notification feature gives you full control over which email notifications WordPress sends. This means you can disable different WordPress notification emails. Don't want to receive emails when new users are created? No problem, turn it off.
130
-
131
- = Expert Support =
132
-
133
- We provide <a href="https://wordpress.org/support/topic/wp-mail-smtp-support-policy/">limited support</a> for the WP Mail SMTP plugin on the WordPress.org forums. Access to our world class one-on-one email support is available to <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">WP Mail SMTP Pro</a> users.
134
-
135
- = White Glove Setup =
136
-
137
- Our White Glove Setup service is a great option that anyone can benefit from. Whether you don't have the time or maybe you feel a bit in over your head - we've got you covered.
138
-
139
- You can sit back and relax while we set up everything for you. White glove setup includes WP Mail SMTP plugin installation and setup, configuration adjustments to your DNS for proper email domain name verification, Mailgun setup, and final testing to confirm everything is passing with flying colors.
140
-
141
- ### Security
142
-
143
- The WP Mail SMTP team takes security very seriously. Not only does the plugin follow all security best practices, but we have several options available to ensure your site is safe and secure.
144
-
145
- - Direct SMTP mailer integrations (recommended), such as Google and Mailgun, use the official provider APIs. This means you never enter your username or password in the plugin settings and these credentials are not stored in the database. Instead, we use tokens or API keys which are much more secure.
146
-
147
- - When using Other SMTP mailer, we provide the option to insert your password in your `wp-config.php` file, so it's not visible in your WordPress settings or saved in the database.
148
-
149
- ### Credits
150
-
151
- WP Mail SMTP plugin was originally created by Callum Macdonald. It is now owned and maintained by the team behind <a href="https://wpforms.com/" rel="friend">WPForms</a> - the best drag & drop form builder for WordPress.
152
-
153
- You can try the <a href="https://wordpress.org/plugins/wpforms-lite/" rel="friend">free version of WPForms plugin</a> to see why it's the best in the market.
154
-
155
- ### What's Next
156
-
157
- If you like this plugin, then consider checking out our other projects:
158
-
159
- * <a href="https://optinmonster.com/" rel="friend" title="OptinMonster">OptinMonster</a> - Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
160
- * <a href="https://www.monsterinsights.com/" rel="friend" title="MonsterInsights">MonsterInsights</a> - See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
161
- * <a href="https://www.seedprod.com/" rel="friend" title="SeedProd">SeedProd</a> - Jumpstart your website with the #1 Coming Soon & Maintenance Mode Plugin for WordPress.
162
-
163
- Visit <a href="http://www.wpbeginner.com/" rel="friend" title="WPBeginner">WPBeginner</a> to learn from our <a href="http://www.wpbeginner.com/category/wp-tutorials/" rel="friend" title="WordPress Tutorials">WordPress Tutorials</a> and find out about other <a href="http://www.wpbeginner.com/category/plugins/" rel="friend" title="Best WordPress Plugins">best WordPress plugins</a>.
164
-
165
- == Installation ==
166
-
167
- 1. Install WP Mail SMTP by WPForms either via the WordPress.org plugin repository or by uploading the files to your server. (See instructions on <a href="http://www.wpbeginner.com/beginners-guide/step-by-step-guide-to-install-a-wordpress-plugin-for-beginners/" rel="friend">how to install a WordPress plugin</a>)
168
- 2. Activate WP Mail SMTP by WPForms.
169
- 3. Navigate to the Settings area of WP Mail SMTP in the WordPress admin.
170
- 4. Choose your SMTP option (Mailgun SMTP, SendGrid SMTP, Gmail SMTP, or Other SMTP) and follow the instructions to set it up.
171
- 5. Need more help? Get support with <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend" title="WPForms">WP Mail SMTP PRO</a>.
172
-
173
- == Frequently Asked Questions ==
174
-
175
- = Can I use this plugin to send email via Gmail, G Suite, Outlook.com, Office 365, Hotmail, Yahoo, or AOL SMTP? =
176
-
177
- Yes! We have extensive documentation that covers setting up SMTP most popular email services.
178
-
179
- <a href="https://wpforms.com/docs/how-to-set-up-smtp-using-the-wp-mail-smtp-plugin/" rel="friend">Read our docs</a> to see the correct SMTP settings for each service.
180
-
181
- = Help! I need support or have an issue. =
182
-
183
- Please read <a href="https://wordpress.org/support/topic/wp-mail-smtp-support-policy/">our support policy</a> for more information.
184
-
185
- Limited support is available for WP Mail SMTP users via WordPress.org support forums.
186
-
187
- Email support and set up assistance is available to WP Mail SMTP Pro users.
188
-
189
- = I found a bug, now what? =
190
-
191
- If you've stumbled upon a bug, the best place to report it is in the <a href="https://github.com/awesomemotive/wp-mail-smtp">WP Mail SMTP GitHub repository</a>. GitHub is where the plugin is actively developed, and posting there will get your issue quickly seen by our developers (myself and Slava). Once posted, we'll review your bug report and triage the bug. When creating an issue, the more details you can add to your report, the faster the bug can be solved.
192
-
193
- = Can you add feature x, y or z to the plugin? =
194
-
195
- Short answer: maybe.
196
-
197
- By all means please contact us to discuss features or options you'd like to see added to the plugin. We can't guarantee to add all of them, but we will consider all sensible requests. We can be contacted here:
198
- <a href="https://wpmailsmtp.com/contact/" rel="friend">https://wpmailsmtp.com/contact/</a>
199
-
200
- == Screenshots ==
201
-
202
- 1. WP Mail SMTP Settings page
203
- 2. Gmail / G Suite settings
204
- 3. Mailgun settings
205
- 4. SendGrid settings
206
- 5. SMTP settings
207
- 6. Send a Test Email
208
-
209
- == Changelog ==
210
-
211
- = 1.7.1 - 2019-11-11 =
212
- * Fixed: Compatibility with WordPress 5.3.
213
- * Fixed: `Processor::get_default_email()` always returns empty value when server incorrectly configured.
214
-
215
- = 1.7.0 - 2019-10-24 =
216
- * Added: Add a new constant `WPMS_DO_NOT_SEND` to block email sending.
217
- * Fixed: Default email (wordpress@example.com) rewriting in CLI mode.
218
- * Fixed: Incorrect conflicts detection with certain plugins.
219
- * Fixed: various typos in plugin settings.
220
-
221
- = 1.6.2 - 2019-09-02 =
222
- * Fixed: Race condition when loading with certain plugins, that send emails very early. Makes email delivery more reliable.
223
-
224
- = 1.6.0 - 2019-08-21 =
225
- * Added: New transactional mailer: Sendinblue.
226
- * Added: Educate users to use transactional mailers for better deliverability.
227
- * Added: New option and filter to disable admin area delivery error notices.
228
- * Changed: Hide private API key saved in the DB for API based mailers using `input[type=password]`.
229
- * Changed: Update links to various docs, pointing now to https://wpmailsmtp.com.
230
-
231
- = 1.5.2 - 2019-07-18 =
232
- * Fixed: "Redirect URI mismatch" error for "Gmail" mailer when trying to re-authorize an account that was initially created with version < v1.5.0.
233
- * Changed: Make "Authentication" setting in "Other SMTP" mailer ON by default for new users.
234
- * Changed: Mailers docs links now point to wpmailsmtp.com own site.
235
-
236
- = 1.5.1 - 2019-07-12 =
237
- * Fixed: Duplicated emails sent to the first recipient in a loop (and others not receiving their emails).
238
-
239
- = 1.5.0 - 2019-07-09 =
240
- * Added: Loсo plugin support.
241
- * Added: "About us" admin area page.
242
- * Added: Display in debug output a possible conflicting plugin existence.
243
- * Added: Lots of actions and filters to improve flexibility of the plugin.
244
- * Changed: Plugin menu is now top level.
245
- * Changed: Hide secrets/API keys in page DOM in plugin admin area.
246
- * Changed: Do not save constant values into the database when plugin settings are saved.
247
- * Changed: Lots of i18n improvements to support translation for both free and paid version of the plugin.
248
- * Changed: Gmail mailer - allow to change From Name email header.
249
- * Changed: Gmail mailer - display email used to create a connection.
250
- * Changed: WordPress 4.9 is the minimum WordPress version we support.
251
- * Fixed: X-Mailer header should be present in all emails.
252
- * Fixed: PHP notices when migrating under certain circumstances from 0.x version of the plugin.
253
- * Fixed: Options::get_group() now supports values set via constants.
254
-
255
- = 1.4.2 - 2019-03-23 =
256
- * Changed: Tested up to WordPress 5.1.x.
257
- * Changed: Removed TGMPA library.
258
-
259
- = 1.4.1 - 2018-12-03 =
260
- * Fixed: correctly process backslashes in SMTP passwords defined via constants.
261
- * Changed: allow to send a Test Email when Default (none) mailer is selected in plugin settings.
262
-
263
- = 1.4.0 - 2018-11-29 =
264
- * Added: New option: Do Not Send - block emails from being sent.
265
- * Added: New option: Send HTML or plain text emails when doing an Email Test.
266
- * Added: New option: Mailgun region selection - US and EU (US is default to preserve compatibility).
267
- * Fixed: Compatibility with WordPress 3.6+.
268
- * Fixed: Compatibility with WordPress 5.0.
269
- * Fixed: Constants usage is much more reliable now, works correctly on Multisite. Constants are global accross the whole network.
270
- * Fixed: Preserve multipart emails when using Sendgrid/Mailgun mailers (were converted to HTML-only).
271
- * Fixed: Security hardening.
272
- * Changed: Prefill Email Test page From field with currently logged in user email.
273
- * Changed: Update libraries: google/apiclient-services, google/auth, phpseclib/phpseclib and their dependecies.
274
- * Changed: Display in debug output cURL version if Gmail mailing failed.
275
- * Changed: Display in debug output OpenSSL version if it exists if Gmail/SMTP mailing failed.
276
- * Changed: Display plugin version in dashboard error notice when emailing failed.
277
- * Changed: Do not allow to send Test Email if mailer not configured properly.
278
- * Changed: Notify in plugin admin area that Gmail doesn't allow to redefine From Name/Email etc.
279
- * Changed: List all constants with descriptions in plugin main file: wp_mail_smtp.php.
280
- * Changed: TGMPA: change descriptions from "Required" to "Recommended" (labels were incorrect).
281
-
282
- = 1.3.3 - 2018-07-05 =
283
- * Fixed: Compatibility with other plugins, that are using Google Service or Google Client classes.
284
- * Changed: Optimize code loading.
285
-
286
- = 1.3.2 - 2018-06-29 =
287
- * Make sure that other plugins/themes are not conflicting with our TGMPA library.
288
-
289
- = 1.3.1 - 2018-06-29 =
290
- * Fixed: Other SMTP: Clear new Debug messages about failed email delivery on next successful email sending.
291
- * Fixed: Introduce conditional autoloader to workaround Gmail PHP 5.5 requirement and its library compatibility issues vs PHP 5.3+ minimum viable plugin version.
292
-
293
- = 1.3.0 - 2018-06-28 =
294
- * Added: New option: force From Email rewrite regardless of the current value.
295
- * Added: New option: force From Name rewrite regardless of the current value.
296
- * Added: New option: remove all plugin data on plugin uninstall (when user deletes it).
297
- * Added: Notify site admins in wp-admin area with a notice about last failed email delivery. Cleans up on successful delivery.
298
- * Added: Notify site admins in wp-admin area with a notice about possible compatibility issues with other SMTP and email delivery plugins.
299
- * Added: Improve User Debug Experience when doing Email Test - display helpful description and steps to fix the issue.
300
- * Added: New users: provide default SMTP Port value for new users based on Encryption selection.
301
- * Added: New users: notify about not configured plugin settings.
302
- * Added: New users: Recommend free WPForms Lite plugin for those who don't have it.
303
- * Added: SendGrid/Mailgun: provide support for multipart/alternative types of emails.
304
- * Added: Gmail: new button to remove connection and to connect a new Google account.
305
- * Fixed: Support plugin installation into /mu-plugins/ directory.
306
- * Fixed: SendGrid: required text/plain part of email being the first one - fixes plain text emails not having links.
307
- * Fixed: SendGrid and Mailgun: improperly sending plain text emails in html format.
308
- * Fixed: SMTP Debug output was empty in some cases.
309
- * Fixed: Compatibility with lots of other plugins that use Google Analytics library of different versions.
310
- * Fixed: "client_id is empty" is no more a problem, should be fixed.
311
- * Changed: For SendGrid and Mailgun allow using custom defined attachments names if present. Fallback to file name.
312
- * Changed: Gmail: switch to a wider scope to prevent possible issues in certain circumstances.
313
- * Changed: Remove whitespaces start/end of keys, secrets etc.
314
- * Changed: Improved helpful description tests of various options.
315
- * Changed: Improved plugin autoloading functionality.
316
-
317
- = 1.2.5 - 2017-02-05 =
318
- * Fixed: `Return path` can't be turned off.
319
- * Fixed: `Authentication` sometimes can't be turned off.
320
- * Fixed: `Auto TLS` sometimes can't be turned off.
321
- * Fixed: BCC support for Gmail was broken.
322
- * Fixed: Debug output improved to handle SELinux and grsecurity.
323
- * Fixed: Strip slashes from plugin settings (useful for `From Name` option).
324
- * Fixed: Change the way sanitization is done to prevent accidental removal of useful data.
325
- * Fixed: Plugin activation will not overwrite settings back to defaults.
326
- * Fixed: Properly set `Auto TLS` option on plugin activation.
327
- * Fixed: Providers autoloading improved for certain Windows-based installs.
328
- * Fixed: Use the proper path to load translations from plugin's `/languages` directory.
329
- * Changed: Do not autoload on each page request plugin settings from WordPress options table.
330
- * Changed: Do not autoload Pepipost classes unless it's saved as active mailer in settings.
331
-
332
- = 1.2.4 - 2017-01-28 =
333
- * Fixed: Improved escaping in debug reporting.
334
-
335
- = 1.2.3 - 2017-01-22 =
336
- * Fixed: Gmail tokens were reset after clicking Save Settings.
337
- * Fixed: Slight typo in Gmail success message.
338
-
339
- = 1.2.2 - 2017-12-27 =
340
- * Fixed: Correctly handle Mailgun debug message for an incorrect api key.
341
- * Fixed: Fatal error for Gmail and SMTP mailers with Nginx web-server (without Apache at all).
342
- * Changed: Update X-Mailer emails header to show the real sender with a mailer and plugin version.
343
-
344
- = 1.2.1 - 2017-12-21 =
345
- * Fixed: Failed SMTP connections generate fatal errors.
346
-
347
- = 1.2.0 - 2017-12-21 =
348
- * Fixed: Decrease the factual minimum WordPress version from 3.9 to 3.6.
349
- * Changed: Improve debug output for all mail providers.
350
-
351
- = 1.1.0 - 2017-12-18 =
352
- * Added: New option "Auto TLS" for SMTP mailer. Default is enabled. Migration routine for all sites.
353
- * Changed: Improve debug output - clear styles and context-aware content.
354
- * Changed: Better exceptions handling for Google authentication process.
355
- * Changed: Do not sanitize passwords, api keys etc - as they may contain special characters in certain order and sanitization will break those values.
356
- * Changed: Improve wording of some helpful texts inside plugin admin area.
357
- * Fixed: Do not include certain files in dependency libraries that are not used by Google mailer. This should stop flagging plugin by Wordfence and VaultPress.
358
- * Fixed: Constants usage is working now, to define the SMTP password, for example.
359
- * Fixed: Notice for default mailer.
360
-
361
- = 1.0.2 - 2017-12-12 =
362
- * Fixed: PHPMailer using incorrect SMTPSecure value.
363
-
364
- = 1.0.1 - 2017-12-12 =
365
- * Fixed: Global POST processing conflict.
366
-
367
- = 1.0.0 - 2017-12-12 =
368
- * Added: Automatic migration tool to move options from older storage format to a new one.
369
- * Added: Added Gmail & G Suite email provider integration - without your email and password.
370
- * Added: Added SendGrid email provider integration - using the API key only.
371
- * Added: Added Mailgun email provider integration - using the API key and configured domain only.
372
- * Added: New compatibility mode - for PHP 5.2 old plugin will be loaded, for PHP 5.3 and higher - new version of admin area and new functionality.
373
- * Changed: The new look of the admin area.
374
- * Changed: SMTP password field now has "password" type.
375
- * Changed: SMTP password field does not display real password at all when using constants in `wp-config.php` to define it.
376
- * Changed: Escape properly all translations.
377
- * Changed: More helpful test email content (with a mailer name).
1
+ === WP Mail SMTP by WPForms ===
2
+ Contributors: wpforms, jaredatch, smub, slaFFik
3
+ Tags: smtp, wp mail smtp, wordpress smtp, gmail smtp, sendgrid smtp, mailgun smtp, mail, mailer, phpmailer, wp_mail, email, mailgun, sengrid, gmail, wp smtp
4
+ Requires at least: 4.9
5
+ Tested up to: 5.3
6
+ Stable tag: 1.8.0
7
+ Requires PHP: 5.3
8
+
9
+ The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
10
+
11
+ == Description ==
12
+
13
+ ### WordPress Mail SMTP Plugin
14
+
15
+ Having problems with your WordPress site not sending emails? You're not alone. Over 1 million websites use WP Mail SMTP to send their emails reliably.
16
+
17
+ Our goal is to make email deliverability easy and reliable. We want to ensure your emails reach the inbox.
18
+
19
+ WP Mail SMTP fixes your email deliverability by reconfiguring WordPress to use a proper SMTP provider when sending emails.
20
+
21
+ = What is SMTP? =
22
+
23
+ SMTP (Simple Mail Transfer Protocol) is an industry standard for sending emails. Proper SMTP configuration helps increase email deliverability by using authentication.
24
+
25
+ Popular email clients like Gmail, Yahoo, and Office 365 are in a constant battle with email spammers. One of the things they look at is if an email is originating from the location it claims to be originating from.
26
+
27
+ If the proper authentication isn't there, then emails either go in the SPAM folder or worst, don't get delivered at all.
28
+
29
+ This is a problem for a lot of WordPress sites because by default, WordPress uses the PHP mail function to send emails generated by WordPress or any contact form plugin like <a href="https://wpforms.com/" rel="friend">WPForms</a>.
30
+
31
+ The issue is that most <a href"http://www.wpbeginner.com/wordpress-hosting/" rel="friend">WordPress hosting companies</a> don't have their servers properly configured for sending PHP emails.
32
+
33
+ The combination of two causes your WordPress emails to not get delivered.
34
+
35
+ = How does WP Mail SMTP work? =
36
+
37
+ WP Mail SMTP plugin easily resolves email delivery problems by improving and changing how your WordPress site sends email. We reconfigure the `wp_mail()` function to either use proper SMTP host credentials or leverage a built-in SMTP mail provider.
38
+
39
+ When using one of our built-in SMTP mail provider integrations (recommended), emails are sent using the provider's direct API. This means even if your web host is blocking SMTP ports, your emails still send successfully.
40
+
41
+ This helps you fix all WordPress not sending email issues.
42
+
43
+ WP Mail SMTP plugin includes many different SMTP setup options:
44
+
45
+ 1. Pepipost SMTP <strong>(Recommended)</strong>
46
+ 2. Sendinblue SMTP <strong>(Recommended)</strong>
47
+ 3. Mailgun SMTP
48
+ 4. SendGrid SMTP
49
+ 5. Gmail SMTP
50
+ 6. Microsoft SMTP (Outlook.com and Office 365) <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">[Pro]</a>
51
+ 7. Amazon SES SMTP <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">[Pro]</a>
52
+ 8. All Other SMTP
53
+
54
+ For all options, you can specify the "from name" and "email address" for outgoing emails.
55
+
56
+ Instead of having users use different SMTP plugins and workflows for different SMTP providers, we decided to bring it all in one. This is what makes WP Mail SMTP, the best SMTP solution for WordPress.
57
+
58
+ = Pepipost SMTP =
59
+
60
+ Pepipost is a recommended transactional email service.
61
+
62
+ Every month they delivers over 8 billion emails from 20,000+ customers.
63
+
64
+ Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever.
65
+ Pepipost provides users 30,000 emails the first 30 days, then 100 emails per day.
66
+
67
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-pepipost-mailer-in-wp-mail-smtp/" rel="friend">Pepipost documentation</a> for more details.
68
+
69
+ = Sendinblue SMTP =
70
+
71
+ Sendinblue is a recommended transactional email service.
72
+
73
+ They serve 80,000+ growing companies around the world and send over 30 million emails each day.
74
+
75
+ Their email deliverability experts are constantly at work optimizing the reliability and speed of their SMTP infrastructure. Sendinblue provides users 300 free emails per day.
76
+
77
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendinblue-mailer-in-wp-mail-smtp/" rel="friend">Sendinblue documentation</a> for more details.
78
+
79
+ = Mailgun SMTP =
80
+
81
+ Mailgun SMTP is a popular SMTP service provider that allows you to send large quantities of emails. They allow you to send your first 10,000 emails for free every month.
82
+
83
+ WP Mail SMTP plugin offers a native integration with MailGun. All you have to do is connect your Mailgun account, and you will improve your email deliverability.
84
+
85
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-mailgun-mailer-in-wp-mail-smtp/" rel="friend">Mailgun documentation</a> for more details.
86
+
87
+ = SendGrid SMTP =
88
+
89
+ SendGrid has a free SMTP plan that you can use to send up to 100 emails per day. With our native SendGrid SMTP integration, you can easily and securely set up SendGrid SMTP on your WordPress site.
90
+
91
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-sendgrid-mailer-in-wp-mail-smtp/" rel="friend">SendGrid documentation</a> for more details.
92
+
93
+ = Gmail SMTP =
94
+
95
+ Often bloggers and small business owners don't want to use third-party SMTP services. Well you can use your Gmail or G Suite account for SMTP emails.
96
+
97
+ This allows you to use your <a href="http://www.wpbeginner.com/beginners-guide/how-to-setup-a-professional-email-address-with-gmail-and-google-apps/" rel="friend">professional email address</a> and improve email deliverability.
98
+
99
+ Unlike other Gmail SMTP plugins, our Gmail SMTP option uses OAuth to authenticate your Google account, keeping your login information 100% secure.
100
+
101
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/" rel="friend">Gmail documentation</a> for more details.
102
+
103
+ = Microsoft SMTP (Outlook.com and Office 365) =
104
+
105
+ Many business use Outlook.com or Office 365 to their to power their email. For those users, the Microsoft mailer can be a great option. This integration allows you to use your existing Outlook.com or Office 365 account to send your emails reliably.
106
+
107
+ = Amazon SES SMTP =
108
+
109
+ Advanced or technical users can harness the power of Amazon AWS (Amazon Web Services) with the Amazon SES mailer. With this integration, you can send a high volume of emails at a very reasonable rate.
110
+
111
+ Read our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-amazon-ses-mailer-in-wp-mail-smtp/" rel="friend">Amazon SES documentation</a> for more details.
112
+
113
+ = Other SMTP =
114
+
115
+ WP Mail SMTP plugin also works with all major email services such as Gmail, Yahoo, Outlook, Microsoft Live, and any other email sending service that offers SMTP.
116
+
117
+ You can set the following options:
118
+
119
+ * Specify an SMTP host.
120
+ * Specify an SMTP port.
121
+ * Choose SSL / TLS encryption.
122
+ * Choose to use SMTP authentication or not.
123
+ * Specify an SMTP username and password.
124
+
125
+ To see recommended settings for the popular services as well as troubleshooting tips, check out our <a href="https://wpmailsmtp.com/docs/how-to-set-up-the-other-smtp-mailer-in-wp-mail-smtp/" rel="friend">SMTP documentation</a>.
126
+
127
+ We hope that you find WP Mail SMTP plugin helpful!
128
+
129
+ ### WP Mail SMTP PRO
130
+
131
+ In addition to native Microsoft and Amazon SES integrations, WP Mail SMTP Pro provides access to many other powerful features and services.
132
+
133
+ <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">Click here to purchase WP Mail SMTP Pro now!</a>
134
+
135
+ = Email Log =
136
+
137
+ Email Logging lets you log and view all emails sent from your site. Email logs are helpful for storing emails for your records, auditing outgoing emails, and debugging during site development.
138
+
139
+ = Manage WordPress Emails and Notifications =
140
+
141
+ The Manage Notification feature gives you full control over which email notifications WordPress sends. This means you can disable different WordPress notification emails. Don't want to receive emails when new users are created? No problem, turn it off.
142
+
143
+ = Expert Support =
144
+
145
+ We provide <a href="https://wordpress.org/support/topic/wp-mail-smtp-support-policy/">limited support</a> for the WP Mail SMTP plugin on the WordPress.org forums. Access to our world class one-on-one email support is available to <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend">WP Mail SMTP Pro</a> users.
146
+
147
+ = White Glove Setup =
148
+
149
+ Our White Glove Setup service is a great option that anyone can benefit from. Whether you don't have the time or maybe you feel a bit in over your head - we've got you covered.
150
+
151
+ You can sit back and relax while we set up everything for you. White glove setup includes WP Mail SMTP plugin installation and setup, configuration adjustments to your DNS for proper email domain name verification, Mailgun setup, and final testing to confirm everything is passing with flying colors.
152
+
153
+ ### Security
154
+
155
+ The WP Mail SMTP team takes security very seriously. Not only does the plugin follow all security best practices, but we have several options available to ensure your site is safe and secure.
156
+
157
+ - Direct SMTP mailer integrations (recommended), such as Google and Mailgun, use the official provider APIs. This means you never enter your username or password in the plugin settings and these credentials are not stored in the database. Instead, we use tokens or API keys which are much more secure.
158
+
159
+ - When using Other SMTP mailer, we provide the option to insert your password in your `wp-config.php` file, so it's not visible in your WordPress settings or saved in the database.
160
+
161
+ ### Credits
162
+
163
+ WP Mail SMTP plugin was originally created by Callum Macdonald. It is now owned and maintained by the team behind <a href="https://wpforms.com/" rel="friend">WPForms</a> - the best drag & drop form builder for WordPress.
164
+
165
+ You can try the <a href="https://wordpress.org/plugins/wpforms-lite/" rel="friend">free version of WPForms plugin</a> to see why it's the best in the market.
166
+
167
+ ### What's Next
168
+
169
+ If you like this plugin, then consider checking out our other projects:
170
+
171
+ * <a href="https://optinmonster.com/" rel="friend" title="OptinMonster">OptinMonster</a> - Get More Email Subscribers with the most popular conversion optimization plugin for WordPress.
172
+ * <a href="https://www.monsterinsights.com/" rel="friend" title="MonsterInsights">MonsterInsights</a> - See the Stats that Matter and Grow Your Business with Confidence. Best Google Analytics Plugin for WordPress.
173
+ * <a href="https://www.seedprod.com/" rel="friend" title="SeedProd">SeedProd</a> - Jumpstart your website with the #1 Coming Soon & Maintenance Mode Plugin for WordPress.
174
+
175
+ Visit <a href="http://www.wpbeginner.com/" rel="friend" title="WPBeginner">WPBeginner</a> to learn from our <a href="http://www.wpbeginner.com/category/wp-tutorials/" rel="friend" title="WordPress Tutorials">WordPress Tutorials</a> and find out about other <a href="http://www.wpbeginner.com/category/plugins/" rel="friend" title="Best WordPress Plugins">best WordPress plugins</a>.
176
+
177
+ == Installation ==
178
+
179
+ 1. Install WP Mail SMTP by WPForms either via the WordPress.org plugin repository or by uploading the files to your server. (See instructions on <a href="http://www.wpbeginner.com/beginners-guide/step-by-step-guide-to-install-a-wordpress-plugin-for-beginners/" rel="friend">how to install a WordPress plugin</a>)
180
+ 2. Activate WP Mail SMTP by WPForms.
181
+ 3. Navigate to the Settings area of WP Mail SMTP in the WordPress admin.
182
+ 4. Choose your SMTP option (Mailgun SMTP, SendGrid SMTP, Gmail SMTP, or Other SMTP) and follow the instructions to set it up.
183
+ 5. Need more help? Get support with <a href="https://wpmailsmtp.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion&utm_content=readme" rel="friend" title="WPForms">WP Mail SMTP PRO</a>.
184
+
185
+ == Frequently Asked Questions ==
186
+
187
+ = Can I use this plugin to send email via Gmail, G Suite, Outlook.com, Office 365, Hotmail, Yahoo, or AOL SMTP? =
188
+
189
+ Yes! We have extensive documentation that covers setting up SMTP most popular email services.
190
+
191
+ <a href="https://wpforms.com/docs/how-to-set-up-smtp-using-the-wp-mail-smtp-plugin/" rel="friend">Read our docs</a> to see the correct SMTP settings for each service.
192
+
193
+ = Help! I need support or have an issue. =
194
+
195
+ Please read <a href="https://wordpress.org/support/topic/wp-mail-smtp-support-policy/">our support policy</a> for more information.
196
+
197
+ Limited support is available for WP Mail SMTP users via WordPress.org support forums.
198
+
199
+ Email support and set up assistance is available to WP Mail SMTP Pro users.
200
+
201
+ = I found a bug, now what? =
202
+
203
+ If you've stumbled upon a bug, the best place to report it is in the <a href="https://github.com/awesomemotive/wp-mail-smtp">WP Mail SMTP GitHub repository</a>. GitHub is where the plugin is actively developed, and posting there will get your issue quickly seen by our developers (myself and Slava). Once posted, we'll review your bug report and triage the bug. When creating an issue, the more details you can add to your report, the faster the bug can be solved.
204
+
205
+ = Can you add feature x, y or z to the plugin? =
206
+
207
+ Short answer: maybe.
208
+
209
+ By all means please contact us to discuss features or options you'd like to see added to the plugin. We can't guarantee to add all of them, but we will consider all sensible requests. We can be contacted here:
210
+ <a href="https://wpmailsmtp.com/contact/" rel="friend">https://wpmailsmtp.com/contact/</a>
211
+
212
+ == Screenshots ==
213
+
214
+ 1. WP Mail SMTP Settings page
215
+ 2. Gmail / G Suite settings
216
+ 3. Mailgun settings
217
+ 4. SendGrid settings
218
+ 5. SMTP settings
219
+ 6. Send a Test Email
220
+
221
+ == Changelog ==
222
+
223
+ = 1.8.0 - 2019-12-12 =
224
+ * Added: New recommended mailer: Pepipost.
225
+ * Added: "Suggest a Mailer" link in a list of mailers to send us your ideas about new ones.
226
+ * Fixed: Sendgrid: Content ID for attachments missing.
227
+ * Changed: Timeout to HTTP requests (pepipost, sendgrid, mailgun), same as max_execution_time, to prevent fails when sending emails with big attachments.
228
+
229
+ = 1.7.1 - 2019-11-11 =
230
+ * Fixed: Compatibility with WordPress 5.3.
231
+ * Fixed: `Processor::get_default_email()` always returns empty value when server incorrectly configured.
232
+
233
+ = 1.7.0 - 2019-10-24 =
234
+ * Added: Add a new constant `WPMS_DO_NOT_SEND` to block email sending.
235
+ * Fixed: Default email (wordpress@example.com) rewriting in CLI mode.
236
+ * Fixed: Incorrect conflicts detection with certain plugins.
237
+ * Fixed: various typos in plugin settings.
238
+
239
+ = 1.6.2 - 2019-09-02 =
240
+ * Fixed: Race condition when loading with certain plugins, that send emails very early. Makes email delivery more reliable.
241
+
242
+ = 1.6.0 - 2019-08-21 =
243
+ * Added: New transactional mailer: Sendinblue.
244
+ * Added: Educate users to use transactional mailers for better deliverability.
245
+ * Added: New option and filter to disable admin area delivery error notices.
246
+ * Changed: Hide private API key saved in the DB for API based mailers using `input[type=password]`.
247
+ * Changed: Update links to various docs, pointing now to https://wpmailsmtp.com.
248
+
249
+ = 1.5.2 - 2019-07-18 =
250
+ * Fixed: "Redirect URI mismatch" error for "Gmail" mailer when trying to re-authorize an account that was initially created with version < v1.5.0.
251
+ * Changed: Make "Authentication" setting in "Other SMTP" mailer ON by default for new users.
252
+ * Changed: Mailers docs links now point to wpmailsmtp.com own site.
253
+
254
+ = 1.5.1 - 2019-07-12 =
255
+ * Fixed: Duplicated emails sent to the first recipient in a loop (and others not receiving their emails).
256
+
257
+ = 1.5.0 - 2019-07-09 =
258
+ * Added: Loсo plugin support.
259
+ * Added: "About us" admin area page.
260
+ * Added: Display in debug output a possible conflicting plugin existence.
261
+ * Added: Lots of actions and filters to improve flexibility of the plugin.
262
+ * Changed: Plugin menu is now top level.
263
+ * Changed: Hide secrets/API keys in page DOM in plugin admin area.
264
+ * Changed: Do not save constant values into the database when plugin settings are saved.
265
+ * Changed: Lots of i18n improvements to support translation for both free and paid version of the plugin.
266
+ * Changed: Gmail mailer - allow to change From Name email header.
267
+ * Changed: Gmail mailer - display email used to create a connection.
268
+ * Changed: WordPress 4.9 is the minimum WordPress version we support.
269
+ * Fixed: X-Mailer header should be present in all emails.
270
+ * Fixed: PHP notices when migrating under certain circumstances from 0.x version of the plugin.
271
+ * Fixed: Options::get_group() now supports values set via constants.
272
+
273
+ = 1.4.2 - 2019-03-23 =
274
+ * Changed: Tested up to WordPress 5.1.x.
275
+ * Changed: Removed TGMPA library.
276
+
277
+ = 1.4.1 - 2018-12-03 =
278
+ * Fixed: correctly process backslashes in SMTP passwords defined via constants.
279
+ * Changed: allow to send a Test Email when Default (none) mailer is selected in plugin settings.
280
+
281
+ = 1.4.0 - 2018-11-29 =
282
+ * Added: New option: Do Not Send - block emails from being sent.
283
+ * Added: New option: Send HTML or plain text emails when doing an Email Test.
284
+ * Added: New option: Mailgun region selection - US and EU (US is default to preserve compatibility).
285
+ * Fixed: Compatibility with WordPress 3.6+.
286
+ * Fixed: Compatibility with WordPress 5.0.
287
+ * Fixed: Constants usage is much more reliable now, works correctly on Multisite. Constants are global accross the whole network.
288
+ * Fixed: Preserve multipart emails when using Sendgrid/Mailgun mailers (were converted to HTML-only).
289
+ * Fixed: Security hardening.
290
+ * Changed: Prefill Email Test page From field with currently logged in user email.
291
+ * Changed: Update libraries: google/apiclient-services, google/auth, phpseclib/phpseclib and their dependecies.
292
+ * Changed: Display in debug output cURL version if Gmail mailing failed.
293
+ * Changed: Display in debug output OpenSSL version if it exists if Gmail/SMTP mailing failed.
294
+ * Changed: Display plugin version in dashboard error notice when emailing failed.
295
+ * Changed: Do not allow to send Test Email if mailer not configured properly.
296
+ * Changed: Notify in plugin admin area that Gmail doesn't allow to redefine From Name/Email etc.
297
+ * Changed: List all constants with descriptions in plugin main file: wp_mail_smtp.php.
298
+ * Changed: TGMPA: change descriptions from "Required" to "Recommended" (labels were incorrect).
299
+
300
+ = 1.3.3 - 2018-07-05 =
301
+ * Fixed: Compatibility with other plugins, that are using Google Service or Google Client classes.
302
+ * Changed: Optimize code loading.
303
+
304
+ = 1.3.2 - 2018-06-29 =
305
+ * Make sure that other plugins/themes are not conflicting with our TGMPA library.
306
+
307
+ = 1.3.1 - 2018-06-29 =
308
+ * Fixed: Other SMTP: Clear new Debug messages about failed email delivery on next successful email sending.
309
+ * Fixed: Introduce conditional autoloader to workaround Gmail PHP 5.5 requirement and its library compatibility issues vs PHP 5.3+ minimum viable plugin version.
310
+
311
+ = 1.3.0 - 2018-06-28 =
312
+ * Added: New option: force From Email rewrite regardless of the current value.
313
+ * Added: New option: force From Name rewrite regardless of the current value.
314
+ * Added: New option: remove all plugin data on plugin uninstall (when user deletes it).
315
+ * Added: Notify site admins in wp-admin area with a notice about last failed email delivery. Cleans up on successful delivery.
316
+ * Added: Notify site admins in wp-admin area with a notice about possible compatibility issues with other SMTP and email delivery plugins.
317
+ * Added: Improve User Debug Experience when doing Email Test - display helpful description and steps to fix the issue.
318
+ * Added: New users: provide default SMTP Port value for new users based on Encryption selection.
319
+ * Added: New users: notify about not configured plugin settings.
320
+ * Added: New users: Recommend free WPForms Lite plugin for those who don't have it.
321
+ * Added: SendGrid/Mailgun: provide support for multipart/alternative types of emails.
322
+ * Added: Gmail: new button to remove connection and to connect a new Google account.
323
+ * Fixed: Support plugin installation into /mu-plugins/ directory.
324
+ * Fixed: SendGrid: required text/plain part of email being the first one - fixes plain text emails not having links.
325
+ * Fixed: SendGrid and Mailgun: improperly sending plain text emails in html format.
326
+ * Fixed: SMTP Debug output was empty in some cases.
327
+ * Fixed: Compatibility with lots of other plugins that use Google Analytics library of different versions.
328
+ * Fixed: "client_id is empty" is no more a problem, should be fixed.
329
+ * Changed: For SendGrid and Mailgun allow using custom defined attachments names if present. Fallback to file name.
330
+ * Changed: Gmail: switch to a wider scope to prevent possible issues in certain circumstances.
331
+ * Changed: Remove whitespaces start/end of keys, secrets etc.
332
+ * Changed: Improved helpful description tests of various options.
333
+ * Changed: Improved plugin autoloading functionality.
334
+
335
+ = 1.2.5 - 2017-02-05 =
336
+ * Fixed: `Return path` can't be turned off.
337
+ * Fixed: `Authentication` sometimes can't be turned off.
338
+ * Fixed: `Auto TLS` sometimes can't be turned off.
339
+ * Fixed: BCC support for Gmail was broken.
340
+ * Fixed: Debug output improved to handle SELinux and grsecurity.
341
+ * Fixed: Strip slashes from plugin settings (useful for `From Name` option).
342
+ * Fixed: Change the way sanitization is done to prevent accidental removal of useful data.
343
+ * Fixed: Plugin activation will not overwrite settings back to defaults.
344
+ * Fixed: Properly set `Auto TLS` option on plugin activation.
345
+ * Fixed: Providers autoloading improved for certain Windows-based installs.
346
+ * Fixed: Use the proper path to load translations from plugin's `/languages` directory.
347
+ * Changed: Do not autoload on each page request plugin settings from WordPress options table.
348
+ * Changed: Do not autoload Pepipost classes unless it's saved as active mailer in settings.
349
+
350
+ = 1.2.4 - 2017-01-28 =
351
+ * Fixed: Improved escaping in debug reporting.
352
+
353
+ = 1.2.3 - 2017-01-22 =
354
+ * Fixed: Gmail tokens were reset after clicking Save Settings.
355
+ * Fixed: Slight typo in Gmail success message.
356
+
357
+ = 1.2.2 - 2017-12-27 =
358
+ * Fixed: Correctly handle Mailgun debug message for an incorrect api key.
359
+ * Fixed: Fatal error for Gmail and SMTP mailers with Nginx web-server (without Apache at all).
360
+ * Changed: Update X-Mailer emails header to show the real sender with a mailer and plugin version.
361
+
362
+ = 1.2.1 - 2017-12-21 =
363
+ * Fixed: Failed SMTP connections generate fatal errors.
364
+
365
+ = 1.2.0 - 2017-12-21 =
366
+ * Fixed: Decrease the factual minimum WordPress version from 3.9 to 3.6.
367
+ * Changed: Improve debug output for all mail providers.
368
+
369
+ = 1.1.0 - 2017-12-18 =
370
+ * Added: New option "Auto TLS" for SMTP mailer. Default is enabled. Migration routine for all sites.
371
+ * Changed: Improve debug output - clear styles and context-aware content.
372
+ * Changed: Better exceptions handling for Google authentication process.
373
+ * Changed: Do not sanitize passwords, api keys etc - as they may contain special characters in certain order and sanitization will break those values.
374
+ * Changed: Improve wording of some helpful texts inside plugin admin area.
375
+ * Fixed: Do not include certain files in dependency libraries that are not used by Google mailer. This should stop flagging plugin by Wordfence and VaultPress.
376
+ * Fixed: Constants usage is working now, to define the SMTP password, for example.
377
+ * Fixed: Notice for default mailer.
378
+
379
+ = 1.0.2 - 2017-12-12 =
380
+ * Fixed: PHPMailer using incorrect SMTPSecure value.
381
+
382
+ = 1.0.1 - 2017-12-12 =
383
+ * Fixed: Global POST processing conflict.
384
+
385
+ = 1.0.0 - 2017-12-12 =
386
+ * Added: Automatic migration tool to move options from older storage format to a new one.
387
+ * Added: Added Gmail & G Suite email provider integration - without your email and password.
388
+ * Added: Added SendGrid email provider integration - using the API key only.
389
+ * Added: Added Mailgun email provider integration - using the API key and configured domain only.
390
+ * Added: New compatibility mode - for PHP 5.2 old plugin will be loaded, for PHP 5.3 and higher - new version of admin area and new functionality.
391
+ * Changed: The new look of the admin area.
392
+ * Changed: SMTP password field now has "password" type.
393
+ * Changed: SMTP password field does not display real password at all when using constants in `wp-config.php` to define it.
394
+ * Changed: Escape properly all translations.
395
+ * Changed: More helpful test email content (with a mailer name).
src/Admin/Area.php CHANGED
@@ -1,889 +1,889 @@
1
- <?php
2
-
3
- namespace WPMailSMTP\Admin;
4
-
5
- use WPMailSMTP\WP;
6
- use WPMailSMTP\Options;
7
-
8
- /**
9
- * Class Area registers and process all wp-admin display functionality.
10
- *
11
- * @since 1.0.0
12
- */
13
- class Area {
14
-
15
- /**
16
- * @since 1.0.0
17
- *
18
- * @var string Slug of the admin area page.
19
- */
20
- const SLUG = 'wp-mail-smtp';
21
-
22
- /**
23
- * @since 1.0.0
24
- *
25
- * @var string Admin page unique hook.
26
- */
27
- public $hook;
28
-
29
- /**
30
- * @since 1.0.0
31
- *
32
- * @var PageAbstract[]
33
- */
34
- private $pages;
35
-
36
- /**
37
- * @since 1.5.0
38
- *
39
- * @var array List of official registered pages.
40
- */
41
- public static $pages_registered = array( 'general', 'logs', 'about' );
42
-
43
- /**
44
- * Area constructor.
45
- *
46
- * @since 1.0.0
47
- */
48
- public function __construct() {
49
- $this->hooks();
50
- }
51
-
52
- /**
53
- * Assign all hooks to proper places.
54
- *
55
- * @since 1.0.0
56
- */
57
- protected function hooks() {
58
-
59
- // Add the Settings link to a plugin on Plugins page.
60
- add_filter( 'plugin_action_links', array( $this, 'add_plugin_action_link' ), 10, 2 );
61
-
62
- // Add the options page.
63
- add_action( 'admin_menu', array( $this, 'add_admin_options_page' ) );
64
-
65
- // Admin footer text.
66
- add_filter( 'admin_footer_text', array( $this, 'get_admin_footer' ), 1, 2 );
67
-
68
- // Enqueue admin area scripts and styles.
69
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
70
-
71
- // Process the admin page forms actions.
72
- add_action( 'admin_init', array( $this, 'process_actions' ) );
73
-
74
- // Display custom notices based on the error/success codes.
75
- add_action( 'admin_init', array( $this, 'display_custom_auth_notices' ) );
76
-
77
- // Display notice instructing the user to complete plugin setup.
78
- add_action( 'admin_init', array( $this, 'display_setup_notice' ) );
79
-
80
- // Outputs the plugin admin header.
81
- add_action( 'in_admin_header', array( $this, 'display_admin_header' ), 100 );
82
-
83
- // Hide all unrelated to the plugin notices on the plugin admin pages.
84
- add_action( 'admin_print_scripts', array( $this, 'hide_unrelated_notices' ) );
85
-
86
- // Process all AJAX requests.
87
- add_action( 'wp_ajax_wp_mail_smtp_ajax', array( $this, 'process_ajax' ) );
88
- }
89
-
90
- /**
91
- * Display custom notices based on the error/success codes.
92
- *
93
- * @since 1.0.0
94
- */
95
- public function display_custom_auth_notices() {
96
-
97
- $error = isset( $_GET['error'] ) ? sanitize_key( $_GET['error'] ) : ''; // phpcs:ignore
98
- $success = isset( $_GET['success'] ) ? sanitize_key( $_GET['success'] ) : ''; // phpcs:ignore
99
-
100
- if ( empty( $error ) && empty( $success ) ) {
101
- return;
102
- }
103
-
104
- if ( ! current_user_can( 'manage_options' ) ) {
105
- return;
106
- }
107
-
108
- switch ( $error ) {
109
- case 'google_access_denied':
110
- WP::add_admin_notice(
111
- /* translators: %s - error code, returned by Google API. */
112
- sprintf( esc_html__( 'There was an error while processing the authentication request: %s. Please try again.', 'wp-mail-smtp' ), '<code>' . $error . '</code>' ),
113
- WP::ADMIN_NOTICE_ERROR
114
- );
115
- break;
116
-
117
- case 'google_no_code_scope':
118
- case 'microsoft_no_code':
119
- WP::add_admin_notice(
120
- esc_html__( 'There was an error while processing the authentication request. Please try again.', 'wp-mail-smtp' ),
121
- WP::ADMIN_NOTICE_ERROR
122
- );
123
- break;
124
-
125
- case 'google_no_clients':
126
- WP::add_admin_notice(
127
- 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' ),
128
- WP::ADMIN_NOTICE_ERROR
129
- );
130
- break;
131
- }
132
-
133
- switch ( $success ) {
134
- case 'google_site_linked':
135
- WP::add_admin_notice(
136
- 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' ),
137
- WP::ADMIN_NOTICE_SUCCESS
138
- );
139
- break;
140
- case 'microsoft_site_linked':
141
- WP::add_admin_notice(
142
- esc_html__( 'You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.', 'wp-mail-smtp' ),
143
- WP::ADMIN_NOTICE_SUCCESS
144
- );
145
- break;
146
- }
147
- }
148
-
149
- /**
150
- * Display notice instructing the user to complete plugin setup.
151
- *
152
- * @since 1.3.0
153
- */
154
- public function display_setup_notice() {
155
-
156
- // Bail if we're not on a plugin page.
157
- if ( ! $this->is_admin_page( 'general' ) ) {
158
- return;
159
- }
160
-
161
- $default_options = wp_json_encode( Options::get_defaults() );
162
- $current_options = wp_json_encode( Options::init()->get_all() );
163
-
164
- // Check if the current settings are the same as the default settings.
165
- if ( $current_options !== $default_options ) {
166
- return;
167
- }
168
-
169
- // Display notice informing user further action is needed.
170
- WP::add_admin_notice(
171
- sprintf(
172
- wp_kses(
173
- /* translators: %s - Mailer anchor link. */
174
- __( 'Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, <strong>please select and configure your <a href="%s">Mailer</a></strong>.', 'wp-mail-smtp' ),
175
- array(
176
- 'a' => array(
177
- 'href' => array(),
178
- ),
179
- 'strong' => array(),
180
- )
181
- ),
182
- wp_mail_smtp()->get_admin()->get_admin_page_url( self::SLUG . '#wp-mail-smtp-setting-row-mailer' )
183
- ),
184
- WP::ADMIN_NOTICE_INFO
185
- );
186
- }
187
-
188
- /**
189
- * Add admin area menu item.
190
- *
191
- * @since 1.0.0
192
- * @since 1.5.0 Moved the menu to the top level. Added several more pages.
193
- */
194
- public function add_admin_options_page() {
195
-
196
- $this->hook = \add_menu_page(
197
- \esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
198
- \esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
199
- 'manage_options',
200
- self::SLUG,
201
- array( $this, 'display' ),
202
- 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM5ZWEzYTgiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDQzIDM0Ij48cGF0aCBkPSJNMC4wMDcsMy41ODVWMjAuNDIxcTAsMy41ODYsMy43NTEsMy41ODVMMjAsMjRWMTlIMzBWMTQuMDE0bDAuOTkxLTFMMzQsMTNWMy41ODVRMzQsMCwzMC4yNDksMEgzLjc1OFEwLjAwNywwLC4wMDcsMy41ODVoMFpNMy41MjQsNi4xNTdhMS40OSwxLjQ5LDAsMCwxLS41MDgtMC45MzUsMS41ODEsMS41ODEsMCwwLDEsLjI3NC0xLjIwOCwxLjQ0OSwxLjQ0OSwwLDAsMSwxLjA5NC0uNjYzLDEuNzU2LDEuNzU2LDAsMCwxLDEuMjUuMzEybDExLjQwOSw3LjcxNkwyOC4zNzQsMy42NjNhMS45NiwxLjk2LDAsMCwxLDEuMjg5LS4zMTIsMS41NDYsMS41NDYsMCwwLDEsMS4wOTQuNjYzLDEuNCwxLjQsMCwwLDEsLjI3MywxLjIwOCwxLjY3LDEuNjcsMCwwLDEtLjU0Ny45MzVMMTcuMDQzLDE3LjIyNVoiLz48cGF0aCBkPSJNMjIsMjhIMzJsLTAuMDA5LDQuNjI0YTEuMTI2LDEuMTI2LDAsMCwwLDEuOTIyLjhsOC4yNS04LjIzNmExLjEyNiwxLjEyNiwwLDAsMCwwLTEuNTk0bC04LjI1LTguMjQxYTEuMTI2LDEuMTI2LDAsMCwwLTEuOTIyLjh2NC44NjZMMjIsMjF2N1oiLz48L3N2Zz4=',
203
- 98
204
- );
205
-
206
- \add_submenu_page(
207
- self::SLUG,
208
- $this->get_current_tab_title() . ' &lsaquo; ' . \esc_html__( 'Settings', 'wp-mail-smtp' ),
209
- \esc_html__( 'Settings', 'wp-mail-smtp' ),
210
- 'manage_options',
211
- self::SLUG,
212
- array( $this, 'display' )
213
- );
214
- \add_submenu_page(
215
- self::SLUG,
216
- \esc_html__( 'Email Log', 'wp-mail-smtp' ),
217
- \esc_html__( 'Email Log', 'wp-mail-smtp' ),
218
- 'manage_options',
219
- self::SLUG . '-logs',
220
- array( $this, 'display' )
221
- );
222
- \add_submenu_page(
223
- self::SLUG,
224
- \esc_html__( 'About Us', 'wp-mail-smtp' ),
225
- \esc_html__( 'About Us', 'wp-mail-smtp' ),
226
- 'manage_options',
227
- self::SLUG . '-about',
228
- array( $this, 'display' )
229
- );
230
- }
231
-
232
- /**
233
- * Enqueue admin area scripts and styles.
234
- *
235
- * @since 1.0.0
236
- * @since 1.5.0 Added new assets for new pages.
237
- * @since 1.7.0 Added jQuery Confirm library css/js files.
238
- *
239
- * @param string $hook
240
- */
241
- public function enqueue_assets( $hook ) {
242
-
243
- if ( strpos( $hook, self::SLUG ) === false ) {
244
- return;
245
- }
246
-
247
- // General styles and js.
248
- \wp_enqueue_style(
249
- 'wp-mail-smtp-admin',
250
- \wp_mail_smtp()->assets_url . '/css/smtp-admin.min.css',
251
- false,
252
- WPMS_PLUGIN_VER
253
- );
254
-
255
- \wp_enqueue_script(
256
- 'wp-mail-smtp-admin',
257
- \wp_mail_smtp()->assets_url . '/js/smtp-admin' . WP::asset_min() . '.js',
258
- array( 'jquery' ),
259
- WPMS_PLUGIN_VER,
260
- false
261
- );
262
-
263
- \wp_localize_script(
264
- 'wp-mail-smtp-admin',
265
- 'wp_mail_smtp',
266
- array(
267
- 'text_provider_remove' => esc_html__( '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.', 'wp-mail-smtp' ),
268
- 'education' => array(
269
- 'upgrade_icon_lock' => '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="lock" class="svg-inline--fa fa-lock fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path></svg>',
270
- 'upgrade_title' => esc_html__( '%name% is a PRO Feature', 'wp-mail-smtp' ),
271
- 'upgrade_button' => esc_html__( 'Upgrade to Pro', 'wp-mail-smtp' ),
272
- 'upgrade_url' => 'https://wpmailsmtp.com/lite-upgrade/?discount=SMTPLITEUPGRADE&utm_source=WordPress&utm_medium=plugin-settings&utm_campaign=liteplugin',
273
- 'upgrade_bonus' => '<p>' .
274
- wp_kses(
275
- __( '<strong>Bonus:</strong> WP Mail SMTP users get <span>20% off</span> regular price,<br>applied at checkout.', 'wp-mail-smtp' ),
276
- array(
277
- 'strong' => true,
278
- 'span' => true,
279
- 'br' => true,
280
- )
281
- )
282
- . '</p>',
283
- 'upgrade_doc' => '<a href="https://wpmailsmtp.com/docs/how-to-upgrade-wp-mail-smtp-to-pro-version/?utm_source=WordPress&amp;utm_medium=link&amp;utm_campaign=liteplugin" target="_blank" rel="noopener noreferrer" class="already-purchased">
284
- ' . esc_html__( 'Already purchased?', 'wp-mail-smtp' ) . '
285
- </a>',
286
- ),
287
- )
288
- );
289
-
290
- /*
291
- * jQuery Confirm library v3.3.4.
292
- */
293
- \wp_enqueue_style(
294
- 'wp-mail-smtp-admin-jconfirm',
295
- \wp_mail_smtp()->assets_url . '/libs/jquery-confirm.min.css',
296
- array( 'wp-mail-smtp-admin' ),
297
- '3.3.4'
298
- );
299
- \wp_enqueue_script(
300
- 'wp-mail-smtp-admin-jconfirm',
301
- \wp_mail_smtp()->assets_url . '/libs/jquery-confirm.min.js',
302
- array( 'wp-mail-smtp-admin' ),
303
- '3.3.4',
304
- false
305
- );
306
-
307
- /*
308
- * Logs page.
309
- */
310
- if ( $this->is_admin_page( 'logs' ) ) {
311
- \wp_enqueue_style(
312
- 'wp-mail-smtp-admin-logs',
313
- apply_filters( 'wp_mail_smtp_admin_enqueue_assets_logs_css', '' ),
314
- array( 'wp-mail-smtp-admin' ),
315
- WPMS_PLUGIN_VER
316
- );
317
-
318
- \wp_enqueue_script(
319
- 'wp-mail-smtp-admin-logs',
320
- apply_filters( 'wp_mail_smtp_admin_enqueue_assets_logs_js', '' ),
321
- array( 'wp-mail-smtp-admin' ),
322
- WPMS_PLUGIN_VER,
323
- false
324
- );
325
- }
326
-
327
- /*
328
- * About page.
329
- */
330
- if ( $this->is_admin_page( 'about' ) ) {
331
-
332
- \wp_enqueue_style(
333
- 'wp-mail-smtp-admin-about',
334
- \wp_mail_smtp()->assets_url . '/css/smtp-about.min.css',
335
- array( 'wp-mail-smtp-admin' ),
336
- WPMS_PLUGIN_VER
337
- );
338
-
339
- \wp_enqueue_script(
340
- 'wp-mail-smtp-admin-about',
341
- \wp_mail_smtp()->assets_url . '/js/smtp-about' . WP::asset_min() . '.js',
342
- array( 'wp-mail-smtp-admin' ),
343
- '0.7.2',
344
- false
345
- );
346
-
347
- $settings = array(
348
- 'ajax_url' => \admin_url( 'admin-ajax.php' ),
349
- 'nonce' => \wp_create_nonce( 'wp-mail-smtp-about' ),
350
- // Strings.
351
- 'plugin_activate' => \esc_html__( 'Activate', 'wp-mail-smtp' ),
352
- 'plugin_activated' => \esc_html__( 'Activated', 'wp-mail-smtp' ),
353
- 'plugin_active' => \esc_html__( 'Active', 'wp-mail-smtp' ),
354
- 'plugin_inactive' => \esc_html__( 'Inactive', 'wp-mail-smtp' ),
355
- 'plugin_processing' => \esc_html__( 'Processing...', 'wp-mail-smtp' ),
356
- 'plugin_install_error' => \esc_html__( 'Could not install a plugin. Please download from WordPress.org and install manually.', 'wp-mail-smtp' ),
357
- 'plugin_install_activate_btn' => \esc_html__( 'Install and Activate', 'wp-mail-smtp' ),
358
- 'plugin_activate_btn' => \esc_html__( 'Activate', 'wp-mail-smtp' ),
359
- 'plugin_download_btn' => \esc_html__( 'Download', 'wp-mail-smtp' ),
360
- );
361
-
362
- \wp_localize_script(
363
- 'wp-mail-smtp-admin-about',
364
- 'wp_mail_smtp_about',
365
- $settings
366
- );
367
-
368
- \wp_enqueue_script(
369
- 'wp-mail-smtp-admin-about-matchheight',
370
- \wp_mail_smtp()->assets_url . '/js/jquery.matchHeight.min.js',
371
- array( 'wp-mail-smtp-admin' ),
372
- '0.7.2',
373
- false
374
- );
375
- }
376
-
377
- do_action( 'wp_mail_smtp_admin_area_enqueue_assets', $hook );
378
- }
379
-
380
- /**
381
- * Outputs the plugin admin header.
382
- *
383
- * @since 1.0.0
384
- */
385
- public function display_admin_header() {
386
-
387
- // Bail if we're not on a plugin page.
388
- if ( ! $this->is_admin_page() ) {
389
- return;
390
- }
391
- ?>
392
-
393
- <div id="wp-mail-smtp-header">
394
- <!--suppress HtmlUnknownTarget -->
395
- <img class="wp-mail-smtp-header-logo" src="<?php echo esc_url( wp_mail_smtp()->assets_url ); ?>/images/logo.svg" alt="WP Mail SMTP"/>
396
- </div>
397
-
398
- <?php
399
- }
400
-
401
- /**
402
- * Display a text to ask users to review the plugin on WP.org.
403
- *
404
- * @since 1.0.0
405
- *
406
- * @param string $text
407
- *
408
- * @return string
409
- */
410
- public function get_admin_footer( $text ) {
411
-
412
- if ( $this->is_admin_page() ) {
413
- $url = 'https://wordpress.org/support/plugin/wp-mail-smtp/reviews/?filter=5#new-post';
414
-
415
- $text = sprintf(
416
- wp_kses(
417
- /* translators: %1$s - WP.org link; %2$s - same WP.org link. */
418
- __( 'Please rate <strong>WP Mail SMTP</strong> <a href="%1$s" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%2$s" target="_blank" rel="noopener noreferrer">WordPress.org</a> to help us spread the word. Thank you from the WP Mail SMTP team!', 'wp-mail-smtp' ),
419
- array(
420
- 'strong' => array(),
421
- 'a' => array(
422
- 'href' => array(),
423
- 'target' => array(),
424
- 'rel' => array(),
425
- ),
426
- )
427
- ),
428
- $url,
429
- $url
430
- );
431
- }
432
-
433
- return $text;
434
- }
435
-
436
- /**
437
- * Display content of the admin area page.
438
- *
439
- * @since 1.0.0
440
- * @since 1.5.0 Rewrite to distinguish between General tabs and separate pages.
441
- */
442
- public function display() {
443
-
444
- // Bail if we're not on a plugin page.
445
- if ( ! $this->is_admin_page() ) {
446
- return;
447
- }
448
-
449
- $page = ! empty( $_GET['page'] ) ? \sanitize_key( $_GET['page'] ) : ''; // phpcs:ignore
450
- ?>
451
-
452
- <div class="wrap" id="wp-mail-smtp">
453
-
454
- <?php
455
- switch ( $page ) {
456
- case self::SLUG:
457
- ?>
458
-
459
- <div class="wp-mail-smtp-page wp-mail-smtp-page-general wp-mail-smtp-tab-<?php echo esc_attr( $this->get_current_tab() ); ?>">
460
- <?php $this->display_tabs(); ?>
461
- </div>
462
-
463
- <?php
464
- break;
465
-
466
- case self::SLUG . '-logs':
467
- $logs_class = apply_filters( 'wp_mail_smtp_admin_display_get_logs_fqcn', '\WPMailSMTP\Admin\Pages\Logs' );
468
- /** @var \WPMailSMTP\Admin\PageAbstract $logs */
469
- $logs = new $logs_class();
470
-
471
- $is_archive = wp_mail_smtp()->is_pro() && wp_mail_smtp()->pro->get_logs()->is_archive();
472
- ?>
473
-
474
- <div class="wp-mail-smtp-page wp-mail-smtp-page-logs <?php echo $is_archive ? 'wp-mail-smtp-page-logs-archive' : 'wp-mail-smtp-page-logs-single'; ?>">
475
- <?php $logs->display(); ?>
476
- </div>
477
-
478
- <?php
479
- break;
480
-
481
- case self::SLUG . '-about':
482
- $about = new Pages\About();
483
- ?>
484
-
485
- <div class="wp-mail-smtp-page wp-mail-smtp-page-about wp-mail-smtp-tab-about-<?php echo \esc_attr( $about->get_current_tab() ); ?>">
486
- <?php $about->display(); ?>
487
- </div>
488
-
489
- <?php
490
- break;
491
- }
492
- ?>
493
- </div>
494
-
495
- <?php
496
- }
497
-
498
- /**
499
- * Display General page tabs.
500
- *
501
- * @since 1.5.0
502
- */
503
- protected function display_tabs() {
504
- ?>
505
-
506
- <div class="wp-mail-smtp-page-title">
507
- <?php
508
- foreach ( $this->get_pages() as $page_slug => $page ) :
509
- $label = $page->get_label();
510
- if ( empty( $label ) ) {
511
- continue;
512
- }
513
- $class = $page_slug === $this->get_current_tab() ? 'active' : '';
514
- ?>
515
-
516
- <a href="<?php echo esc_url( $page->get_link() ); ?>" class="tab <?php echo esc_attr( $class ); ?>">
517
- <?php echo esc_html( $label ); ?>
518
- </a>
519
-
520
- <?php endforeach; ?>
521
- </div>
522
-
523
- <div class="wp-mail-smtp-page-content">
524
- <h1 class="screen-reader-text">
525
- <?php echo esc_html( $this->get_current_tab_title() ); ?>
526
- </h1>
527
-
528
- <?php $this->display_current_tab_content(); ?>
529
- </div>
530
-
531
- <?php
532
- }
533
-
534
- /**
535
- * Get the current tab content.
536
- *
537
- * @since 1.0.0
538
- */
539
- public function display_current_tab_content() {
540
-
541
- $pages = $this->get_pages();
542
-
543
- if ( ! array_key_exists( $this->get_current_tab(), $pages ) ) {
544
- return;
545
- }
546
-
547
- $pages[ $this->get_current_tab() ]->display();
548
- }
549
-
550
- /**
551
- * Get the current admin area tab.
552
- *
553
- * @since 1.0.0
554
- *
555
- * @return string
556
- */
557
- protected function get_current_tab() {
558
-
559
- $current = '';
560
-
561
- if ( $this->is_admin_page( 'general' ) ) {
562
- $current = ! empty( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'settings'; // phpcs:ignore
563
- }
564
-
565
- return $current;
566
- }
567
-
568
- /**
569
- * Get the array of default registered tabs for General page admin area.
570
- *
571
- * @since 1.0.0
572
- *
573
- * @return \WPMailSMTP\Admin\PageAbstract[]
574
- */
575
- public function get_pages() {
576
-
577
- if ( empty( $this->pages ) ) {
578
- $this->pages = array(
579
- 'settings' => new Pages\SettingsTab(),
580
- 'test' => new Pages\TestTab(),
581
- 'logs' => new Pages\LogsTab(),
582
- 'control' => new Pages\ControlTab(),
583
- 'misc' => new Pages\MiscTab(),
584
- 'auth' => new Pages\AuthTab(),
585
- );
586
- }
587
-
588
- return apply_filters( 'wp_mail_smtp_admin_get_pages', $this->pages );
589
- }
590
-
591
- /**
592
- * Get the current tab title.
593
- *
594
- * @since 1.0.0
595
- *
596
- * @return string
597
- */
598
- public function get_current_tab_title() {
599
-
600
- $pages = $this->get_pages();
601
-
602
- if ( ! array_key_exists( $this->get_current_tab(), $pages ) ) {
603
- return '';
604
- }
605
-
606
- return $pages[ $this->get_current_tab() ]->get_title();
607
- }
608
-
609
- /**
610
- * Check whether we are on an admin page.
611
- *
612
- * @since 1.0.0
613
- * @since 1.5.0 Added support for new pages.
614
- *
615
- * @param array|string $slug ID(s) of a plugin page. Possible values: 'general', 'logs', 'about' or array of them.
616
- *
617
- * @return bool
618
- */
619
- public function is_admin_page( $slug = array() ) {
620
-
621
- $cur_page = isset( $_GET['page'] ) ? sanitize_key( $_GET['page'] ) : ''; // phpcs:ignore
622
- $check = self::SLUG;
623
- $pages_equal = false;
624
-
625
- if ( is_string( $slug ) ) {
626
- $slug = sanitize_key( $slug );
627
-
628
- if (
629
- in_array( $slug, self::$pages_registered, true ) &&
630
- $slug !== 'general'
631
- ) {
632
- $check = self::SLUG . '-' . $slug;
633
- }
634
-
635
- $pages_equal = $cur_page === $check;
636
- } elseif ( is_array( $slug ) ) {
637
- if ( empty( $slug ) ) {
638
- $slug = array_map( function ( $v ) {
639
- if ( $v === 'general' ) {
640
- return Area::SLUG;
641
- }
642
- return Area::SLUG . '-' . $v;
643
- }, self::$pages_registered );
644
- } else {
645
- $slug = array_map( function ( $v ) {
646
- if ( $v === 'general' ) {
647
- return Area::SLUG;
648
- }
649
- return Area::SLUG . '-' . sanitize_key( $v );
650
- }, $slug );
651
- }
652
-
653
- $pages_equal = in_array( $cur_page, $slug, true );
654
- }
655
-
656
- return is_admin() && $pages_equal;
657
- }
658
-
659
- /**
660
- * Give ability to use either admin area option or a filter to hide error notices about failed email delivery.
661
- * Filter has higher priority and overrides an option.
662
- *
663
- * @since 1.6.0
664
- *
665
- * @return bool
666
- */
667
- public function is_error_delivery_notice_enabled() {
668
-
669
- $is_hard_enabled = (bool) apply_filters( 'wp_mail_smtp_admin_is_error_delivery_notice_enabled', true );
670
-
671
- // If someone changed the value to false using a filter - disable completely.
672
- if ( ! $is_hard_enabled ) {
673
- return false;
674
- }
675
-
676
- return ! (bool) Options::init()->get( 'general', 'email_delivery_errors_hidden' );
677
- }
678
-
679
- /**
680
- * All possible plugin forms manipulation will be done here.
681
- *
682
- * @since 1.0.0
683
- */
684
- public function process_actions() {
685
-
686
- // Bail if we're not on a plugin General page.
687
- if ( ! $this->is_admin_page( 'general' ) ) {
688
- return;
689
- }
690
-
691
- $pages = $this->get_pages();
692
-
693
- // Allow to process only own tabs.
694
- if ( ! array_key_exists( $this->get_current_tab(), $pages ) ) {
695
- return;
696
- }
697
-
698
- // Process POST only if it exists.
699
- if ( ! empty( $_POST ) ) {
700
- if ( ! empty( $_POST['wp-mail-smtp'] ) ) {
701
- $post = $_POST['wp-mail-smtp'];
702
- } else {
703
- $post = array();
704
- }
705
-
706
- $pages[ $this->get_current_tab() ]->process_post( $post );
707
- }
708
-
709
- // This won't do anything for most pages.
710
- // Works for plugin page only, when GET params are allowed.
711
- $pages[ $this->get_current_tab() ]->process_auth();
712
- }
713
-
714
- /**
715
- * Process all AJAX requests.
716
- *
717
- * @since 1.3.0
718
- * @since 1.5.0 Added tasks to process plugins management.
719
- */
720
- public function process_ajax() {
721
-
722
- $data = array();
723
-
724
- // Only admins can fire these ajax requests.
725
- if ( ! current_user_can( 'manage_options' ) ) {
726
- wp_send_json_error( $data );
727
- }
728
-
729
- if ( empty( $_POST['task'] ) ) { // phpcs:ignore
730
- wp_send_json_error( $data );
731
- }
732
-
733
- $task = sanitize_key( $_POST['task'] ); // phpcs:ignore
734
-
735
- switch ( $task ) {
736
- case 'pro_banner_dismiss':
737
- update_user_meta( get_current_user_id(), 'wp_mail_smtp_pro_banner_dismissed', true );
738
- $data['message'] = esc_html__( 'WP Mail SMTP Pro related message was successfully dismissed.', 'wp-mail-smtp' );
739
- break;
740
-
741
- case 'about_plugin_install':
742
- Pages\About::ajax_plugin_install();
743
- break;
744
-
745
- case 'about_plugin_activate':
746
- Pages\About::ajax_plugin_activate();
747
- break;
748
-
749
- case 'notice_dismiss':
750
- $notice = sanitize_key( $_POST['notice'] ); // phpcs:ignore
751
- $mailer = sanitize_key( $_POST['mailer'] ); // phpcs:ignore
752
- if ( empty( $notice ) || empty( $mailer ) ) {
753
- break;
754
- }
755
-
756
- update_user_meta( get_current_user_id(), "wp_mail_smtp_notice_{$notice}_for_{$mailer}_dismissed", true );
757
- $data['message'] = esc_html__( 'Educational notice for this mailer was successfully dismissed.', 'wp-mail-smtp' );
758
- break;
759
-
760
- default:
761
- // Allow custom tasks data processing being added here.
762
- $data = apply_filters( 'wp_mail_smtp_admin_process_ajax_' . $task . '_data', $data );
763
- }
764
-
765
- // Final ability to rewrite all the data, just in case.
766
- $data = (array) apply_filters( 'wp_mail_smtp_admin_process_ajax_data', $data, $task );
767
-
768
- if ( empty( $data ) ) {
769
- wp_send_json_error( $data );
770
- }
771
-
772
- wp_send_json_success( $data );
773
- }
774
-
775
- /**
776
- * Add a link to Settings page of a plugin on Plugins page.
777
- *
778
- * @since 1.0.0
779
- * @since 1.5.0 Added a link to Email Log.
780
- *
781
- * @param array $links
782
- * @param string $file
783
- *
784
- * @return mixed
785
- */
786
- public function add_plugin_action_link( $links, $file ) {
787
-
788
- // Will target both pro and lite version of a plugin.
789
- if ( strpos( $file, 'wp-mail-smtp' ) === false ) {
790
- return $links;
791
- }
792
-
793
- $settings_link = '<a href="' . esc_url( $this->get_admin_page_url() ) . '">' . esc_html__( 'Settings', 'wp-mail-smtp' ) . '</a>';
794
- $logs_link = '<a href="' . esc_url( $this->get_admin_page_url( self::SLUG . '-logs' ) ) . '">' . esc_html__( 'Email Log', 'wp-mail-smtp' ) . '</a>';
795
-
796
- array_unshift( $links, $settings_link, $logs_link );
797
-
798
- return $links;
799
- }
800
-
801
- /**
802
- * Get plugin admin area page URL.
803
- *
804
- * @since 1.0.0
805
- * @since 1.5.0 URL is changed to support the top level position of the plugin admin area.
806
- *
807
- * @param string $page
808
- *
809
- * @return string
810
- */
811
- public function get_admin_page_url( $page = '' ) {
812
-
813
- if ( empty( $page ) ) {
814
- $page = self::SLUG;
815
- }
816
-
817
- return add_query_arg(
818
- 'page',
819
- $page,
820
- admin_url( 'admin.php' )
821
- );
822
- }
823
-
824
- /**
825
- * Remove all non-WP Mail SMTP plugin notices from plugin pages.
826
- *
827
- * @since 1.0.0
828
- */
829
- public function hide_unrelated_notices() {
830
-
831
- // Bail if we're not on our screen or page.
832
- if ( empty( $_REQUEST['page'] ) || strpos( $_REQUEST['page'], self::SLUG ) === false ) {
833
- return;
834
- }
835
-
836
- global $wp_filter;
837
-
838
- if ( ! empty( $wp_filter['user_admin_notices']->callbacks ) && is_array( $wp_filter['user_admin_notices']->callbacks ) ) {
839
- foreach ( $wp_filter['user_admin_notices']->callbacks as $priority => $hooks ) {
840
- foreach ( $hooks as $name => $arr ) {
841
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof \Closure ) {
842
- unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
843
- continue;
844
- }
845
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpmailsmtp' ) !== false ) {
846
- continue;
847
- }
848
- if ( ! empty( $name ) && strpos( strtolower( $name ), 'wpmailsmtp' ) === false ) {
849
- unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
850
- }
851
- }
852
- }
853
- }
854
-
855
- if ( ! empty( $wp_filter['admin_notices']->callbacks ) && is_array( $wp_filter['admin_notices']->callbacks ) ) {
856
- foreach ( $wp_filter['admin_notices']->callbacks as $priority => $hooks ) {
857
- foreach ( $hooks as $name => $arr ) {
858
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof \Closure ) {
859
- unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
860
- continue;
861
- }
862
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpmailsmtp' ) !== false ) {
863
- continue;
864
- }
865
- if ( ! empty( $name ) && strpos( strtolower( $name ), 'wpmailsmtp' ) === false ) {
866
- unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
867
- }
868
- }
869
- }
870
- }
871
-
872
- if ( ! empty( $wp_filter['all_admin_notices']->callbacks ) && is_array( $wp_filter['all_admin_notices']->callbacks ) ) {
873
- foreach ( $wp_filter['all_admin_notices']->callbacks as $priority => $hooks ) {
874
- foreach ( $hooks as $name => $arr ) {
875
- if ( is_object( $arr['function'] ) && $arr['function'] instanceof \Closure ) {
876
- unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
877
- continue;
878
- }
879
- if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpmailsmtp' ) !== false ) {
880
- continue;
881
- }
882
- if ( ! empty( $name ) && strpos( strtolower( $name ), 'wpmailsmtp' ) === false ) {
883
- unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
884
- }
885
- }
886
- }
887
- }
888
- }
889
- }
1
+ <?php
2
+
3
+ namespace WPMailSMTP\Admin;
4
+
5
+ use WPMailSMTP\WP;
6
+ use WPMailSMTP\Options;
7
+
8
+ /**
9
+ * Class Area registers and process all wp-admin display functionality.
10
+ *
11
+ * @since 1.0.0
12
+ */
13
+ class Area {
14
+
15
+ /**
16
+ * @since 1.0.0
17
+ *
18
+ * @var string Slug of the admin area page.
19
+ */
20
+ const SLUG = 'wp-mail-smtp';
21
+
22
+ /**
23
+ * @since 1.0.0
24
+ *
25
+ * @var string Admin page unique hook.
26
+ */
27
+ public $hook;
28
+
29
+ /**
30
+ * @since 1.0.0
31
+ *
32
+ * @var PageAbstract[]
33
+ */
34
+ private $pages;
35
+
36
+ /**
37
+ * @since 1.5.0
38
+ *
39
+ * @var array List of official registered pages.
40
+ */
41
+ public static $pages_registered = array( 'general', 'logs', 'about' );
42
+
43
+ /**
44
+ * Area constructor.
45
+ *
46
+ * @since 1.0.0
47
+ */
48
+ public function __construct() {
49
+ $this->hooks();
50
+ }
51
+
52
+ /**
53
+ * Assign all hooks to proper places.
54
+ *
55
+ * @since 1.0.0
56
+ */
57
+ protected function hooks() {
58
+
59
+ // Add the Settings link to a plugin on Plugins page.
60
+ add_filter( 'plugin_action_links', array( $this, 'add_plugin_action_link' ), 10, 2 );
61
+
62
+ // Add the options page.
63
+ add_action( 'admin_menu', array( $this, 'add_admin_options_page' ) );
64
+
65
+ // Admin footer text.
66
+ add_filter( 'admin_footer_text', array( $this, 'get_admin_footer' ), 1, 2 );
67
+
68
+ // Enqueue admin area scripts and styles.
69
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
70
+
71
+ // Process the admin page forms actions.
72
+ add_action( 'admin_init', array( $this, 'process_actions' ) );
73
+
74
+ // Display custom notices based on the error/success codes.
75
+ add_action( 'admin_init', array( $this, 'display_custom_auth_notices' ) );
76
+
77
+ // Display notice instructing the user to complete plugin setup.
78
+ add_action( 'admin_init', array( $this, 'display_setup_notice' ) );
79
+
80
+ // Outputs the plugin admin header.
81
+ add_action( 'in_admin_header', array( $this, 'display_admin_header' ), 100 );
82
+
83
+ // Hide all unrelated to the plugin notices on the plugin admin pages.
84
+ add_action( 'admin_print_scripts', array( $this, 'hide_unrelated_notices' ) );
85
+
86
+ // Process all AJAX requests.
87
+ add_action( 'wp_ajax_wp_mail_smtp_ajax', array( $this, 'process_ajax' ) );
88
+ }
89
+
90
+ /**
91
+ * Display custom notices based on the error/success codes.
92
+ *
93
+ * @since 1.0.0
94
+ */
95
+ public function display_custom_auth_notices() {
96
+
97
+ $error = isset( $_GET['error'] ) ? sanitize_key( $_GET['error'] ) : ''; // phpcs:ignore
98
+ $success = isset( $_GET['success'] ) ? sanitize_key( $_GET['success'] ) : ''; // phpcs:ignore
99
+
100
+ if ( empty( $error ) && empty( $success ) ) {
101
+ return;
102
+ }
103
+
104
+ if ( ! current_user_can( 'manage_options' ) ) {
105
+ return;
106
+ }
107
+
108
+ switch ( $error ) {
109
+ case 'google_access_denied':
110
+ WP::add_admin_notice(
111
+ /* translators: %s - error code, returned by Google API. */
112
+ sprintf( esc_html__( 'There was an error while processing the authentication request: %s. Please try again.', 'wp-mail-smtp' ), '<code>' . $error . '</code>' ),
113
+ WP::ADMIN_NOTICE_ERROR
114
+ );
115
+ break;
116
+
117
+ case 'google_no_code_scope':
118
+ case 'microsoft_no_code':
119
+ WP::add_admin_notice(
120
+ esc_html__( 'There was an error while processing the authentication request. Please try again.', 'wp-mail-smtp' ),
121
+ WP::ADMIN_NOTICE_ERROR
122
+ );
123
+ break;
124
+
125
+ case 'google_no_clients':
126
+ WP::add_admin_notice(
127
+ 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' ),
128
+ WP::ADMIN_NOTICE_ERROR
129
+ );
130
+ break;
131
+ }
132
+
133
+ switch ( $success ) {
134
+ case 'google_site_linked':
135
+ WP::add_admin_notice(
136
+ 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' ),
137
+ WP::ADMIN_NOTICE_SUCCESS
138
+ );
139
+ break;
140
+ case 'microsoft_site_linked':
141
+ WP::add_admin_notice(
142
+ esc_html__( 'You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.', 'wp-mail-smtp' ),
143
+ WP::ADMIN_NOTICE_SUCCESS
144
+ );
145
+ break;
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Display notice instructing the user to complete plugin setup.
151
+ *
152
+ * @since 1.3.0
153
+ */
154
+ public function display_setup_notice() {
155
+
156
+ // Bail if we're not on a plugin page.
157
+ if ( ! $this->is_admin_page( 'general' ) ) {
158
+ return;
159
+ }
160
+
161
+ $default_options = wp_json_encode( Options::get_defaults() );
162
+ $current_options = wp_json_encode( Options::init()->get_all() );
163
+
164
+ // Check if the current settings are the same as the default settings.
165
+ if ( $current_options !== $default_options ) {
166
+ return;
167
+ }
168
+
169
+ // Display notice informing user further action is needed.
170
+ WP::add_admin_notice(
171
+ sprintf(
172
+ wp_kses(
173
+ /* translators: %s - Mailer anchor link. */
174
+ __( 'Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, <strong>please select and configure your <a href="%s">Mailer</a></strong>.', 'wp-mail-smtp' ),
175
+ array(
176
+ 'a' => array(
177
+ 'href' => array(),
178
+ ),
179
+ 'strong' => array(),
180
+ )
181
+ ),
182
+ wp_mail_smtp()->get_admin()->get_admin_page_url( self::SLUG . '#wp-mail-smtp-setting-row-mailer' )
183
+ ),
184
+ WP::ADMIN_NOTICE_INFO
185
+ );
186
+ }
187
+
188
+ /**
189
+ * Add admin area menu item.
190
+ *
191
+ * @since 1.0.0
192
+ * @since 1.5.0 Moved the menu to the top level. Added several more pages.
193
+ */
194
+ public function add_admin_options_page() {
195
+
196
+ $this->hook = \add_menu_page(
197
+ \esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
198
+ \esc_html__( 'WP Mail SMTP', 'wp-mail-smtp' ),
199
+ 'manage_options',
200
+ self::SLUG,
201
+ array( $this, 'display' ),
202
+ 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiM5ZWEzYTgiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDQzIDM0Ij48cGF0aCBkPSJNMC4wMDcsMy41ODVWMjAuNDIxcTAsMy41ODYsMy43NTEsMy41ODVMMjAsMjRWMTlIMzBWMTQuMDE0bDAuOTkxLTFMMzQsMTNWMy41ODVRMzQsMCwzMC4yNDksMEgzLjc1OFEwLjAwNywwLC4wMDcsMy41ODVoMFpNMy41MjQsNi4xNTdhMS40OSwxLjQ5LDAsMCwxLS41MDgtMC45MzUsMS41ODEsMS41ODEsMCwwLDEsLjI3NC0xLjIwOCwxLjQ0OSwxLjQ0OSwwLDAsMSwxLjA5NC0uNjYzLDEuNzU2LDEuNzU2LDAsMCwxLDEuMjUuMzEybDExLjQwOSw3LjcxNkwyOC4zNzQsMy42NjNhMS45NiwxLjk2LDAsMCwxLDEuMjg5LS4zMTIsMS41NDYsMS41NDYsMCwwLDEsMS4wOTQuNjYzLDEuNCwxLjQsMCwwLDEsLjI3MywxLjIwOCwxLjY3LDEuNjcsMCwwLDEtLjU0Ny45MzVMMTcuMDQzLDE3LjIyNVoiLz48cGF0aCBkPSJNMjIsMjhIMzJsLTAuMDA5LDQuNjI0YTEuMTI2LDEuMTI2LDAsMCwwLDEuOTIyLjhsOC4yNS04LjIzNmExLjEyNiwxLjEyNiwwLDAsMCwwLTEuNTk0bC04LjI1LTguMjQxYTEuMTI2LDEuMTI2LDAsMCwwLTEuOTIyLjh2NC44NjZMMjIsMjF2N1oiLz48L3N2Zz4=',
203
+ 98
204
+ );
205
+
206
+ \add_submenu_page(
207
+ self::SLUG,
208
+ $this->get_current_tab_title() . ' &lsaquo; ' . \esc_html__( 'Settings', 'wp-mail-smtp' ),
209
+ \esc_html__( 'Settings', 'wp-mail-smtp' ),
210
+ 'manage_options',
211
+ self::SLUG,
212
+ array( $this, 'display' )
213
+ );
214
+ \add_submenu_page(
215
+ self::SLUG,
216
+ \esc_html__( 'Email Log', 'wp-mail-smtp' ),
217
+ \esc_html__( 'Email Log', 'wp-mail-smtp' ),
218