WP Mail SMTP by WPForms - Version 1.0.0

Version Description

  • 2017-12-12 =
  • Added: Automatic migration tool to move options from older storage format to a new one.
  • Added: Added Gmail & G Suite email provider integration - without your email and password.
  • Added: Added SendGrid email provider integration - using the API key only.
  • Added: Added Mailgun email provider integration - using the API key and configured domain only.
  • 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.
  • Changed: The new look of the admin area.
  • Changed: SMTP password field now has "password" type.
  • Changed: SMTP password field does not display real password at all when using constants in wp-config.php to define it.
  • Changed: Escape properly all translations.
  • Changed: More helpful test email content (with a mailer name).
Download this release

Release Info

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

Code changes from version 0.11.2 to 1.0.0

Files changed (371) hide show
  1. assets/css/smtp-admin.min.css +3 -0
  2. assets/images/gmail.png +0 -0
  3. assets/images/logo.png +0 -0
  4. assets/images/mailgun.png +0 -0
  5. assets/images/pepipost.png +0 -0
  6. assets/images/php.png +0 -0
  7. assets/images/sendgrid.png +0 -0
  8. assets/images/smtp.png +0 -0
  9. assets/js/smtp-admin.js +36 -0
  10. assets/js/smtp-admin.min.js +1 -0
  11. class-wpms-am-notification.php +9 -27
  12. languages/wp-mail-smtp.pot +315 -47
  13. readme.txt +108 -43
  14. src/AM_Notification.php +452 -0
  15. src/Admin/Area.php +450 -0
  16. src/Admin/PageAbstract.php +66 -0
  17. src/Admin/PageInterface.php +45 -0
  18. src/Admin/Pages/Auth.php +56 -0
  19. src/Admin/Pages/Misc.php +99 -0
  20. src/Admin/Pages/Settings.php +236 -0
  21. src/Admin/Pages/Test.php +208 -0
  22. src/Core.php +213 -0
  23. src/MailCatcher.php +66 -0
  24. src/Migration.php +245 -0
  25. src/Options.php +469 -0
  26. src/Processor.php +169 -0
  27. src/Providers/AuthAbstract.php +22 -0
  28. src/Providers/AuthInterface.php +19 -0
  29. src/Providers/Gmail/Auth.php +299 -0
  30. src/Providers/Gmail/Mailer.php +173 -0
  31. src/Providers/Gmail/Options.php +131 -0
  32. src/Providers/Loader.php +178 -0
  33. src/Providers/Mail/Options.php +42 -0
  34. src/Providers/MailerAbstract.php +346 -0
  35. src/Providers/MailerInterface.php +139 -0
  36. src/Providers/Mailgun/Mailer.php +299 -0
  37. src/Providers/Mailgun/Options.php +106 -0
  38. src/Providers/OptionAbstract.php +291 -0
  39. src/Providers/OptionInterface.php +64 -0
  40. src/Providers/Pepipost/Options.php +29 -0
  41. src/Providers/SMTP/Options.php +45 -0
  42. src/Providers/Sendgrid/Mailer.php +294 -0
  43. src/Providers/Sendgrid/Options.php +89 -0
  44. src/WP.php +140 -0
  45. vendor/autoload.php +7 -0
  46. vendor/composer/ClassLoader.php +413 -0
  47. vendor/composer/LICENSE +21 -0
  48. vendor/composer/autoload_classmap.php +11 -0
  49. vendor/composer/autoload_files.php +27 -0
  50. vendor/composer/autoload_namespaces.php +11 -0
  51. vendor/composer/autoload_psr4.php +20 -0
  52. vendor/composer/autoload_real.php +70 -0
  53. vendor/composer/autoload_static.php +138 -0
  54. vendor/google/apiclient-services/LICENSE +203 -0
  55. vendor/google/apiclient-services/src/Google/Service/Gmail.php +1136 -0
  56. vendor/google/apiclient-services/src/Google/Service/Gmail/AutoForwarding.php +48 -0
  57. vendor/google/apiclient-services/src/Google/Service/Gmail/BatchDeleteMessagesRequest.php +31 -0
  58. vendor/google/apiclient-services/src/Google/Service/Gmail/BatchModifyMessagesRequest.php +49 -0
  59. vendor/google/apiclient-services/src/Google/Service/Gmail/Draft.php +46 -0
  60. vendor/google/apiclient-services/src/Google/Service/Gmail/Filter.php +62 -0
  61. vendor/google/apiclient-services/src/Google/Service/Gmail/FilterAction.php +49 -0
  62. vendor/google/apiclient-services/src/Google/Service/Gmail/FilterCriteria.php +102 -0
  63. vendor/google/apiclient-services/src/Google/Service/Gmail/ForwardingAddress.php +39 -0
  64. vendor/google/apiclient-services/src/Google/Service/Gmail/History.php +111 -0
  65. vendor/google/apiclient-services/src/Google/Service/Gmail/HistoryLabelAdded.php +47 -0
  66. vendor/google/apiclient-services/src/Google/Service/Gmail/HistoryLabelRemoved.php +47 -0
  67. vendor/google/apiclient-services/src/Google/Service/Gmail/HistoryMessageAdded.php +37 -0
  68. vendor/google/apiclient-services/src/Google/Service/Gmail/HistoryMessageDeleted.php +37 -0
  69. vendor/google/apiclient-services/src/Google/Service/Gmail/ImapSettings.php +57 -0
  70. vendor/google/apiclient-services/src/Google/Service/Gmail/Label.php +102 -0
  71. vendor/google/apiclient-services/src/Google/Service/Gmail/ListDraftsResponse.php +56 -0
  72. vendor/google/apiclient-services/src/Google/Service/Gmail/ListFiltersResponse.php +38 -0
  73. vendor/google/apiclient-services/src/Google/Service/Gmail/ListForwardingAddressesResponse.php +38 -0
  74. vendor/google/apiclient-services/src/Google/Service/Gmail/ListHistoryResponse.php +56 -0
  75. vendor/google/apiclient-services/src/Google/Service/Gmail/ListLabelsResponse.php +38 -0
  76. vendor/google/apiclient-services/src/Google/Service/Gmail/ListMessagesResponse.php +56 -0
  77. vendor/google/apiclient-services/src/Google/Service/Gmail/ListSendAsResponse.php +38 -0
  78. vendor/google/apiclient-services/src/Google/Service/Gmail/ListSmimeInfoResponse.php +38 -0
  79. vendor/google/apiclient-services/src/Google/Service/Gmail/ListThreadsResponse.php +56 -0
  80. vendor/google/apiclient-services/src/Google/Service/Gmail/Message.php +110 -0
  81. vendor/google/apiclient-services/src/Google/Service/Gmail/MessagePart.php +97 -0
  82. vendor/google/apiclient-services/src/Google/Service/Gmail/MessagePartBody.php +48 -0
  83. vendor/google/apiclient-services/src/Google/Service/Gmail/MessagePartHeader.php +39 -0
  84. vendor/google/apiclient-services/src/Google/Service/Gmail/ModifyMessageRequest.php +40 -0
  85. vendor/google/apiclient-services/src/Google/Service/Gmail/ModifyThreadRequest.php +40 -0
  86. vendor/google/apiclient-services/src/Google/Service/Gmail/PopSettings.php +39 -0
  87. vendor/google/apiclient-services/src/Google/Service/Gmail/Profile.php +57 -0
  88. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/Users.php +71 -0
  89. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersDrafts.php +130 -0
  90. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersHistory.php +61 -0
  91. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersLabels.php +120 -0
  92. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersMessages.php +229 -0
  93. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersMessagesAttachments.php +44 -0
  94. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersSettings.php +149 -0
  95. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersSettingsFilters.php +86 -0
  96. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersSettingsForwardingAddresses.php +97 -0
  97. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersSettingsSendAs.php +162 -0
  98. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersSettingsSendAsSmimeInfo.php +115 -0
  99. vendor/google/apiclient-services/src/Google/Service/Gmail/Resource/UsersThreads.php +135 -0
  100. vendor/google/apiclient-services/src/Google/Service/Gmail/SendAs.php +109 -0
  101. vendor/google/apiclient-services/src/Google/Service/Gmail/SmimeInfo.php +84 -0
  102. vendor/google/apiclient-services/src/Google/Service/Gmail/SmtpMsa.php +66 -0
  103. vendor/google/apiclient-services/src/Google/Service/Gmail/Thread.php +65 -0
  104. vendor/google/apiclient-services/src/Google/Service/Gmail/VacationSettings.php +93 -0
  105. vendor/google/apiclient-services/src/Google/Service/Gmail/WatchRequest.php +49 -0
  106. vendor/google/apiclient-services/src/Google/Service/Gmail/WatchResponse.php +39 -0
  107. vendor/google/apiclient/LICENSE +203 -0
  108. vendor/google/apiclient/src/Google/AccessToken/Revoke.php +78 -0
  109. vendor/google/apiclient/src/Google/AccessToken/Verify.php +272 -0
  110. vendor/google/apiclient/src/Google/AuthHandler/AuthHandlerFactory.php +42 -0
  111. vendor/google/apiclient/src/Google/AuthHandler/Guzzle5AuthHandler.php +99 -0
  112. vendor/google/apiclient/src/Google/AuthHandler/Guzzle6AuthHandler.php +106 -0
  113. vendor/google/apiclient/src/Google/Client.php +1118 -0
  114. vendor/google/apiclient/src/Google/Collection.php +100 -0
  115. vendor/google/apiclient/src/Google/Exception.php +20 -0
  116. vendor/google/apiclient/src/Google/Http/Batch.php +249 -0
  117. vendor/google/apiclient/src/Google/Http/MediaFileUpload.php +351 -0
  118. vendor/google/apiclient/src/Google/Http/REST.php +182 -0
  119. vendor/google/apiclient/src/Google/Model.php +317 -0
  120. vendor/google/apiclient/src/Google/Service.php +56 -0
  121. vendor/google/apiclient/src/Google/Service/Exception.php +68 -0
  122. vendor/google/apiclient/src/Google/Service/Resource.php +296 -0
  123. vendor/google/apiclient/src/Google/Task/Exception.php +20 -0
  124. vendor/google/apiclient/src/Google/Task/Retryable.php +24 -0
  125. vendor/google/apiclient/src/Google/Task/Runner.php +281 -0
  126. vendor/google/apiclient/src/Google/Utils/UriTemplate.php +333 -0
  127. vendor/google/apiclient/src/Google/autoload.php +21 -0
  128. vendor/google/auth/COPYING +202 -0
  129. vendor/google/auth/LICENSE +203 -0
  130. vendor/google/auth/autoload.php +34 -0
  131. vendor/google/auth/src/ApplicationDefaultCredentials.php +173 -0
  132. vendor/google/auth/src/Cache/InvalidArgumentException.php +24 -0
  133. vendor/google/auth/src/Cache/Item.php +185 -0
  134. vendor/google/auth/src/Cache/MemoryCacheItemPool.php +154 -0
  135. vendor/google/auth/src/CacheTrait.php +83 -0
  136. vendor/google/auth/src/Credentials/AppIdentityCredentials.php +159 -0
  137. vendor/google/auth/src/Credentials/GCECredentials.php +219 -0
  138. vendor/google/auth/src/Credentials/IAMCredentials.php +89 -0
  139. vendor/google/auth/src/Credentials/ServiceAccountCredentials.php +177 -0
  140. vendor/google/auth/src/Credentials/ServiceAccountJwtAccessCredentials.php +131 -0
  141. vendor/google/auth/src/Credentials/UserRefreshCredentials.php +110 -0
  142. vendor/google/auth/src/CredentialsLoader.php +210 -0
  143. vendor/google/auth/src/FetchAuthTokenCache.php +108 -0
  144. vendor/google/auth/src/FetchAuthTokenInterface.php +55 -0
  145. vendor/google/auth/src/HttpHandler/Guzzle5HttpHandler.php +68 -0
  146. vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php +36 -0
  147. vendor/google/auth/src/HttpHandler/HttpHandlerFactory.php +47 -0
  148. vendor/google/auth/src/Middleware/AuthTokenMiddleware.php +126 -0
  149. vendor/google/auth/src/Middleware/ScopedAccessTokenMiddleware.php +175 -0
  150. vendor/google/auth/src/Middleware/SimpleMiddleware.php +93 -0
  151. vendor/google/auth/src/OAuth2.php +1335 -0
  152. vendor/google/auth/src/Subscriber/AuthTokenSubscriber.php +118 -0
  153. vendor/google/auth/src/Subscriber/ScopedAccessTokenSubscriber.php +177 -0
  154. vendor/google/auth/src/Subscriber/SimpleSubscriber.php +90 -0
  155. vendor/guzzlehttp/guzzle/LICENSE +19 -0
  156. vendor/guzzlehttp/guzzle/src/Client.php +414 -0
  157. vendor/guzzlehttp/guzzle/src/ClientInterface.php +84 -0
  158. vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +314 -0
  159. vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +84 -0
  160. vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php +90 -0
  161. vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +71 -0
  162. vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +404 -0
  163. vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php +27 -0
  164. vendor/guzzlehttp/guzzle/src/Exception/ClientException.php +7 -0
  165. vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php +37 -0
  166. vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php +4 -0
  167. vendor/guzzlehttp/guzzle/src/Exception/RequestException.php +217 -0
  168. vendor/guzzlehttp/guzzle/src/Exception/SeekException.php +27 -0
  169. vendor/guzzlehttp/guzzle/src/Exception/ServerException.php +7 -0
  170. vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php +4 -0
  171. vendor/guzzlehttp/guzzle/src/Exception/TransferException.php +4 -0
  172. vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +559 -0
  173. vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php +27 -0
  174. vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php +45 -0
  175. vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +197 -0
  176. vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +92 -0
  177. vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +189 -0
  178. vendor/guzzlehttp/guzzle/src/Handler/Proxy.php +55 -0
  179. vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php +533 -0
  180. vendor/guzzlehttp/guzzle/src/HandlerStack.php +273 -0
  181. vendor/guzzlehttp/guzzle/src/MessageFormatter.php +182 -0
  182. vendor/guzzlehttp/guzzle/src/Middleware.php +254 -0
  183. vendor/guzzlehttp/guzzle/src/Pool.php +123 -0
  184. vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +106 -0
  185. vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +237 -0
  186. vendor/guzzlehttp/guzzle/src/RequestOptions.php +255 -0
  187. vendor/guzzlehttp/guzzle/src/RetryMiddleware.php +112 -0
  188. vendor/guzzlehttp/guzzle/src/TransferStats.php +126 -0
  189. vendor/guzzlehttp/guzzle/src/UriTemplate.php +241 -0
  190. vendor/guzzlehttp/guzzle/src/functions.php +331 -0
  191. vendor/guzzlehttp/guzzle/src/functions_include.php +6 -0
  192. vendor/guzzlehttp/promises/LICENSE +19 -0
  193. vendor/guzzlehttp/promises/src/AggregateException.php +16 -0
  194. vendor/guzzlehttp/promises/src/CancellationException.php +9 -0
  195. vendor/guzzlehttp/promises/src/Coroutine.php +151 -0
  196. vendor/guzzlehttp/promises/src/EachPromise.php +229 -0
  197. vendor/guzzlehttp/promises/src/FulfilledPromise.php +82 -0
  198. vendor/guzzlehttp/promises/src/Promise.php +280 -0
  199. vendor/guzzlehttp/promises/src/PromiseInterface.php +93 -0
  200. vendor/guzzlehttp/promises/src/PromisorInterface.php +15 -0
  201. vendor/guzzlehttp/promises/src/RejectedPromise.php +87 -0
  202. vendor/guzzlehttp/promises/src/RejectionException.php +47 -0
  203. vendor/guzzlehttp/promises/src/TaskQueue.php +66 -0
  204. vendor/guzzlehttp/promises/src/TaskQueueInterface.php +25 -0
  205. vendor/guzzlehttp/promises/src/functions.php +457 -0
  206. vendor/guzzlehttp/promises/src/functions_include.php +6 -0
  207. vendor/guzzlehttp/psr7/LICENSE +19 -0
  208. vendor/guzzlehttp/psr7/src/AppendStream.php +233 -0
  209. vendor/guzzlehttp/psr7/src/BufferStream.php +137 -0
  210. vendor/guzzlehttp/psr7/src/CachingStream.php +138 -0
  211. vendor/guzzlehttp/psr7/src/DroppingStream.php +42 -0
  212. vendor/guzzlehttp/psr7/src/FnStream.php +149 -0
  213. vendor/guzzlehttp/psr7/src/InflateStream.php +52 -0
  214. vendor/guzzlehttp/psr7/src/LazyOpenStream.php +39 -0
  215. vendor/guzzlehttp/psr7/src/LimitStream.php +155 -0
  216. vendor/guzzlehttp/psr7/src/MessageTrait.php +183 -0
  217. vendor/guzzlehttp/psr7/src/MultipartStream.php +153 -0
  218. vendor/guzzlehttp/psr7/src/NoSeekStream.php +22 -0
  219. vendor/guzzlehttp/psr7/src/PumpStream.php +165 -0
  220. vendor/guzzlehttp/psr7/src/Request.php +142 -0
  221. vendor/guzzlehttp/psr7/src/Response.php +132 -0
  222. vendor/guzzlehttp/psr7/src/ServerRequest.php +358 -0
  223. vendor/guzzlehttp/psr7/src/Stream.php +257 -0
  224. vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php +149 -0
  225. vendor/guzzlehttp/psr7/src/StreamWrapper.php +121 -0
  226. vendor/guzzlehttp/psr7/src/UploadedFile.php +316 -0
  227. vendor/guzzlehttp/psr7/src/Uri.php +702 -0
  228. vendor/guzzlehttp/psr7/src/UriNormalizer.php +216 -0
  229. vendor/guzzlehttp/psr7/src/UriResolver.php +219 -0
  230. vendor/guzzlehttp/psr7/src/functions.php +828 -0
  231. vendor/guzzlehttp/psr7/src/functions_include.php +6 -0
  232. vendor/monolog/monolog/LICENSE +19 -0
  233. vendor/monolog/monolog/src/Monolog/ErrorHandler.php +230 -0
  234. vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php +78 -0
  235. vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php +89 -0
  236. vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php +116 -0
  237. vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php +85 -0
  238. vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php +36 -0
  239. vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php +138 -0
  240. vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php +141 -0
  241. vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php +208 -0
  242. vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php +179 -0
  243. vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php +47 -0
  244. vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php +166 -0
  245. vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php +105 -0
  246. vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php +297 -0
  247. vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php +48 -0
  248. vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php +113 -0
  249. vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php +186 -0
  250. vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php +66 -0
  251. vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php +101 -0
  252. vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php +148 -0
  253. vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php +230 -0
  254. vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php +117 -0
  255. vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php +211 -0
  256. vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php +72 -0
  257. vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php +151 -0
  258. vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php +57 -0
  259. vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php +169 -0
  260. vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php +45 -0
  261. vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php +107 -0
  262. vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php +128 -0
  263. vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php +82 -0
  264. vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php +140 -0
  265. vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php +28 -0
  266. vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php +59 -0
  267. vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php +34 -0
  268. vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php +163 -0
  269. vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php +195 -0
  270. vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php +126 -0
  271. vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php +127 -0
  272. vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php +73 -0
  273. vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php +104 -0
  274. vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php +90 -0
  275. vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php +108 -0
  276. vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php +350 -0
  277. vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php +69 -0
  278. vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php +55 -0
  279. vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php +102 -0
  280. vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php +67 -0
  281. vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php +68 -0
  282. vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php +21 -0
  283. vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php +59 -0
  284. vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php +185 -0
  285. vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php +202 -0
  286. vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php +45 -0
  287. vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php +242 -0
  288. vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php +56 -0
  289. vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php +185 -0
  290. vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php +232 -0
  291. vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php +97 -0
  292. vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php +132 -0
  293. vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php +178 -0
  294. vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php +82 -0
  295. vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php +294 -0
  296. vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php +215 -0
  297. vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php +115 -0
  298. vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php +80 -0
  299. vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php +346 -0
  300. vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php +176 -0
  301. vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php +99 -0
  302. vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php +67 -0
  303. vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php +56 -0
  304. vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php +103 -0
  305. vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php +154 -0
  306. vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php +61 -0
  307. vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php +95 -0
  308. vendor/monolog/monolog/src/Monolog/Logger.php +700 -0
  309. vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php +64 -0
  310. vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php +112 -0
  311. vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php +35 -0
  312. vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php +63 -0
  313. vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php +35 -0
  314. vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php +63 -0
  315. vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php +31 -0
  316. vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php +48 -0
  317. vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php +44 -0
  318. vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php +46 -0
  319. vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php +113 -0
  320. vendor/monolog/monolog/src/Monolog/Registry.php +134 -0
  321. vendor/phpseclib/phpseclib/LICENSE +21 -0
  322. vendor/phpseclib/phpseclib/phpseclib/Crypt/AES.php +126 -0
  323. vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php +2558 -0
  324. vendor/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php +577 -0
  325. vendor/phpseclib/phpseclib/phpseclib/Crypt/DES.php +1443 -0
  326. vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php +824 -0
  327. vendor/phpseclib/phpseclib/phpseclib/Crypt/RC2.php +688 -0
  328. vendor/phpseclib/phpseclib/phpseclib/Crypt/RC4.php +342 -0
  329. vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php +3053 -0
  330. vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php +270 -0
  331. vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php +936 -0
  332. vendor/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php +460 -0
  333. vendor/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php +808 -0
  334. vendor/phpseclib/phpseclib/phpseclib/File/ANSI.php +577 -0
  335. vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php +1325 -0
  336. vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php +47 -0
  337. vendor/phpseclib/phpseclib/phpseclib/File/X509.php +4846 -0
  338. vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php +3763 -0
  339. vendor/phpseclib/phpseclib/phpseclib/Net/SCP.php +337 -0
  340. vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php +3104 -0
  341. vendor/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php +795 -0
  342. vendor/phpseclib/phpseclib/phpseclib/Net/SSH1.php +1642 -0
  343. vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php +4616 -0
  344. vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php +308 -0
  345. vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php +158 -0
  346. vendor/phpseclib/phpseclib/phpseclib/bootstrap.php +16 -0
  347. vendor/phpseclib/phpseclib/phpseclib/openssl.cnf +6 -0
  348. vendor/psr/cache/LICENSE.txt +19 -0
  349. vendor/psr/cache/src/CacheException.php +10 -0
  350. vendor/psr/cache/src/CacheItemInterface.php +105 -0
  351. vendor/psr/cache/src/CacheItemPoolInterface.php +138 -0
  352. vendor/psr/cache/src/InvalidArgumentException.php +13 -0
  353. vendor/psr/http-message/LICENSE +19 -0
  354. vendor/psr/http-message/src/MessageInterface.php +187 -0
  355. vendor/psr/http-message/src/RequestInterface.php +129 -0
  356. vendor/psr/http-message/src/ResponseInterface.php +68 -0
  357. vendor/psr/http-message/src/ServerRequestInterface.php +261 -0
  358. vendor/psr/http-message/src/StreamInterface.php +158 -0
  359. vendor/psr/http-message/src/UploadedFileInterface.php +123 -0
  360. vendor/psr/http-message/src/UriInterface.php +323 -0
  361. vendor/psr/log/LICENSE +19 -0
  362. vendor/psr/log/Psr/Log/AbstractLogger.php +128 -0
  363. vendor/psr/log/Psr/Log/InvalidArgumentException.php +7 -0
  364. vendor/psr/log/Psr/Log/LogLevel.php +18 -0
  365. vendor/psr/log/Psr/Log/LoggerAwareInterface.php +18 -0
  366. vendor/psr/log/Psr/Log/LoggerAwareTrait.php +26 -0
  367. vendor/psr/log/Psr/Log/LoggerInterface.php +123 -0
  368. vendor/psr/log/Psr/Log/LoggerTrait.php +140 -0
  369. vendor/psr/log/Psr/Log/NullLogger.php +28 -0
  370. wp-mail-smtp.php +61 -0
  371. wp_mail_smtp.php +77 -65
assets/css/smtp-admin.min.css ADDED
@@ -0,0 +1,3 @@
1
+ #wpcontent{padding-left:0 !important;position:relative}@media (max-width: 320px){#wpcontent{padding-top:46px}}@media (max-width: 320px){#wpbody{padding-top:0}}#wp-mail-smtp-header{background-color:#f1f3f7;border-top:3px solid #FF982D;padding:20px}#wp-mail-smtp-header img{display:block;margin:0;max-width:242px}@media (max-width: 768px){#wp-mail-smtp-header img{max-width:200px}}#wp-mail-smtp{margin:0}#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{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.active{border-bottom:2px solid #FF982D}#wp-mail-smtp .wp-mail-smtp-page-title a:hover{border-color:#999}#wp-mail-smtp .wp-mail-smtp-page{padding:0 20px}#wp-mail-smtp .wp-mail-smtp-page *,#wp-mail-smtp .wp-mail-smtp-page *::before,#wp-mail-smtp .wp-mail-smtp-page *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-clear:before{content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-clear:after{clear:both;content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page .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 .wp-mail-smtp-setting-row:first-of-type{padding-top:10px !important}@media (max-width: 767px){#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row{padding:20px 0}}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.inactive{display:none}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.section-heading{padding:20px 0}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.section-heading.no-desc h2,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.section-heading.no-desc h4{margin:0}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.section-heading .wp-mail-smtp-setting-field{margin:0;max-width:1000px}#wp-mail-smtp .wp-mail-smtp-page .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 .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 .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox .desc{margin:0 0 0 30px}#wp-mail-smtp .wp-mail-smtp-page .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 .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-text .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-password .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-number .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page .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 .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 .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 .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 .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 .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 .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 .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:#83c11f}#wp-mail-smtp .wp-mail-smtp-page .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 .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 .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 .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 .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:700;font-size:13px}#wp-mail-smtp .wp-mail-smtp-page .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 .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 .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 .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer{padding-bottom:20px}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailer{display:inline-block;width:140px;margin-right:10px;margin-bottom:10px}#wp-mail-smtp .wp-mail-smtp-page .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 .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;height:76px;position:relative;margin-bottom:10px;cursor:pointer;-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 .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image img{display:block;position:absolute;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 .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 .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 .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 .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 .wp-mail-smtp-setting-row h2,#wp-mail-smtp .wp-mail-smtp-page .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 .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 .wp-mail-smtp-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.3}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row p:first-of-type{margin:8px 0 0}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row p.desc{font-style:italic;color:#666}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page .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: 1023px){#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=password]{width:300px}}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text][readonly],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email][readonly],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number][readonly],#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=password][readonly]{background-color:#f9f9f9}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text].small-text,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email].small-text,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number].small-text,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=password].small-text{width:75px}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text]:focus,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email]:focus,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number]:focus,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=password]:focus{border-color:#bbb}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=text]:disabled,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=email]:disabled,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=number]:disabled,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-row input[type=password]:disabled{opacity:0.6}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-label{display:block;float:left;width:200px;padding:0}@media (max-width: 767px){#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-label{float:none;width:100%;padding-bottom:15px}}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-label label{display:block;font-weight:600}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-field{display:block;margin:0 0 0 200px;max-width:800px}@media (max-width: 767px){#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-setting-field{margin:0}}#wp-mail-smtp .wp-mail-smtp-page p.wp-mail-smtp-submit{margin:0;padding:25px 0}#wp-mail-smtp .wp-mail-smtp-page .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 .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}#wp-mail-smtp .wp-mail-smtp-page .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 .wp-mail-smtp-page .wp-mail-smtp-btn .dashicons{font-size:16px;width:16px;height:16px}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-block{display:block}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-orange{background-color:#FF982D;border-color:#FF982D;color:#fff}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-orange:hover,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-orange:active,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-orange:focus{background-color:#f97f00;border-color:#f97f00}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-grey{background-color:#eee;border-color:#ccc;color:#666}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-grey:hover,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-grey:active,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-grey:focus{background-color:#d7d7d7;border-color:#ccc;color:#444}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-light-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-light-grey:hover,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-light-grey:active,#wp-mail-smtp .wp-mail-smtp-page .wp-mail-smtp-btn-light-grey:focus{background-color:#eee;color:#444}#wp-mail-smtp .wp-mail-smtp-page p{margin:0}#wp-mail-smtp .wp-mail-smtp-page .notice p{margin:0.5em 0}#wp-mail-smtp .wp-mail-smtp-page pre{white-space:pre-line}#wp-mail-smtp .wp-mail-smtp-page.active{display:block}
2
+
3
+ /*# sourceMappingURL=smtp-admin.min.css.map */
assets/images/gmail.png ADDED
Binary file
assets/images/logo.png ADDED
Binary file
assets/images/mailgun.png ADDED
Binary file
assets/images/pepipost.png ADDED
Binary file
assets/images/php.png ADDED
Binary file
assets/images/sendgrid.png ADDED
Binary file
assets/images/smtp.png ADDED
Binary file
assets/js/smtp-admin.js ADDED
@@ -0,0 +1,36 @@
1
+ /* globals jQuery */
2
+ jQuery( document ).ready( function ( $ ) {
3
+
4
+ $( '.wp-mail-smtp-mailer input' ).click( function () {
5
+ if ( $( this ).prop( 'disabled' ) ) {
6
+ return false;
7
+ }
8
+
9
+ // Deselect the current mailer.
10
+ $( '.wp-mail-smtp-mailer' ).removeClass( 'active' );
11
+ // Select the correct one.
12
+ $( this ).parents( '.wp-mail-smtp-mailer' ).addClass( 'active' );
13
+
14
+ $( '.wp-mail-smtp-mailer-option' ).addClass( 'hidden' ).removeClass( 'active' );
15
+ $( '.wp-mail-smtp-mailer-option-' + $( this ).val() ).addClass( 'active' ).removeClass( 'hidden' );
16
+ } );
17
+
18
+ $( '.wp-mail-smtp-mailer-image' ).click( function () {
19
+ $( this ).parents( '.wp-mail-smtp-mailer' ).find( 'input' ).trigger( 'click' );
20
+ } );
21
+
22
+ $( '.wp-mail-smtp-setting-copy' ).click( function ( e ) {
23
+ e.preventDefault();
24
+
25
+ var target = $( '#' + $( this ).data( 'source_id' ) ).get(0);
26
+
27
+ target.select();
28
+
29
+ document.execCommand( 'Copy' );
30
+ } );
31
+
32
+ $( '#wp-mail-smtp-setting-smtp-auth' ).change(function() {
33
+ $( '#wp-mail-smtp-setting-row-smtp-user, #wp-mail-smtp-setting-row-smtp-pass' ).toggleClass( 'inactive' );
34
+ });
35
+
36
+ } );
assets/js/smtp-admin.min.js ADDED
@@ -0,0 +1 @@
1
+ jQuery(document).ready(function(i){i(".wp-mail-smtp-mailer input").click(function(){if(i(this).prop("disabled"))return!1;i(".wp-mail-smtp-mailer").removeClass("active"),i(this).parents(".wp-mail-smtp-mailer").addClass("active"),i(".wp-mail-smtp-mailer-option").addClass("hidden").removeClass("active"),i(".wp-mail-smtp-mailer-option-"+i(this).val()).addClass("active").removeClass("hidden")}),i(".wp-mail-smtp-mailer-image").click(function(){i(this).parents(".wp-mail-smtp-mailer").find("input").trigger("click")}),i(".wp-mail-smtp-setting-copy").click(function(t){t.preventDefault();i("#"+i(this).data("source_id")).get(0).select(),document.execCommand("Copy")}),i("#wp-mail-smtp-setting-smtp-auth").change(function(){i("#wp-mail-smtp-setting-row-smtp-user, #wp-mail-smtp-setting-row-smtp-pass").toggleClass("inactive")})});
class-wpms-am-notification.php CHANGED
@@ -10,7 +10,7 @@
10
* @author Benjamin Rojas
11
* @license GPL-2.0+
12
* @copyright Copyright (c) 2017, Retyp LLC
13
- * @version 1.0.0
14
*/
15
class WPMS_AM_Notification {
16
/**
@@ -41,24 +41,6 @@ class WPMS_AM_Notification {
41
*/
42
public $plugin_version;
43
44
- /**
45
- * The list of installed plugins.
46
- *
47
- * @since 1.0.0
48
- *
49
- * @var array
50
- */
51
- public $plugin_list = array();
52
-
53
- /**
54
- * The list of installed themes.
55
- *
56
- * @since 1.0.0
57
- *
58
- * @var string
59
- */
60
- public $theme_list = array();
61
-
62
/**
63
* Flag if a notice has been registered.
64
*
@@ -93,7 +75,9 @@ class WPMS_AM_Notification {
93
*/
94
public function custom_post_type() {
95
register_post_type( 'amn_' . $this->plugin, array(
96
- 'supports' => false,
97
) );
98
}
99
@@ -111,7 +95,7 @@ class WPMS_AM_Notification {
111
112
if ( $last_checked < strtotime( 'today midnight' ) ) {
113
$plugin_notifications = $this->get_plugin_notifications( 1 );
114
- $notification_id = null;
115
116
if ( ! empty( $plugin_notifications ) ) {
117
// Unset it from the array.
@@ -123,7 +107,7 @@ class WPMS_AM_Notification {
123
'body' => array(
124
'slug' => $this->plugin,
125
'version' => $this->plugin_version,
126
- 'last_notification' => $notification_id
127
),
128
) ) );
129
@@ -156,8 +140,6 @@ class WPMS_AM_Notification {
156
update_post_meta( $new_notification_id, 'type', sanitize_text_field( trim( $data->type ) ) );
157
update_post_meta( $new_notification_id, 'dismissable', (bool) $data->dismissible ? 1 : 0 );
158
update_post_meta( $new_notification_id, 'location', function_exists( 'wp_json_encode' ) ? wp_json_encode( $data->location ) : json_encode( $data->location ) );
159
- update_post_meta( $new_notification_id, 'plugins', function_exists( 'wp_json_encode' ) ? wp_json_encode( $data->plugins ) : json_encode( $data->plugins ) );
160
- update_post_meta( $new_notification_id, 'theme', sanitize_text_field( trim( $data->theme ) ) );
161
update_post_meta( $new_notification_id, 'version', sanitize_text_field( trim( $data->version ) ) );
162
update_post_meta( $new_notification_id, 'viewed', 0 );
163
update_post_meta( $new_notification_id, 'expiration', $data->expiration ? absint( $data->expiration ) : false );
@@ -188,8 +170,8 @@ class WPMS_AM_Notification {
188
public function get_plugin_notifications( $limit = -1, $args = array() ) {
189
return get_posts(
190
array(
191
- 'showposts' => $limit,
192
- 'post_type' => 'amn_' . $this->plugin,
193
) + $args
194
);
195
}
@@ -343,7 +325,7 @@ class WPMS_AM_Notification {
343
*/
344
public function get_plan_level() {
345
// Prepare variables.
346
- $key = '';
347
$level = '';
348
$option = false;
349
switch ( $this->plugin ) {
10
* @author Benjamin Rojas
11
* @license GPL-2.0+
12
* @copyright Copyright (c) 2017, Retyp LLC
13
+ * @version 1.0.2
14
*/
15
class WPMS_AM_Notification {
16
/**
41
*/
42
public $plugin_version;
43
44
/**
45
* Flag if a notice has been registered.
46
*
75
*/
76
public function custom_post_type() {
77
register_post_type( 'amn_' . $this->plugin, array(
78
+ 'label' => $this->plugin . ' Announcements',
79
+ 'can_export' => false,
80
+ 'supports' => false,
81
) );
82
}
83
95
96
if ( $last_checked < strtotime( 'today midnight' ) ) {
97
$plugin_notifications = $this->get_plugin_notifications( 1 );
98
+ $notification_id = null;
99
100
if ( ! empty( $plugin_notifications ) ) {
101
// Unset it from the array.
107
'body' => array(
108
'slug' => $this->plugin,
109
'version' => $this->plugin_version,
110
+ 'last_notification' => $notification_id,
111
),
112
) ) );
113
140
update_post_meta( $new_notification_id, 'type', sanitize_text_field( trim( $data->type ) ) );
141
update_post_meta( $new_notification_id, 'dismissable', (bool) $data->dismissible ? 1 : 0 );
142
update_post_meta( $new_notification_id, 'location', function_exists( 'wp_json_encode' ) ? wp_json_encode( $data->location ) : json_encode( $data->location ) );
143
update_post_meta( $new_notification_id, 'version', sanitize_text_field( trim( $data->version ) ) );
144
update_post_meta( $new_notification_id, 'viewed', 0 );
145
update_post_meta( $new_notification_id, 'expiration', $data->expiration ? absint( $data->expiration ) : false );
170
public function get_plugin_notifications( $limit = -1, $args = array() ) {
171
return get_posts(
172
array(
173
+ 'posts_per_page' => $limit,
174
+ 'post_type' => 'amn_' . $this->plugin,
175
) + $args
176
);
177
}
325
*/
326
public function get_plan_level() {
327
// Prepare variables.
328
+ $key = '';
329
$level = '';
330
$option = false;
331
switch ( $this->plugin ) {
languages/wp-mail-smtp.pot CHANGED
@@ -14,190 +14,458 @@ msgstr ""
14
"X-Poedit-SourceCharset: UTF-8\n"
15
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
17
- #: wp_mail_smtp.php:239
18
msgid "Test mail to %s"
19
msgstr ""
20
21
- #: wp_mail_smtp.php:240
22
msgid "This is a test email generated by the WP Mail SMTP WordPress plugin."
23
msgstr ""
24
25
- #: wp_mail_smtp.php:256
26
msgid "Test Message Sent"
27
msgstr ""
28
29
- #: wp_mail_smtp.php:257
30
msgid "The result was:"
31
msgstr ""
32
33
- #: wp_mail_smtp.php:260
34
msgid "The full debugging output is shown below:"
35
msgstr ""
36
37
- #: wp_mail_smtp.php:263
38
msgid "The SMTP debugging output is shown below:"
39
msgstr ""
40
41
- #: wp_mail_smtp.php:230, wp_mail_smtp.php:604
42
msgid "Send Test"
43
msgstr ""
44
45
- #: wp_mail_smtp.php:275, wp_mail_smtp.php:640
46
msgid "WP Mail SMTP Settings"
47
msgstr ""
48
49
- #: wp_mail_smtp.php:284
50
msgid "From Email"
51
msgstr ""
52
53
- #: wp_mail_smtp.php:291
54
msgid "You can specify the email address that emails should be sent from. If you leave this blank, the default email will be used."
55
msgstr ""
56
57
- #: wp_mail_smtp.php:294
58
msgid "<strong>Please Note:</strong> You appear to be using a version of WordPress prior to 2.3. Please ignore the From Name field and instead enter Name&lt;email@domain.com&gt; in this field."
59
msgstr ""
60
61
- #: wp_mail_smtp.php:303
62
msgid "From Name"
63
msgstr ""
64
65
- #: wp_mail_smtp.php:309
66
msgid "You can specify the name that emails should be sent from. If you leave this blank, the emails will be sent from WordPress."
67
msgstr ""
68
69
- #: wp_mail_smtp.php:318, wp_mail_smtp.php:323
70
msgid "Mailer"
71
msgstr ""
72
73
- #: wp_mail_smtp.php:328
74
msgid "Send all WordPress emails via SMTP."
75
msgstr ""
76
77
- #: wp_mail_smtp.php:332
78
msgid "Use the PHP mail() function to send emails."
79
msgstr ""
80
81
- #: wp_mail_smtp.php:338
82
msgid "Use Pepipost SMTP to send emails."
83
msgstr ""
84
85
- #: wp_mail_smtp.php:344
86
msgid "Looking for high inbox delivery? Try Pepipost with easy setup and free emails. Learn more %1$shere%2$s."
87
msgstr ""
88
89
- #: wp_mail_smtp.php:359, wp_mail_smtp.php:364
90
msgid "Return Path"
91
msgstr ""
92
93
- #: wp_mail_smtp.php:369
94
msgid "Set the return-path to match the From Email"
95
msgstr ""
96
97
- #: wp_mail_smtp.php:373
98
msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent."
99
msgstr ""
100
101
- #: wp_mail_smtp.php:383, wp_mail_smtp.php:388
102
msgid "Hide Announcements"
103
msgstr ""
104
105
- #: wp_mail_smtp.php:393
106
msgid "Check this if you would like to hide plugin announcements and update details."
107
msgstr ""
108
109
- #: wp_mail_smtp.php:401, wp_mail_smtp.php:501, wp_mail_smtp.php:577
110
msgid "Save Changes"
111
msgstr ""
112
113
- #: wp_mail_smtp.php:406
114
msgid "SMTP Options"
115
msgstr ""
116
117
- #: wp_mail_smtp.php:408
118
msgid "These options only apply if you have chosen to send mail by SMTP above."
119
msgstr ""
120
121
- #: wp_mail_smtp.php:413
122
msgid "SMTP Host"
123
msgstr ""
124
125
- #: wp_mail_smtp.php:421, wp_mail_smtp.php:539
126
msgid "SMTP Port"
127
msgstr ""
128
129
- #: wp_mail_smtp.php:428, wp_mail_smtp.php:432, wp_mail_smtp.php:547, wp_mail_smtp.php:553
130
msgid "Encryption"
131
msgstr ""
132
133
- #: wp_mail_smtp.php:437, wp_mail_smtp.php:559
134
msgid "No encryption."
135
msgstr ""
136
137
- #: wp_mail_smtp.php:442, wp_mail_smtp.php:564
138
msgid "Use SSL encryption."
139
msgstr ""
140
141
- #: wp_mail_smtp.php:447, wp_mail_smtp.php:569
142
msgid "Use TLS encryption."
143
msgstr ""
144
145
- #: wp_mail_smtp.php:450
146
msgid "TLS is not the same as STARTTLS. For most servers SSL is the recommended option."
147
msgstr ""
148
149
- #: wp_mail_smtp.php:455, wp_mail_smtp.php:459
150
msgid "Authentication"
151
msgstr ""
152
153
- #: wp_mail_smtp.php:464
154
msgid "No: Do not use SMTP authentication."
155
msgstr ""
156
157
- #: wp_mail_smtp.php:469
158
msgid "Yes: Use SMTP authentication."
159
msgstr ""
160
161
- #: wp_mail_smtp.php:473
162
msgid "If this is set to no, the values below are ignored."
163
msgstr ""
164
165
- #: wp_mail_smtp.php:480, wp_mail_smtp.php:523
166
msgid "Username"
167
msgstr ""
168
169
- #: wp_mail_smtp.php:488, wp_mail_smtp.php:531
170
msgid "Password"
171
msgstr ""
172
173
- #: wp_mail_smtp.php:494
174
msgid "This is in plain text because it must not be stored encrypted."
175
msgstr ""
176
177
- #: wp_mail_smtp.php:508
178
msgid "Pepipost SMTP Options"
179
msgstr ""
180
181
- #: wp_mail_smtp.php:514
182
msgid "You need to signup on %s to get the SMTP username/password."
183
msgstr ""
184
185
- #: wp_mail_smtp.php:586
186
msgid "Send a Test Email"
187
msgstr ""
188
189
- #: wp_mail_smtp.php:594
190
msgid "To"
191
msgstr ""
192
193
- #: wp_mail_smtp.php:598
194
msgid "Type an email address here and then click Send Test to generate a test email."
195
msgstr ""
196
197
- #: wp_mail_smtp.php:640
198
msgid "WP Mail SMTP"
199
msgstr ""
200
201
- #: wp_mail_smtp.php:746
202
msgid "Settings"
203
msgstr ""
14
"X-Poedit-SourceCharset: UTF-8\n"
15
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
17
+ #: wp_mail_smtp.php:251
18
msgid "Test mail to %s"
19
msgstr ""
20
21
+ #: wp_mail_smtp.php:252
22
msgid "This is a test email generated by the WP Mail SMTP WordPress plugin."
23
msgstr ""
24
25
+ #: wp_mail_smtp.php:268
26
msgid "Test Message Sent"
27
msgstr ""
28
29
+ #: wp_mail_smtp.php:269
30
msgid "The result was:"
31
msgstr ""
32
33
+ #: wp_mail_smtp.php:272
34
msgid "The full debugging output is shown below:"
35
msgstr ""
36
37
+ #: wp_mail_smtp.php:275
38
msgid "The SMTP debugging output is shown below:"
39
msgstr ""
40
41
+ #: wp_mail_smtp.php:242, wp_mail_smtp.php:616
42
msgid "Send Test"
43
msgstr ""
44
45
+ #: wp_mail_smtp.php:287, wp_mail_smtp.php:652
46
msgid "WP Mail SMTP Settings"
47
msgstr ""
48
49
+ #: wp_mail_smtp.php:296, src/Admin/Pages/Settings.php:57
50
msgid "From Email"
51
msgstr ""
52
53
+ #: wp_mail_smtp.php:303
54
msgid "You can specify the email address that emails should be sent from. If you leave this blank, the default email will be used."
55
msgstr ""
56
57
+ #: wp_mail_smtp.php:306
58
msgid "<strong>Please Note:</strong> You appear to be using a version of WordPress prior to 2.3. Please ignore the From Name field and instead enter Name&lt;email@domain.com&gt; in this field."
59
msgstr ""
60
61
+ #: wp_mail_smtp.php:315, src/Admin/Pages/Settings.php:84
62
msgid "From Name"
63
msgstr ""
64
65
+ #: wp_mail_smtp.php:321
66
msgid "You can specify the name that emails should be sent from. If you leave this blank, the emails will be sent from WordPress."
67
msgstr ""
68
69
+ #: wp_mail_smtp.php:330, wp_mail_smtp.php:335, src/Admin/Pages/Settings.php:108
70
msgid "Mailer"
71
msgstr ""
72
73
+ #: wp_mail_smtp.php:340
74
msgid "Send all WordPress emails via SMTP."
75
msgstr ""
76
77
+ #: wp_mail_smtp.php:344
78
msgid "Use the PHP mail() function to send emails."
79
msgstr ""
80
81
+ #: wp_mail_smtp.php:350
82
msgid "Use Pepipost SMTP to send emails."
83
msgstr ""
84
85
+ #: wp_mail_smtp.php:356
86
msgid "Looking for high inbox delivery? Try Pepipost with easy setup and free emails. Learn more %1$shere%2$s."
87
msgstr ""
88
89
+ #: wp_mail_smtp.php:371, wp_mail_smtp.php:376, src/Admin/Pages/Settings.php:141
90
msgid "Return Path"
91
msgstr ""
92
93
+ #: wp_mail_smtp.php:381, src/Admin/Pages/Settings.php:149
94
msgid "Set the return-path to match the From Email"
95
msgstr ""
96
97
+ #: wp_mail_smtp.php:385, src/Admin/Pages/Settings.php:151
98
msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent."
99
msgstr ""
100
101
+ #: wp_mail_smtp.php:395, wp_mail_smtp.php:400, src/Admin/Pages/Misc.php:55
102
msgid "Hide Announcements"
103
msgstr ""
104
105
+ #: wp_mail_smtp.php:405, src/Admin/Pages/Misc.php:62
106
msgid "Check this if you would like to hide plugin announcements and update details."
107
msgstr ""
108
109
+ #: wp_mail_smtp.php:413, wp_mail_smtp.php:513, wp_mail_smtp.php:589
110
msgid "Save Changes"
111
msgstr ""
112
113
+ #: wp_mail_smtp.php:418
114
msgid "SMTP Options"
115
msgstr ""
116
117
+ #: wp_mail_smtp.php:420
118
msgid "These options only apply if you have chosen to send mail by SMTP above."
119
msgstr ""
120
121
+ #: wp_mail_smtp.php:425, src/Providers/OptionAbstract.php:126
122
msgid "SMTP Host"
123
msgstr ""
124
125
+ #: wp_mail_smtp.php:433, wp_mail_smtp.php:551, src/Providers/OptionAbstract.php:140
126
msgid "SMTP Port"
127
msgstr ""
128
129
+ #: wp_mail_smtp.php:440, wp_mail_smtp.php:444, wp_mail_smtp.php:559, wp_mail_smtp.php:565, src/Providers/OptionAbstract.php:154
130
msgid "Encryption"
131
msgstr ""
132
133
+ #: wp_mail_smtp.php:449, wp_mail_smtp.php:571
134
msgid "No encryption."
135
msgstr ""
136
137
+ #: wp_mail_smtp.php:454, wp_mail_smtp.php:576
138
msgid "Use SSL encryption."
139
msgstr ""
140
141
+ #: wp_mail_smtp.php:459, wp_mail_smtp.php:581
142
msgid "Use TLS encryption."
143
msgstr ""
144
145
+ #: wp_mail_smtp.php:462, src/Providers/OptionAbstract.php:186
146
msgid "TLS is not the same as STARTTLS. For most servers SSL is the recommended option."
147
msgstr ""
148
149
+ #: wp_mail_smtp.php:467, wp_mail_smtp.php:471, src/Providers/OptionAbstract.php:195
150
msgid "Authentication"
151
msgstr ""
152
153
+ #: wp_mail_smtp.php:476
154
msgid "No: Do not use SMTP authentication."
155
msgstr ""
156
157
+ #: wp_mail_smtp.php:481
158
msgid "Yes: Use SMTP authentication."
159
msgstr ""
160
161
+ #: wp_mail_smtp.php:485
162
msgid "If this is set to no, the values below are ignored."
163
msgstr ""
164
165
+ #: wp_mail_smtp.php:492, wp_mail_smtp.php:535
166
msgid "Username"
167
msgstr ""
168
169
+ #: wp_mail_smtp.php:500, wp_mail_smtp.php:543
170
msgid "Password"
171
msgstr ""
172
173
+ #: wp_mail_smtp.php:506
174
msgid "This is in plain text because it must not be stored encrypted."
175
msgstr ""
176
177
+ #: wp_mail_smtp.php:520
178
msgid "Pepipost SMTP Options"
179
msgstr ""
180
181
+ #: wp_mail_smtp.php:526
182
msgid "You need to signup on %s to get the SMTP username/password."
183
msgstr ""
184
185
+ #: wp_mail_smtp.php:598, src/Admin/Pages/Test.php:48
186
msgid "Send a Test Email"
187
msgstr ""
188
189
+ #: wp_mail_smtp.php:606
190
msgid "To"
191
msgstr ""
192
193
+ #: wp_mail_smtp.php:610
194
msgid "Type an email address here and then click Send Test to generate a test email."
195
msgstr ""
196
197
+ #: wp_mail_smtp.php:652, src/Admin/Area.php:127
198
msgid "WP Mail SMTP"
199
msgstr ""
200
201
+ #: wp_mail_smtp.php:758, src/Admin/Area.php:363, src/Admin/Pages/Settings.php:25
202
msgid "Settings"
203
msgstr ""
204
+
205
+ #: src/Admin/Area.php:88
206
+ msgid "There was an error while processing the authentication request: %s. Please try again."
207
+ msgstr ""
208
+
209
+ #: src/Admin/Area.php:95
210
+ msgid "There was an error while processing the authentication request. Please try again."
211
+ msgstr ""
212
+
213
+ #: src/Admin/Area.php:102
214
+ msgid "There was an error while processing the authentication request. Please make sure that you have Client ID and Client Secret both valid and saved."
215
+ msgstr ""
216
+
217
+ #: src/Admin/Area.php:111
218
+ msgid "You have successfully linked the current site with you Google API project. Now you can start sending emails through Google."
219
+ msgstr ""
220
+
221
+ #: src/Admin/Area.php:126
222
+ msgid "WP Mail SMTP Options"
223
+ msgstr ""
224
+
225
+ #: src/Admin/Area.php:199
226
+ msgid "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\">WordPress.org</a> to help us spread the word. Thank you from the WP Mail SMTP team!"
227
+ msgstr ""
228
+
229
+ #: src/Providers/OptionAbstract.php:164
230
+ msgid "None"
231
+ msgstr ""
232
+
233
+ #: src/Providers/OptionAbstract.php:173
234
+ msgid "SSL"
235
+ msgstr ""
236
+
237
+ #: src/Providers/OptionAbstract.php:182
238
+ msgid "TLS"
239
+ msgstr ""
240
+
241
+ #: src/Providers/OptionAbstract.php:205
242
+ msgid "On"
243
+ msgstr ""
244
+
245
+ #: src/Providers/OptionAbstract.php:206
246
+ msgid "Off"
247
+ msgstr ""
248
+
249
+ #: src/Providers/OptionAbstract.php:214
250
+ msgid "SMTP Username"
251
+ msgstr ""
252
+
253
+ #: src/Providers/OptionAbstract.php:228
254
+ msgid "SMTP Password"
255
+ msgstr ""
256
+
257
+ #: src/Providers/OptionAbstract.php:242
258
+ msgid "The password is stored in plain text. We highly recommend you setup your password in your WordPress configuration file for improved security; to do this add the lines below to your %s file."
259
+ msgstr ""
260
+
261
+ #: src/Providers/OptionAbstract.php:279
262
+ msgid "%1$s requires PHP %2$s to work and does not support your current PHP version %3$s. Please contact your host and request a PHP upgrade to the latest one."
263
+ msgstr ""
264
+
265
+ #: src/Providers/OptionAbstract.php:286
266
+ msgid "Meanwhile you can switch to the \"Other SMTP\" Mailer option."
267
+ msgstr ""
268
+
269
+ #: src/Admin/Pages/Misc.php:24
270
+ msgid "Misc"
271
+ msgstr ""
272
+
273
+ #: src/Admin/Pages/Misc.php:48
274
+ msgid "General"
275
+ msgstr ""
276
+
277
+ #: src/Admin/Pages/Misc.php:67, src/Admin/Pages/Settings.php:182
278
+ msgid "Save Settings"
279
+ msgstr ""
280
+
281
+ #: src/Admin/Pages/Misc.php:95, src/Admin/Pages/Settings.php:232
282
+ msgid "Settings were successfully saved."
283
+ msgstr ""
284
+
285
+ #: src/Admin/Pages/Settings.php:50
286
+ msgid "Mail"
287
+ msgstr ""
288
+
289
+ #: src/Admin/Pages/Settings.php:66
290
+ msgid "You can specify the email address that emails should be sent from."
291
+ msgstr ""
292
+
293
+ #: src/Admin/Pages/Settings.php:70
294
+ msgid "If you leave this blank, the default one will be used: %s."
295
+ msgstr ""
296
+
297
+ #: src/Admin/Pages/Settings.php:76
298
+ msgid "Please note if you are sending using an email provider (Gmail, Yahoo, Hotmail, Outlook.com, etc) this setting should be your email address for that account."
299
+ msgstr ""
300
+
301
+ #: src/Admin/Pages/Settings.php:93
302
+ msgid "You can specify the name that emails should be sent from."
303
+ msgstr ""
304
+
305
+ #: src/Admin/Pages/Settings.php:97
306
+ msgid "If you leave this blank, the emails will be sent from %s."
307
+ msgstr ""
308
+
309
+ #: src/Admin/Pages/Settings.php:152
310
+ msgid "If unchecked bounce messages may be lost."
311
+ msgstr ""
312
+
313
+ #: src/Admin/Pages/Test.php:26
314
+ msgid "Email Test"
315
+ msgstr ""
316
+
317
+ #: src/Admin/Pages/Test.php:55
318
+ msgid "Send To"
319
+ msgstr ""
320
+
321
+ #: src/Admin/Pages/Test.php:60
322
+ msgid "Type an email address here and then click a button below to generate a test email."
323
+ msgstr ""
324
+
325
+ #: src/Admin/Pages/Test.php:66
326
+ msgid "Send Email"
327
+ msgstr ""
328
+
329
+ #: src/Admin/Pages/Test.php:86
330
+ msgid "Test failed. Please use a valid email address and try to resend the test email."
331
+ msgstr ""
332
+
333
+ #: src/Admin/Pages/Test.php:110
334
+ msgid "Test email to %s"
335
+ msgstr ""
336
+
337
+ #: src/Admin/Pages/Test.php:113
338
+ msgid "This email was sent by %s mailer, and generated by the WP Mail SMTP WordPress plugin."
339
+ msgstr ""
340
+
341
+ #: src/Admin/Pages/Test.php:126
342
+ msgid "Your email was sent successfully!"
343
+ msgstr ""
344
+
345
+ #: src/Admin/Pages/Test.php:133
346
+ msgid "There was a problem while sending a test email."
347
+ msgstr ""
348
+
349
+ #: src/Admin/Pages/Test.php:134
350
+ msgid "The related debugging output is shown below:"
351
+ msgstr ""
352
+
353
+ #: src/Providers/Gmail/Options.php:25
354
+ msgid "Gmail"
355
+ msgstr ""
356
+
357
+ #: src/Providers/Gmail/Options.php:29
358
+ msgid "Send emails using your Gmail or G Suite (formerly Google Apps) account, all while keeping your login credentials safe. Other Google SMTP methods require enabling less secure apps in your account and entering your password. However, this integration uses the Google API to improve email delivery issues while keeping your site secure.<br><br>Read our %1$sGmail documentation%2$s to learn how to configure Gmail or G Suite."
359
+ msgstr ""
360
+
361
+ #: src/Providers/Gmail/Options.php:63
362
+ msgid "Client ID"
363
+ msgstr ""
364
+
365
+ #: src/Providers/Gmail/Options.php:77
366
+ msgid "Client Secret"
367
+ msgstr ""
368
+
369
+ #: src/Providers/Gmail/Options.php:91
370
+ msgid "Authorized redirect URI"
371
+ msgstr ""
372
+
373
+ #: src/Providers/Gmail/Options.php:99
374
+ msgid "Copy URL to clipboard"
375
+ msgstr ""
376
+
377
+ #: src/Providers/Gmail/Options.php:104
378
+ msgid "This is the path on your site that you will be redirected to after you have authenticated with Google."
379
+ msgstr ""
380
+
381
+ #: src/Providers/Gmail/Options.php:106
382
+ msgid "You need to copy this URL into \"Authorized redirect URIs\" field for you web application on Google APIs site for your project there."
383
+ msgstr ""
384
+
385
+ #: src/Providers/Gmail/Options.php:116
386
+ msgid "Authorize"
387
+ msgstr ""
388
+
389
+ #: src/Providers/Gmail/Options.php:120
390
+ msgid "Allow plugin to send emails using your Google account"
391
+ msgstr ""
392
+
393
+ #: src/Providers/Gmail/Options.php:123
394
+ msgid "Click the button above to confirm authorization."
395
+ msgstr ""
396
+
397
+ #: src/Providers/Mail/Options.php:25
398
+ msgid "Default (none)"
399
+ msgstr ""
400
+
401
+ #: src/Providers/Mail/Options.php:37
402
+ msgid "You currently have the native WordPress option selected. Please select any other Mailer option above to continue the setup."
403
+ msgstr ""
404
+
405
+ #: src/Providers/Mailgun/Options.php:25
406
+ msgid "Mailgun"
407
+ msgstr ""
408
+
409
+ #: src/Providers/Mailgun/Options.php:29
410
+ msgid "%1$sMailgun%2$s is one of the leading transactional email services trusted by over 10,000 website and application developers. They provide users 10,000 free emails per month.<br><br>Read our %3$sMailgun documentation%4$s to learn how to configure Mailgun and improve your email deliverability."
411
+ msgstr ""
412
+
413
+ #: src/Providers/Mailgun/Options.php:57
414
+ msgid "Private API Key"
415
+ msgstr ""
416
+
417
+ #: src/Providers/Mailgun/Options.php:69
418
+ msgid "Follow this link to get an API Key from Mailgun: %s."
419
+ msgstr ""
420
+
421
+ #: src/Providers/Mailgun/Options.php:71
422
+ msgid "Get a Private API Key"
423
+ msgstr ""
424
+
425
+ #: src/Providers/Mailgun/Options.php:82
426
+ msgid "Domain Name"
427
+ msgstr ""
428
+
429
+ #: src/Providers/Mailgun/Options.php:94
430
+ msgid "Follow this link to get a Domain Name from Mailgun: %s."
431
+ msgstr ""
432
+
433
+ #: src/Providers/Mailgun/Options.php:96
434
+ msgid "Get a Domain Name"
435
+ msgstr ""
436
+
437
+ #: src/Providers/Pepipost/Options.php:25
438
+ msgid "Pepipost"
439
+ msgstr ""
440
+
441
+ #: src/Providers/Sendgrid/Options.php:25
442
+ msgid "SendGrid"
443
+ msgstr ""
444
+
445
+ #: src/Providers/Sendgrid/Options.php:29
446
+ 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 month.<br><br>Read our %3$sSendGrid documentation%4$s to learn how to set up SendGrid and improve your email deliverability."
447
+ msgstr ""
448
+
449
+ #: src/Providers/Sendgrid/Options.php:57
450
+ msgid "API Key"
451
+ msgstr ""
452
+
453
+ #: src/Providers/Sendgrid/Options.php:69
454
+ msgid "Follow this link to get an API Key from SendGrid: %s."
455
+ msgstr ""
456
+
457
+ #: src/Providers/Sendgrid/Options.php:71
458
+ msgid "Create API Key"
459
+ msgstr ""
460
+
461
+ #: src/Providers/Sendgrid/Options.php:79
462
+ msgid "To send emails you will need only a %s access level for this API key."
463
+ msgstr ""
464
+
465
+ #: src/Providers/SMTP/Options.php:25
466
+ msgid "Other SMTP"
467
+ msgstr ""
468
+
469
+ #: src/Providers/SMTP/Options.php:29
470
+ msgid "Use the SMTP details provided by your hosting provider or email service.<br><br>To see recommended settings for the popular services as well as troubleshooting tips, check out our %1$sSMTP documentation%2$s."
471
+ msgstr ""
readme.txt CHANGED
@@ -1,36 +1,93 @@
1
=== WP Mail SMTP by WPForms ===
2
- Contributors: wpforms, smub, jaredatch, slaFFik
3
- Donate link: https://wpforms.com/
4
- Tags: mail, smtp, wp_mail, mailer, phpmailer
5
- Requires at least: 2.7
6
Tested up to: 4.9
7
Stable tag: trunk
8
9
The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 700k sites.
10
11
== Description ==
12
13
- This plugin reconfigures the wp_mail() function to use SMTP instead of mail() and creates an options page that allows you to specify various options.
14
15
- You can set the following options:
16
17
- * Specify the from name and email address for outgoing email.
18
- * Choose to send mail by SMTP or PHP's mail() function.
19
- * Specify an SMTP host (defaults to localhost).
20
- * Specify an SMTP port (defaults to 25).
21
- * Choose SSL / TLS encryption (not the same as STARTTLS).
22
- * Choose to use SMTP authentication or not (defaults to not).
23
- * Specify an SMTP username and password.
24
25
- WP Mail SMTP plugin works with all major email services such as Gmail, Yahoo, Outlook, Microsoft Live, and any other email sending service that offers SMTP.
26
27
- = Why WP Mail SMTP =
28
29
- The goal of WP Mail SMTP plugin is to help fix the common "WordPress not sending an email issue".
30
31
- Often times an email sent out by your WordPress site either lands in the spam folder or get completely rejected by popular email providers.
32
33
- SMTP (Simple Mail Transfer Protocol) is the industry standard for sending emails. WP Mail SMTP helps you use proper authentication which increases email deliverability.
34
35
= Credits =
36
@@ -40,11 +97,9 @@ You can try the <a href="https://wordpress.org/plugins/wpforms-lite/" rel="frien
40
41
= What's Next =
42
43
- If you like this plugin, then consider checking out our other projects:
44
45
* <a href="http://optinmonster.com/" rel="friend" title="OptinMonster">OptinMonster</a> - Get More Email Subscribers
46
- * <a href="http://soliloquywp.com/" rel="friend" title="Soliloquy">Soliloquy</a> - Best WordPress Slider Plugin
47
- * <a href="http://enviragallery.com/" rel="friend" title="Envira Gallery">Envira Gallery</a> - Best WordPress Gallery Plugin
48
* <a href="https://www.monsterinsights.com/" rel="friend" title="MonsterInsights">MonsterInsights</a> - Best Google Analytics Plugin for WordPress
49
50
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>.
@@ -54,28 +109,24 @@ Visit <a href="http://www.wpbeginner.com/" rel="friend" title="WPBeginner">WPBeg
54
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>)
55
2. Activate WP Mail SMTP by WPForms.
56
3. Navigate to the Settings area of WP Mail SMTP in the WordPress admin.
57
- 4. Want to support us? Consider trying <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms Pro</a> - the best WordPress contact form plugin!
58
59
== Frequently Asked Questions ==
60
61
- = My plugin still sends mail via the mail() function =
62
63
- If other plugins you're using are not coded to use the wp_mail() function but instead call PHP's mail() function directly, they will bypass the settings of this plugin. Normally, you can edit the other plugins and simply replace the `mail(` calls with `wp_mail(` (just adding wp_ in front) and this will work. I've tested this on a couple of plugins and it works, but it may not work on all plugins.
64
65
- = Will this plugin work with WordPress versions less than 2.7? =
66
67
- No. WordPress 2.7 changed the way options were updated, so the options page will only work on 2.7 or later.
68
69
- = Can I use this plugin to send email via Gmail / Google Apps =
70
71
- Yes. Use these settings:
72
- Mailer: SMTP
73
- SMTP Host: smtp.gmail.com
74
- SMTP Port: 465
75
- Encryption: SSL
76
- Authentication: Yes
77
- Username: your full gmail address
78
- Password: your mail password
79
80
= Can you add feature x, y or z to the plugin? =
81
@@ -86,21 +137,35 @@ By all means please contact us to discuss features or options you'd like to see
86
87
== Screenshots ==
88
89
- 1. Advanced Email Options
90
- 2. SMTP Options
91
- 3. Pepipost SMTP Options
92
- 4. Send a Test Email
93
94
== Changelog ==
95
96
- = [0.11.2] - 2017-11-28 =
97
- * Added: Setting to hide annoucement feed.
98
* Changed: Announcement feed data.
99
100
- = [0.11.1] - 2017-10-30 =
101
* Fixed: Older PHP compatibility fix.
102
103
- = [0.11] - 2017-10-30 =
104
* Added: Helper description to Return Path option.
105
* Added: Filter `wp_mail_smtp_admin_test_email_smtp_debug` to increase the debug message verbosity.
106
* Added: PHP 5.2 notice.
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: 3.6
5
Tested up to: 4.9
6
Stable tag: trunk
7
+ Requires PHP: 5.3
8
9
The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 700k 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 700,000 websites use WP Mail SMTP to fix their email deliverability issues.
16
17
+ WP Mail SMTP fixes your email deliverability by reconfiguring the wp_mail() PHP function to use a proper SMTP provider.
18
+
19
+ = What is SMTP? =
20
+
21
+ SMTP (Simple Mail Transfer Protocol) is an industry standard for sending emails. SMTP helps increase email deliverability by using proper authentication.
22
+
23
+ Popular email clients like Gmail, Yahoo, Outlook, etc are constantly improving their services to reduce email spam. One of the things their spam tools look for is whether an email is originating from the location it claims to be originating from.
24
+
25
+ If the proper authentication isn't there, then the emails either go in your SPAM folder or worst not get delivered at all.
26
+
27
+ 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>.
28
+
29
+ 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.
30
+
31
+ The combination of two causes your WordPress emails to not get delivered.
32
+
33
+ = How does WP Mail SMTP work? =
34
+
35
+ WP Mail SMTP plugin allows you to easily reconfigure the wp_mail() function to use a trusted SMTP provider.
36
+
37
+ This helps you fix all WordPress not sending email issues.
38
+
39
+ WP Mail SMTP plugin includes four different SMTP setup options:
40
+
41
+ 1. Mailgun SMTP
42
+ 2. SendGrid SMTP
43
+ 3. Gmail SMTP
44
+ 4. All Other SMTP
45
+
46
+ For all options, you can specify the "from name" and "email address" for outgoing emails.
47
+
48
+ 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.
49
+
50
+ = Mailgun SMTP =
51
52
+ 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.
53
54
+ 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.
55
56
+ Read our <a href="https://wpforms.com/how-to-send-wordpress-emails-with-mailgun/" rel="friend">Mailgun documentation</a> for more details.
57
58
+ = Gmail SMTP =
59
60
+ 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.
61
+
62
+ 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.
63
+
64
+ Unlike other Gmail SMTP plugins, our Gmail SMTP option uses OAuth to authenticate your Google account, keeping your login information 100% secure.
65
+
66
+ Read our <a href="https://wpforms.com/how-to-securely-send-wordpress-emails-using-gmail-smtp/" rel="friend">Gmail documentation</a> for more details.
67
+
68
+ = SendGrid SMTP =
69
+
70
+ 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.
71
+
72
+ Read our <a href="https://wpforms.com/fix-wordpress-email-notifications-with-sendgrid/" rel="friend">SendGrid documentation</a> for more details.
73
+
74
+ = Other SMTP =
75
+
76
+ 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.
77
+
78
+ You can set the following options:
79
+
80
+ * Specify an SMTP host.
81
+ * Specify an SMTP port.
82
+ * Choose SSL / TLS encryption.
83
+ * Choose to use SMTP authentication or not.
84
+ * Specify an SMTP username and password.
85
+
86
+ WP Mail SMTP also gives you the option to insert your password in your wp-config.php file, so it's not visible in your WordPress settings.
87
+
88
+ To see recommended settings for the popular services as well as troubleshooting tips, check out our <a href="https://wpforms.com/docs/how-to-set-up-smtp-using-the-wp-mail-smtp-plugin/" rel="friend">SMTP documentation</a>.
89
+
90
+ We hope that you find WP Mail SMTP plugin helpful.
91
92
= Credits =
93
97
98
= What's Next =
99
100
+ If you like this plugin, then please consider checking out our other popular plugins:
101
102
* <a href="http://optinmonster.com/" rel="friend" title="OptinMonster">OptinMonster</a> - Get More Email Subscribers
103
* <a href="https://www.monsterinsights.com/" rel="friend" title="MonsterInsights">MonsterInsights</a> - Best Google Analytics Plugin for WordPress
104
105
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>.
109
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>)
110
2. Activate WP Mail SMTP by WPForms.
111
3. Navigate to the Settings area of WP Mail SMTP in the WordPress admin.
112
+ 4. Choose your SMTP option (Mailgun SMTP, SendGrid SMTP, Gmail SMTP, or Other SMTP) and follow the instructions to set it up.
113
+ 5. Want to support us? Consider trying <a href="https://wpforms.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend" title="WPForms">WPForms Pro</a> - the best WordPress contact form plugin!
114
115
== Frequently Asked Questions ==
116
117
+ = Can I use this plugin to send email via Gmail, G Suite, Outlook.com, Office 365, Hotmail, Yahoo, or AOL SMTP? =
118
+
119
+ Yes! We have extensive documentation that covers setting up SMTP most popular email services.
120
121
+ <a href="How to Set Up WordPress SMTP Using WP Mail SMTP by WPForms" rel="friend">Read our docs</a> to see the correct SMTP settings for each service.
122
123
+ = Help! I need support or have an issue. =
124
125
+ Please read <a href="https://wordpress.org/support/topic/wp-mail-smtp-support-policy/">our support policy</a> for more information.
126
127
+ = I found a bug, now what? =
128
129
+ 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.
130
131
= Can you add feature x, y or z to the plugin? =
132
137
138
== Screenshots ==
139
140
+ 1. WP Mail SMTP Settings page
141
+ 2. Gmail / G Suite settings
142
+ 3. Mailgun settings
143
+ 4. SendGrid settings
144
+ 5. SMTP settings
145
+ 6. Send a Test Email
146
147
== Changelog ==
148
149
+ = 1.0.0 - 2017-12-12 =
150
+ * Added: Automatic migration tool to move options from older storage format to a new one.
151
+ * Added: Added Gmail & G Suite email provider integration - without your email and password.
152
+ * Added: Added SendGrid email provider integration - using the API key only.
153
+ * Added: Added Mailgun email provider integration - using the API key and configured domain only.
154
+ * 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.
155
+ * Changed: The new look of the admin area.
156
+ * Changed: SMTP password field now has "password" type.
157
+ * Changed: SMTP password field does not display real password at all when using constants in `wp-config.php` to define it.
158
+ * Changed: Escape properly all translations.
159
+ * Changed: More helpful test email content (with a mailer name).
160
+
161
+ = 0.11.2 - 2017-11-28 =
162
+ * Added: Setting to hide announcement feed.
163
* Changed: Announcement feed data.
164
165
+ = 0.11.1 - 2017-10-30 =
166
* Fixed: Older PHP compatibility fix.
167
168
+ = 0.11 - 2017-10-30 =
169
* Added: Helper description to Return Path option.
170
* Added: Filter `wp_mail_smtp_admin_test_email_smtp_debug` to increase the debug message verbosity.
171
* Added: PHP 5.2 notice.
src/AM_Notification.php ADDED
@@ -0,0 +1,452 @@
1
+ <?php
2
+
3
+ namespace WPMailSMTP;
4
+
5
+ /**
6
+ * Awesome Motive Notifications
7
+ *
8
+ * This creates a custom post type (if it doesn't exist) and calls the API to
9
+ * retrieve notifications for this product.
10
+ *
11
+ * @package AwesomeMotive
12
+ * @author Benjamin Rojas
13
+ * @license GPL-2.0+
14
+ * @copyright Copyright (c) 2017, Retyp LLC
15
+ * @version 1.0.2
16
+ */
17
+ class AM_Notification {
18
+ /**
19
+ * The api url we are calling.
20
+ *
21
+ * @since 1.0.0
22
+ *
23
+ * @var string
24
+ */
25
+ public $api_url = 'https://api.awesomemotive.com/v1/notification/';
26
+
27
+ /**
28
+ * A unique slug for this plugin.
29
+ * (Not the WordPress plugin slug)
30
+ *
31
+ * @since 1.0.0
32
+ *
33
+ * @var string
34
+ */
35
+ public $plugin;
36
+
37
+ /**
38
+ * The current plugin version.
39
+ *
40
+ * @since 1.0.0
41
+ *
42
+ * @var string
43
+ */
44
+ public $plugin_version;
45
+
46
+ /**
47
+ * Flag if a notice has been registered.
48
+ *
49
+ * @since 1.0.0
50
+ *
51
+ * @var bool
52
+ */
53
+ public static $registered = false;
54
+
55
+ /**
56
+ * Construct.
57
+ *
58
+ * @since 1.0.0
59
+ *
60
+ * @param string $plugin The plugin slug.
61
+ * @param mixed $version The version of the plugin.
62
+ */
63
+ public function __construct( $plugin = '', $version = 0 ) {
64
+ $this->plugin = $plugin;
65
+ $this->plugin_version = $version;
66
+
67
+ add_action( 'init', array( $this, 'custom_post_type' ) );
68
+ add_action( 'admin_init', array( $this, 'get_remote_notifications' ), 100 );
69
+ add_action( 'admin_notices', array( $this, 'display_notifications' ) );
70
+ add_action( 'wp_ajax_am_notification_dismiss', array( $this, 'dismiss_notification' ) );
71
+ }
72
+
73
+ /**
74
+ * Registers a custom post type.
75
+ *
76
+ * @since 1.0.0
77
+ */
78
+ public function custom_post_type() {
79
+ register_post_type( 'amn_' . $this->plugin, array(
80
+ 'label' => $this->plugin . ' Announcements',
81
+ 'can_export' => false,
82
+ 'supports' => false,
83
+ ) );
84
+ }
85
+
86
+ /**
87
+ * Retrieve the remote notifications if the time has expired.
88
+ *
89
+ * @since 1.0.0
90
+ */
91
+ public function get_remote_notifications() {
92
+ if ( ! current_user_can( apply_filters( 'am_notifications_display', 'manage_options' ) ) ) {
93
+ return;
94
+ }
95
+
96
+ $last_checked = get_option( '_amn_' . $this->plugin . '_last_checked', strtotime( '-1 week' ) );
97
+
98
+ if ( $last_checked < strtotime( 'today midnight' ) ) {
99
+ $plugin_notifications = $this->get_plugin_notifications( 1 );
100
+ $notification_id = null;
101
+
102
+ if ( ! empty( $plugin_notifications ) ) {
103
+ // Unset it from the array.
104
+ $notification = $plugin_notifications[0];
105
+ $notification_id = get_post_meta( $notification->ID, 'notification_id', true );
106
+ }
107
+
108
+ $response = wp_remote_retrieve_body( wp_remote_post( $this->api_url, array(
109
+ 'body' => array(
110
+ 'slug' => $this->plugin,
111
+ 'version' => $this->plugin_version,
112
+ 'last_notification' => $notification_id,
113
+ ),
114
+ ) ) );
115
+
116
+ $data = json_decode( $response );
117
+
118
+ if ( ! empty( $data->id ) ) {
119
+ $notifications = array();
120
+
121
+ foreach ( (array) $data->slugs as $slug ) {
122
+ $notifications = array_merge(
123
+ $notifications,
124
+ (array) get_posts(
125
+ array(
126
+ 'post_type' => 'amn_' . $slug,
127
+ 'post_status' => 'all',
128
+ 'meta_key' => 'notification_id',
129
+ 'meta_value' => $data->id,
130
+ )
131
+ )
132
+ );
133
+ }
134
+
135
+ if ( empty( $notifications ) ) {
136
+ $new_notification_id = wp_insert_post( array(
137
+ 'post_content' => wp_kses_post( $data->content ),
138
+ 'post_type' => 'amn_' . $this->plugin,
139
+ ) );
140
+
141
+ update_post_meta( $new_notification_id, 'notification_id', absint( $data->id ) );
142
+ update_post_meta( $new_notification_id, 'type', sanitize_text_field( trim( $data->type ) ) );
143
+ update_post_meta( $new_notification_id, 'dismissable', (bool) $data->dismissible ? 1 : 0 );
144
+ update_post_meta( $new_notification_id, 'location', function_exists( 'wp_json_encode' ) ? wp_json_encode( $data->location ) : json_encode( $data->location ) );
145
+ update_post_meta( $new_notification_id, 'version', sanitize_text_field( trim( $data->version ) ) );
146
+ update_post_meta( $new_notification_id, 'viewed', 0 );
147
+ update_post_meta( $new_notification_id, 'expiration', $data->expiration ? absint( $data->expiration ) : false );
148
+ update_post_meta( $new_notification_id, 'plans', function_exists( 'wp_json_encode' ) ? wp_json_encode( $data->plans ) : json_encode( $data->plans ) );
149
+ }
150
+ }
151
+
152
+ // Possibly revoke notifications.
153
+ if ( ! empty( $data->revoked ) ) {
154
+ $this->revoke_notifications( $data->revoked );
155
+ }
156
+
157
+ // Set the option now so we can't run this again until after 24 hours.
158
+ update_option( '_amn_' . $this->plugin . '_last_checked', strtotime( 'today midnight' ) );
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Get local plugin notifications that have already been set.
164
+ *
165
+ * @since 1.0.0
166
+ *
167
+ * @param integer $limit Set the limit for how many posts to retrieve.
168
+ * @param array $args Any top-level arguments to add to the array.
169
+ *
170
+ * @return WP_Post[] WP_Post that match the query.
171
+ */
172
+ public function get_plugin_notifications( $limit = -1, $args = array() ) {
173
+ return get_posts(
174
+ array(
175
+ 'posts_per_page' => $limit,
176
+ 'post_type' => 'amn_' . $this->plugin,
177
+ ) + $args
178
+ );
179
+ }
180
+
181
+ /**
182
+ * Display any notifications that should be displayed.
183
+ *
184
+ * @since 1.0.0
185
+ */
186
+ public function display_notifications() {
187
+ if ( ! current_user_can( apply_filters( 'am_notifications_display', 'manage_options' ) ) ) {
188
+ return;
189
+ }
190
+
191
+ $plugin_notifications = $this->get_plugin_notifications( -1, array(
192
+ 'post_status' => 'all',
193
+ 'meta_key' => 'viewed',
194
+ 'meta_value' => '0',
195
+ ) );
196
+
197
+ $plugin_notifications = $this->validate_notifications( $plugin_notifications );
198
+
199
+ if ( ! empty( $plugin_notifications ) && ! self::$registered ) {
200
+ foreach ( $plugin_notifications as $notification ) {
201
+ $dismissable = get_post_meta( $notification->ID, 'dismissable', true );
202
+ $type = get_post_meta( $notification->ID, 'type', true );
203
+ ?>
204
+ <div class="am-notification am-notification-<?php echo $notification->ID; ?> notice notice-<?php echo $type; ?><?php echo $dismissable ? ' is-dismissible' : ''; ?>">
205
+ <?php echo $notification->post_content; ?>
206
+ </div>
207
+ <script type="text/javascript">
208
+ jQuery(document).ready(function ($) {
209
+ $(document).on('click', '.am-notification-<?php echo $notification->ID; ?> button.notice-dismiss', function (event) {
210
+ $.post(ajaxurl, {
211
+ action: 'am_notification_dismiss',
212
+ notification_id: '<?php echo $notification->ID; ?>'
213
+ });
214
+ });
215
+ });
216
+ </script>
217
+ <?php
218
+ }
219
+
220
+ self::$registered = true;
221
+ }
222
+ }
223
+
224
+ /**
225
+ * Validate the notifications before displaying them.
226
+ *
227
+ * @since 1.0.0
228
+ *
229
+ * @param array $plugin_notifications An array of plugin notifications.
230
+ *
231
+ * @return array A filtered array of plugin notifications.
232
+ */
233
+ public function validate_notifications( $plugin_notifications ) {
234
+ global $pagenow;
235
+
236
+ foreach ( $plugin_notifications as $key => $notification ) {
237
+ // Location validation.
238
+ $location = (array) json_decode( get_post_meta( $notification->ID, 'location', true ) );
239
+ $continue = false;
240
+ if ( ! in_array( 'everywhere', $location, true ) ) {
241
+ if ( in_array( 'index.php', $location, true ) && 'index.php' === $pagenow ) {
242
+ $continue = true;
243
+ }
244
+
245
+ if ( in_array( 'plugins.php', $location, true ) && 'plugins.php' === $pagenow ) {
246
+ $continue = true;
247
+ }
248
+
249
+ if ( ! $continue ) {
250
+ unset( $plugin_notifications[ $key ] );
251
+ }
252
+ }
253
+
254
+ // Plugin validation (OR conditional).
255
+ $plugins = (array) json_decode( get_post_meta( $notification->ID, 'plugins', true ) );
256
+ $continue = false;
257
+ if ( ! empty( $plugins ) ) {
258
+ foreach ( $plugins as $plugin ) {
259
+ if ( is_plugin_active( $plugin ) ) {
260
+ $continue = true;
261
+ }
262
+ }
263
+
264
+ if ( ! $continue ) {
265
+ unset( $plugin_notifications[ $key ] );
266
+ }
267
+ }
268
+
269
+ // Theme validation.
270
+ $theme = get_post_meta( $notification->ID, 'theme', true );
271
+ $continue = (string) wp_get_theme() === $theme;
272
+
273
+ if ( ! empty( $theme ) && ! $continue ) {
274
+ unset( $plugin_notifications[ $key ] );
275
+ }
276
+
277
+ // Version validation.
278
+ $version = get_post_meta( $notification->ID, 'version', true );
279
+ $continue = false;
280
+ if ( ! empty( $version ) ) {
281
+ if ( version_compare( $this->plugin_version, $version, '<=' ) ) {
282
+ $continue = true;
283
+ }
284
+
285
+ if ( ! $continue ) {
286
+ unset( $plugin_notifications[ $key ] );
287
+ }
288
+ }
289
+
290
+ // Expiration validation.
291
+ $expiration = get_post_meta( $notification->ID, 'expiration', true );
292
+ $continue = false;
293
+ if ( ! empty( $expiration ) ) {
294
+ if ( $expiration > time() ) {
295
+ $continue = true;
296
+ }
297
+
298
+ if ( ! $continue ) {
299
+ unset( $plugin_notifications[ $key ] );
300
+ }
301
+ }
302
+
303
+ // Plan validation.
304
+ $plans = (array) json_decode( get_post_meta( $notification->ID, 'plans', true ) );
305
+ $continue = false;
306
+ if ( ! empty( $plans ) ) {
307
+ $level = $this->get_plan_level();
308
+ if ( in_array( $level, $plans, true ) ) {
309
+ $continue = true;
310
+ }
311
+
312
+ if ( ! $continue ) {
313
+ unset( $plugin_notifications[ $key ] );
314
+ }
315
+ }
316
+ }
317
+
318
+ return $plugin_notifications;
319
+ }
320
+
321
+ /**
322
+ * Grab the current plan level.
323
+ *
324
+ * @since 1.0.0
325
+ *
326
+ * @return string The current plan level.
327
+ */
328
+ public function get_plan_level() {
329
+ // Prepare variables.
330
+ $key = '';
331
+ $level = '';
332
+ $option = false;
333
+ switch ( $this->plugin ) {
334
+ case 'wpforms' :
335
+ $option = get_option( 'wpforms_license' );
336
+ $key = is_array( $option ) && isset( $option['key'] ) ? $option['key'] : '';
337
+ $level = is_array( $option ) && isset( $option['type'] ) ? $option['type'] : '';
338
+
339
+ // Possibly check for a constant.
340
+ if ( empty( $key ) && defined( 'WPFORMS_LICENSE_KEY' ) ) {
341
+ $key = WPFORMS_LICENSE_KEY;
342
+ }
343
+ break;
344
+ case 'mi' :
345
+ $option = get_option( 'monsterinsights_license' );
346
+ $key = is_array( $option ) && isset( $option['key'] ) ? $option['key'] : '';
347
+ $level = is_array( $option ) && isset( $option['type'] ) ? $option['type'] : '';
348
+
349
+ // Possibly check for a constant.
350
+ if ( empty( $key ) && defined( 'MONSTERINSIGHTS_LICENSE_KEY' ) && is_string( MONSTERINSIGHTS_LICENSE_KEY ) && strlen( MONSTERINSIGHTS_LICENSE_KEY ) > 10 ) {
351
+ $key = MONSTERINSIGHTS_LICENSE_KEY;
352
+ }
353
+ break;
354
+ case 'sol' :
355
+ $option = get_option( 'soliloquy' );
356
+ $key = is_array( $option ) && isset( $option['key'] ) ? $option['key'] : '';
357
+ $level = is_array( $option ) && isset( $option['type'] ) ? $option['type'] : '';
358
+
359
+ // Possibly check for a constant.
360
+ if ( empty( $key ) && defined( 'SOLILOQUY_LICENSE_KEY' ) ) {
361
+ $key = SOLILOQUY_LICENSE_KEY;
362
+ }
363
+ break;
364
+ case 'envira' :
365
+ $option = get_option( 'envira_gallery' );
366
+ $key = is_array( $option ) && isset( $option['key'] ) ? $option['key'] : '';
367
+ $level = is_array( $option ) && isset( $option['type'] ) ? $option['type'] : '';
368
+
369
+ // Possibly check for a constant.
370
+ if ( empty( $key ) && defined( 'ENVIRA_LICENSE_KEY' ) ) {
371
+ $key = ENVIRA_LICENSE_KEY;
372
+ }
373
+ break;
374
+ case 'om' :
375
+ $option = get_option( 'optin_monster_api' );
376
+ $key = is_array( $option ) && isset( $option['api']['apikey'] ) ? $option['api']['apikey'] : '';
377
+
378
+ // Possibly check for a constant.
379
+ if ( empty( $key ) && defined( 'OPTINMONSTER_REST_API_LICENSE_KEY' ) ) {
380
+ $key = OPTINMONSTER_REST_API_LICENSE_KEY;
381
+ }
382
+
383
+ // If the key is still empty, check for the old legacy key.
384
+ if ( empty( $key ) ) {
385
+ $key = is_array( $option ) && isset( $option['api']['key'] ) ? $option['api']['key'] : '';
386
+ }
387
+ break;
388
+ }
389
+
390
+ // Possibly set the level to 'none' if the key is empty and no level has been set.
391
+ if ( empty( $key ) && empty( $level ) ) {
392
+ $level = 'none';
393
+ }
394
+
395
+ // Normalize the level.
396
+ switch ( $level ) {
397
+ case 'bronze' :
398
+ case 'personal' :
399
+ $level = 'basic';
400
+ break;
401
+ case 'silver' :
402
+ case 'multi' :
403
+ $level = 'plus';
404
+ break;
405
+ case 'gold' :
406
+ case 'developer' :
407
+ $level = 'pro';
408
+ break;
409
+ case 'platinum' :
410
+ case 'master' :
411
+ $level = 'ultimate';
412
+ break;
413
+ }
414
+
415
+ // Return the plan level.
416
+ return $level;
417
+ }
418
+
419
+ /**
420
+ * Dismiss the notification via AJAX.
421
+ *
422
+ * @since 1.0.0
423
+ */
424
+ public function dismiss_notification() {
425
+ if ( ! current_user_can( apply_filters( 'am_notifications_display', 'manage_options' ) ) ) {
426
+ die;
427
+ }
428
+
429
+ $notification_id = intval( $_POST['notification_id'] );
430
+ update_post_meta( $notification_id, 'viewed', 1 );
431
+ die;
432
+ }
433
+
434
+ /**
435
+ * Revokes notifications.
436
+ *
437
+ * @since 1.0.0
438
+ *
439
+ * @param array $ids An array of notification IDs to revoke.
440
+ */
441
+ public function revoke_notifications( $ids ) {
442
+ // Loop through each of the IDs and find the post that has it as meta.
443
+ foreach ( (array) $ids as $id ) {
444
+ $notifications = $this->get_plugin_notifications( -1, array( 'post_status' => 'all', 'meta_key' => 'notification_id', 'meta_value' => $id ) );
445
+ if ( $notifications ) {
446
+ foreach ( $notifications as $notification ) {
447
+ update_post_meta( $notification->ID, 'viewed', 1 );
448
+ }
449
+ }
450
+ }
451
+ }
452
+ }
src/Admin/Area.php ADDED
@@ -0,0 +1,450 @@