Version Description
- 2020-07-09 =
- Added: Gmail mailer now supports aliases.
- Added: Support both old PHPMailer v5 (WordPress <=5.4) and PHPMailer v6 (WordPress >=5.5).
- Changed: Pepipost mailer is now using the native API v5 instead of the SendGrid migration API.
- Fixed: Incorrect Mailgun Domain Name option was not showing an email delivery error.
- Fixed: Empty debug errors for the Sendinblue mailer are no more.
- Fixed: Properly compare From Email option value with a correct default email address from WP core.
Download this release
Release Info
Developer | slaFFik |
Plugin | WP Mail SMTP by WPForms |
Version | 2.2.1 |
Comparing to | |
See all releases |
Code changes from version 2.1.1 to 2.2.1
- assets/languages/wp-mail-smtp.pot +228 -629
- readme.txt +9 -1
- src/Admin/Area.php +8 -10
- src/Admin/PageAbstract.php +89 -87
- src/Admin/Pages/About.php +27 -3
- src/Admin/Pages/Logs.php +2 -3
- src/Admin/Pages/MiscTab.php +13 -2
- src/Admin/Pages/SettingsTab.php +54 -11
- src/Admin/Pages/TestTab.php +3 -3
- src/Core.php +114 -6
- src/MailCatcher.php +16 -1
- src/MailCatcherInterface.php +33 -0
- src/MailCatcherV6.php +149 -0
- src/Options.php +3 -1
- src/Processor.php +11 -21
- src/Providers/Gmail/Auth.php +331 -283
- src/Providers/Gmail/Mailer.php +20 -23
- src/Providers/Gmail/Options.php +251 -234
- src/Providers/Loader.php +5 -8
- src/Providers/MailerAbstract.php +7 -10
- src/Providers/MailerInterface.php +86 -83
- src/Providers/Mailgun/Mailer.php +466 -431
- src/Providers/PepipostAPI/Mailer.php +213 -181
- src/Providers/SMTPcom/Mailer.php +3 -2
- src/Providers/Sendgrid/Mailer.php +3 -2
- src/Providers/Sendinblue/Mailer.php +391 -393
- src/SiteHealth.php +92 -10
- src/Tasks/Task.php +1 -1
- src/WP.php +59 -0
- uninstall.php +134 -54
- vendor/google/auth/src/Credentials/UserRefreshCredentials.php +0 -23
- vendor/google/auth/src/CredentialsLoader.php +42 -28
- vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php +15 -1
- vendor/google/auth/src/HttpHandler/Guzzle7HttpHandler.php +21 -0
- vendor/google/auth/src/HttpHandler/HttpHandlerFactory.php +13 -5
- vendor/guzzlehttp/guzzle/src/ClientInterface.php +1 -1
- vendor/guzzlehttp/guzzle/src/Utils.php +6 -3
- vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +302 -1
- vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +311 -1
- wp_mail_smtp.php +2 -2
assets/languages/wp-mail-smtp.pot
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: WP Mail SMTP 2.
|
4 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
|
5 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
6 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
7 |
"MIME-Version: 1.0\n"
|
8 |
"Content-Type: text/plain; charset=UTF-8\n"
|
9 |
"Content-Transfer-Encoding: 8bit\n"
|
10 |
-
"POT-Creation-Date: 2020-
|
11 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
12 |
"X-Generator: WP-CLI 2.4.0\n"
|
13 |
"X-Domain: wp-mail-smtp\n"
|
@@ -33,1274 +33,1005 @@ msgid "https://wpforms.com/"
|
|
33 |
msgstr ""
|
34 |
|
35 |
#. translators: %s - error code, returned by Google API.
|
36 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:125
|
37 |
#: src/Admin/Area.php:125
|
38 |
msgid "There was an error while processing the authentication request: %s. Please try again."
|
39 |
msgstr ""
|
40 |
|
41 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:133
|
42 |
#: src/Admin/Area.php:133
|
43 |
msgid "There was an error while processing the authentication request. Please try again."
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:140
|
47 |
#: src/Admin/Area.php:140
|
48 |
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."
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:149
|
52 |
#: src/Admin/Area.php:149
|
53 |
msgid "You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail."
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:155
|
57 |
#: src/Admin/Area.php:155
|
58 |
msgid "You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook."
|
59 |
msgstr ""
|
60 |
|
61 |
#. translators: %s - Mailer anchor link.
|
62 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:186
|
63 |
#: src/Admin/Area.php:186
|
64 |
msgid "Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, <strong>please select and configure your <a href=\"%s\">Mailer</a></strong>."
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:209
|
68 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:210
|
69 |
-
#: build/wp-mail-smtp-pro/src/SiteHealth.php:40
|
70 |
#: src/Admin/Area.php:209
|
71 |
#: src/Admin/Area.php:210
|
72 |
#: src/SiteHealth.php:40
|
73 |
msgid "WP Mail SMTP"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:220
|
77 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:221
|
78 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:864
|
79 |
#: src/Admin/Area.php:220
|
80 |
#: src/Admin/Area.php:221
|
81 |
-
#: src/Admin/Area.php:
|
82 |
msgid "Settings"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:228
|
86 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:229
|
87 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/About.php:627
|
88 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/Logs.php:49
|
89 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:30
|
90 |
#: src/Admin/Area.php:228
|
91 |
#: src/Admin/Area.php:229
|
92 |
-
#: src/Admin/Pages/About.php:
|
93 |
-
#: src/Admin/Pages/Logs.php:
|
94 |
#: src/Admin/Pages/LogsTab.php:30
|
95 |
msgid "Email Log"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:238
|
99 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:239
|
100 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/About.php:105
|
101 |
#: src/Admin/Area.php:238
|
102 |
#: src/Admin/Area.php:239
|
103 |
-
#: src/Admin/Pages/About.php:
|
104 |
msgid "About Us"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:302
|
108 |
#: src/Admin/Area.php:302
|
109 |
msgid "Are you sure you want to reset the current provider connection? You will need to immediately create a new one to be able to send emails."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:303
|
113 |
#: src/Admin/Area.php:303
|
114 |
msgid "Changes that you made to the settings are not saved!"
|
115 |
msgstr ""
|
116 |
|
117 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:305
|
118 |
#: src/Admin/Area.php:305
|
119 |
msgid "Heads up!"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: build/wp-mail-smtp-pro/src/Admin/Area.php:307
|
123 |
#: src/Admin/Area.php:307
|
124 |
msgid "<p>The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.</p><p>Please consider selecting and configuring one of the other mailers.</p>"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#:
|
128 |
-
#:
|
129 |
-
#: src/Admin/Area.php:312
|
130 |
-
#: src/Admin/PageAbstract.php:81
|
131 |
msgid "Save Settings"
|
132 |
msgstr ""
|
133 |
|
134 |
-
#:
|
135 |
-
#: src/Admin/Area.php:313
|
136 |
msgid "Cancel"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#:
|
140 |
-
#: src/Admin/Area.php:314
|
141 |
msgid "Warning icon"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#:
|
145 |
-
#: src/Admin/Area.php:319
|
146 |
msgid "%name% is a PRO Feature"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#:
|
150 |
-
#: src/Admin/Area.php:320
|
151 |
msgid "Upgrade to Pro"
|
152 |
msgstr ""
|
153 |
|
154 |
-
#:
|
155 |
-
#: src/Admin/Area.php:324
|
156 |
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span>$50 off</span> regular price,<br>applied at checkout."
|
157 |
msgstr ""
|
158 |
|
159 |
-
#:
|
160 |
-
#: src/Admin/Area.php:333
|
161 |
msgid "Already purchased?"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#:
|
165 |
-
#:
|
166 |
-
#:
|
167 |
-
#: src/Admin/Area.php:400
|
168 |
-
#: src/Admin/Area.php:407
|
169 |
-
#: src/Admin/Pages/About.php:308
|
170 |
msgid "Activate"
|
171 |
msgstr ""
|
172 |
|
173 |
-
#:
|
174 |
-
#:
|
175 |
-
#: src/Admin/Area.php:401
|
176 |
-
#: src/Admin/Pages/About.php:300
|
177 |
msgid "Activated"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#:
|
181 |
-
#:
|
182 |
-
#: src/Admin/Area.php:402
|
183 |
-
#: src/Admin/Pages/About.php:297
|
184 |
msgid "Active"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#:
|
188 |
-
#:
|
189 |
-
#: src/Admin/Area.php:403
|
190 |
-
#: src/Admin/Pages/About.php:305
|
191 |
msgid "Inactive"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#:
|
195 |
-
#: src/Admin/Area.php:404
|
196 |
msgid "Processing..."
|
197 |
msgstr ""
|
198 |
|
199 |
-
#:
|
200 |
-
#: src/Admin/Area.php:405
|
201 |
msgid "Could not install a plugin. Please download from WordPress.org and install manually."
|
202 |
msgstr ""
|
203 |
|
204 |
-
#:
|
205 |
-
#: src/Admin/Area.php:406
|
206 |
msgid "Install and Activate"
|
207 |
msgstr ""
|
208 |
|
209 |
-
#:
|
210 |
-
#: src/Admin/Area.php:408
|
211 |
msgid "Download"
|
212 |
msgstr ""
|
213 |
|
214 |
#. translators: %1$s - WP.org link; %2$s - same WP.org link.
|
215 |
-
#:
|
216 |
-
#: src/Admin/Area.php:468
|
217 |
msgid "Please rate <strong>WP Mail SMTP</strong> <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">★★★★★</a> on <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org</a> to help us spread the word. Thank you from the WP Mail SMTP team!"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#:
|
221 |
-
#: src/Admin/Area.php:805
|
222 |
msgid "WP Mail SMTP Pro related message was successfully dismissed."
|
223 |
msgstr ""
|
224 |
|
225 |
-
#:
|
226 |
-
#: src/Admin/Area.php:824
|
227 |
msgid "Educational notice for this mailer was successfully dismissed."
|
228 |
msgstr ""
|
229 |
|
230 |
-
#:
|
231 |
-
#: src/Admin/Area.php:863
|
232 |
msgid "Go to WP Mail SMTP Settings page"
|
233 |
msgstr ""
|
234 |
|
235 |
-
#:
|
236 |
-
#: src/Admin/Area.php:870
|
237 |
msgid "Go to WP Mail SMTP Lite vs Pro comparison page"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#:
|
241 |
-
#: src/Admin/Area.php:871
|
242 |
msgid "Premium Support"
|
243 |
msgstr ""
|
244 |
|
245 |
#. translators: %s - plugin current license type.
|
246 |
-
#:
|
247 |
-
#:
|
248 |
-
#: src/Admin/Pages/About.php:98
|
249 |
-
#: src/Admin/Pages/About.php:526
|
250 |
msgid "%s vs Pro"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#:
|
254 |
-
#: src/Admin/Pages/About.php:170
|
255 |
msgid "Hello and welcome to WP Mail SMTP, the easiest and most popular WordPress SMTP plugin. We build software that helps your site reliably deliver emails every time."
|
256 |
msgstr ""
|
257 |
|
258 |
-
#:
|
259 |
-
#: src/Admin/Pages/About.php:174
|
260 |
msgid "Email deliverability has been a well-documented problem for all WordPress websites. However as WPForms grew, we became more aware of this painful issue that affects our users and the larger WordPress community. So we decided to solve this problem and make a solution that's beginner friendly."
|
261 |
msgstr ""
|
262 |
|
263 |
-
#:
|
264 |
-
#: src/Admin/Pages/About.php:177
|
265 |
msgid "Our goal is to make reliable email deliverability easy for WordPress."
|
266 |
msgstr ""
|
267 |
|
268 |
#. translators: %1$s - WPForms URL, %2$s - WPBeginner URL, %3$s - OptinMonster URL, %4$s - MonsterInsights URL, %5$s - RafflePress URL
|
269 |
-
#:
|
270 |
-
#: src/Admin/Pages/About.php:184
|
271 |
msgid "WP Mail SMTP is brought to you by the same team that's behind the most user friendly WordPress forms, <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">WPForms</a>, the largest WordPress resource site, <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">WPBeginner</a>, the most popular lead-generation software, <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">OptinMonster</a>, the best WordPress analytics plugin, <a href=\"%4$s\" target=\"_blank\" rel=\"noopener noreferrer\">MonsterInsights</a>, and the most powerful WordPress contest plugin, <a href=\"%5$s\" target=\"_blank\" rel=\"noopener noreferrer\">RafflePress</a>."
|
272 |
msgstr ""
|
273 |
|
274 |
-
#:
|
275 |
-
#: src/Admin/Pages/About.php:202
|
276 |
msgid "Yup, we know a thing or two about building awesome products that customers love."
|
277 |
msgstr ""
|
278 |
|
279 |
-
#:
|
280 |
-
#: src/Admin/Pages/About.php:208
|
281 |
msgid "The WPForms Team photo"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#:
|
285 |
-
#: src/Admin/Pages/About.php:210
|
286 |
msgid "The WPForms Team"
|
287 |
msgstr ""
|
288 |
|
|
|
|
|
|
|
|
|
289 |
#. translators: %s - status HTML text.
|
290 |
-
#:
|
291 |
-
#: src/Admin/Pages/About.php:250
|
292 |
msgid "Status: %s"
|
293 |
msgstr ""
|
294 |
|
295 |
-
#:
|
296 |
-
#: src/Admin/Pages/About.php:316
|
297 |
msgid "Not Installed"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#:
|
301 |
-
#: src/Admin/Pages/About.php:319
|
302 |
msgid "Install Plugin"
|
303 |
msgstr ""
|
304 |
|
305 |
-
#:
|
306 |
-
#: src/Admin/Pages/About.php:340
|
307 |
msgid "MonsterInsights"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#:
|
311 |
-
#:
|
312 |
-
#: src/Admin/Pages/About.php:341
|
313 |
-
#: src/Admin/Pages/About.php:347
|
314 |
msgid "MonsterInsights makes it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business."
|
315 |
msgstr ""
|
316 |
|
317 |
-
#:
|
318 |
-
#: src/Admin/Pages/About.php:346
|
319 |
msgid "MonsterInsights Pro"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#:
|
323 |
-
#: src/Admin/Pages/About.php:354
|
324 |
msgid "OptinMonster"
|
325 |
msgstr ""
|
326 |
|
327 |
-
#:
|
328 |
-
#: src/Admin/Pages/About.php:355
|
329 |
msgid "Our high-converting optin forms like Exit-Intent® popups, Fullscreen Welcome Mats, and Scroll boxes help you dramatically boost conversions and get more email subscribers."
|
330 |
msgstr ""
|
331 |
|
332 |
-
#:
|
333 |
-
#: src/Admin/Pages/About.php:361
|
334 |
msgid "Contact Forms by WPForms"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#:
|
338 |
-
#:
|
339 |
-
#: src/Admin/Pages/About.php:362
|
340 |
-
#: src/Admin/Pages/About.php:368
|
341 |
msgid "The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks."
|
342 |
msgstr ""
|
343 |
|
344 |
-
#:
|
345 |
-
#: src/Admin/Pages/About.php:367
|
346 |
msgid "WPForms Pro"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#:
|
350 |
-
#: src/Admin/Pages/About.php:375
|
351 |
msgid "RafflePress"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#:
|
355 |
-
#:
|
356 |
-
#: src/Admin/Pages/About.php:376
|
357 |
-
#: src/Admin/Pages/About.php:382
|
358 |
msgid "Turn your visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with powerful viral giveaways & contests."
|
359 |
msgstr ""
|
360 |
|
361 |
-
#:
|
362 |
-
#: src/Admin/Pages/About.php:381
|
363 |
msgid "RafflePress Pro"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#:
|
367 |
-
#: src/Admin/Pages/About.php:401
|
368 |
msgid "Could not activate the plugin. Please activate it from the Plugins page."
|
369 |
msgstr ""
|
370 |
|
371 |
-
#:
|
372 |
-
#: src/Admin/Pages/About.php:413
|
373 |
msgid "Plugin activated."
|
374 |
msgstr ""
|
375 |
|
376 |
-
#:
|
377 |
-
#: src/Admin/Pages/About.php:430
|
378 |
msgid "Could not install the plugin."
|
379 |
msgstr ""
|
380 |
|
381 |
-
#:
|
382 |
-
#: src/Admin/Pages/About.php:491
|
383 |
msgid "Plugin installed & activated."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#:
|
387 |
-
#: src/Admin/Pages/About.php:499
|
388 |
msgid "Plugin installed."
|
389 |
msgstr ""
|
390 |
|
391 |
-
#:
|
392 |
-
#: src/Admin/Pages/About.php:534
|
393 |
msgid "Get the most out of WP Mail SMTP by upgrading to Pro and unlocking all of the powerful features."
|
394 |
msgstr ""
|
395 |
|
396 |
-
#:
|
397 |
-
#: src/Admin/Pages/About.php:543
|
398 |
msgid "Feature"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#:
|
402 |
-
#: src/Admin/Pages/About.php:553
|
403 |
msgid "Pro"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#:
|
407 |
-
#: src/Admin/Pages/About.php:594
|
408 |
msgid "Get WP Mail SMTP Pro Today and Unlock all of these Powerful Features"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#:
|
412 |
-
#: src/Admin/Pages/About.php:601
|
413 |
msgid "Bonus: WP Mail SMTP Lite users get <span class=\"price-off\">$50 off regular price</span>, automatically applied at checkout."
|
414 |
msgstr ""
|
415 |
|
416 |
-
#:
|
417 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:27
|
418 |
-
#: src/Admin/Pages/About.php:628
|
419 |
#: src/Admin/Pages/ControlTab.php:27
|
420 |
msgid "Email Controls"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#:
|
424 |
-
#: src/Admin/Pages/About.php:629
|
425 |
msgid "Additional Mailers"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#:
|
429 |
-
#: src/Admin/Pages/About.php:630
|
430 |
msgid "Customer Support"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#:
|
434 |
-
#: src/Admin/Pages/About.php:651
|
435 |
msgid "Emails are not logged"
|
436 |
msgstr ""
|
437 |
|
438 |
-
#:
|
439 |
-
#: src/Admin/Pages/About.php:657
|
440 |
msgid "Complete Email Log management inside WordPress"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#:
|
444 |
-
#: src/Admin/Pages/About.php:665
|
445 |
msgid "No controls over whether default WordPress emails are sent"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#:
|
449 |
-
#: src/Admin/Pages/About.php:671
|
450 |
msgid "Complete Email Controls management for most default WordPress emails"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#:
|
454 |
-
#: src/Admin/Pages/About.php:679
|
455 |
msgid "Only default list of mailers"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#:
|
459 |
-
#: src/Admin/Pages/About.php:685
|
460 |
msgid "Additional mailers: Microsoft Outlook (with Office365 support) and Amazon SES"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#:
|
464 |
-
#: src/Admin/Pages/About.php:693
|
465 |
msgid "Limited Support"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#:
|
469 |
-
#: src/Admin/Pages/About.php:699
|
470 |
msgid "Priority Support"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:48
|
474 |
#: src/Admin/Pages/ControlTab.php:48
|
475 |
msgid "Comment Notifications"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:49
|
479 |
#: src/Admin/Pages/ControlTab.php:49
|
480 |
msgid "Manage emails sent when comments are published or awaiting moderation."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:53
|
484 |
#: src/Admin/Pages/ControlTab.php:53
|
485 |
msgid "Site Admin Email Change Notifications"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:54
|
489 |
#: src/Admin/Pages/ControlTab.php:54
|
490 |
msgid "Manage emails sent when site admin's account has been changed."
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:58
|
494 |
#: src/Admin/Pages/ControlTab.php:58
|
495 |
msgid "User Change Notifications"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:59
|
499 |
#: src/Admin/Pages/ControlTab.php:59
|
500 |
msgid "Limit emails triggered by password changed/reset, email changed, and more."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:63
|
504 |
#: src/Admin/Pages/ControlTab.php:63
|
505 |
msgid "Personal Data Requests Notifications"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:64
|
509 |
#: src/Admin/Pages/ControlTab.php:64
|
510 |
msgid "Control emails for data requests and data removal actions."
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:68
|
514 |
#: src/Admin/Pages/ControlTab.php:68
|
515 |
msgid "Automatic Update Notifications"
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:69
|
519 |
#: src/Admin/Pages/ControlTab.php:69
|
520 |
msgid "Manage emails sent by the core automatic update process."
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:73
|
524 |
#: src/Admin/Pages/ControlTab.php:73
|
525 |
msgid "New User Notifications"
|
526 |
msgstr ""
|
527 |
|
528 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:74
|
529 |
#: src/Admin/Pages/ControlTab.php:74
|
530 |
msgid "Toggle emails sent to both user and site administrator about new user accounts."
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:92
|
534 |
#: src/Admin/Pages/ControlTab.php:92
|
535 |
msgid "Unlock Email Controls"
|
536 |
msgstr ""
|
537 |
|
538 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:95
|
539 |
#: src/Admin/Pages/ControlTab.php:95
|
540 |
msgid "Email Controls allows you to granularly manage emails sent by WordPress.
"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/ControlTab.php:119
|
544 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:67
|
545 |
#: src/Admin/Pages/ControlTab.php:119
|
546 |
#: src/Admin/Pages/LogsTab.php:67
|
547 |
msgid "Upgrade to WP Mail SMTP Pro"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:53
|
551 |
#: src/Admin/Pages/LogsTab.php:53
|
552 |
msgid "Unlock Email Logging"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:56
|
556 |
#: src/Admin/Pages/LogsTab.php:56
|
557 |
msgid "Keep track of every email sent from your WordPress site with email logging.
"
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:57
|
561 |
#: src/Admin/Pages/LogsTab.php:57
|
562 |
msgid "Troubleshoot sending issues, recover lost emails, and more!"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:61
|
566 |
#: src/Admin/Pages/LogsTab.php:61
|
567 |
msgid "Logs Archive Page Screenshot"
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/LogsTab.php:62
|
571 |
#: src/Admin/Pages/LogsTab.php:62
|
572 |
msgid "Logs Single Page Screenshot"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:24
|
576 |
#: src/Admin/Pages/MiscTab.php:24
|
577 |
msgid "Misc"
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:56
|
581 |
#: src/Admin/Pages/MiscTab.php:56
|
582 |
msgid "Do Not Send"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:65
|
586 |
#: src/Admin/Pages/MiscTab.php:65
|
587 |
msgid "Check this if you would like to stop sending all emails."
|
588 |
msgstr ""
|
589 |
|
590 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:71
|
591 |
#: src/Admin/Pages/MiscTab.php:71
|
592 |
msgid "Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default <code>wp_mail()</code> function to send emails."
|
593 |
msgstr ""
|
594 |
|
595 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:79
|
596 |
#: src/Admin/Pages/MiscTab.php:79
|
597 |
msgid "You will need to consult with their documentation to switch them to use default WordPress email delivery."
|
598 |
msgstr ""
|
599 |
|
600 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:81
|
601 |
#: src/Admin/Pages/MiscTab.php:81
|
602 |
msgid "Test emails are allowed to be sent, regardless of this option."
|
603 |
msgstr ""
|
604 |
|
605 |
#. translators: %1$s - constant that was used; %2$s - file where it was used.
|
606 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:86
|
607 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:468
|
608 |
#: src/Admin/Pages/MiscTab.php:86
|
609 |
#: src/Providers/OptionsAbstract.php:468
|
610 |
msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation."
|
611 |
msgstr ""
|
612 |
|
613 |
#. translators: %s - The URL to the constants support article.
|
614 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:93
|
615 |
#: src/Admin/Pages/MiscTab.php:93
|
616 |
msgid "Please read this <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">support article</a> if you want to enable this option using constants."
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:114
|
620 |
#: src/Admin/Pages/MiscTab.php:114
|
621 |
msgid "Hide Announcements"
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:123
|
625 |
#: src/Admin/Pages/MiscTab.php:123
|
626 |
msgid "Check this if you would like to hide plugin announcements and update details."
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:133
|
630 |
#: src/Admin/Pages/MiscTab.php:133
|
631 |
msgid "Hide Email Delivery Errors"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:149
|
635 |
#: src/Admin/Pages/MiscTab.php:149
|
636 |
msgid "Check this if you would like to hide warnings alerting of email delivery errors."
|
637 |
msgstr ""
|
638 |
|
639 |
#. translators: %s - filter that was used to disabled.
|
640 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:156
|
641 |
#: src/Admin/Pages/MiscTab.php:156
|
642 |
msgid "Email Delivery Errors were disabled using a %s filter."
|
643 |
msgstr ""
|
644 |
|
645 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:165
|
646 |
#: src/Admin/Pages/MiscTab.php:165
|
647 |
msgid "<strong>This is not recommended</strong> and should only be done for staging or development sites."
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:180
|
651 |
#: src/Admin/Pages/MiscTab.php:180
|
652 |
msgid "Uninstall WP Mail SMTP"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/MiscTab.php:188
|
656 |
#: src/Admin/Pages/MiscTab.php:188
|
657 |
msgid "Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable."
|
658 |
msgstr ""
|
659 |
|
660 |
-
#:
|
661 |
-
#:
|
662 |
-
#: src/Admin/Pages/MiscTab.php:223
|
663 |
-
#: src/Admin/Pages/SettingsTab.php:540
|
664 |
msgid "Settings were successfully saved."
|
665 |
msgstr ""
|
666 |
|
667 |
-
#:
|
668 |
-
#: src/Admin/Pages/SettingsTab.php:36
|
669 |
msgid "General"
|
670 |
msgstr ""
|
671 |
|
672 |
-
#:
|
673 |
-
#: src/Admin/Pages/SettingsTab.php:64
|
674 |
msgid "License"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#:
|
678 |
-
#: src/Admin/Pages/SettingsTab.php:67
|
679 |
msgid "Your license key provides access to updates and support."
|
680 |
msgstr ""
|
681 |
|
682 |
-
#:
|
683 |
-
#: src/Admin/Pages/SettingsTab.php:75
|
684 |
msgid "License Key"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#:
|
688 |
-
#: src/Admin/Pages/SettingsTab.php:85
|
689 |
msgid "Mail"
|
690 |
msgstr ""
|
691 |
|
692 |
-
#:
|
693 |
-
#: src/Admin/Pages/SettingsTab.php:92
|
694 |
msgid "From Email"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#:
|
698 |
-
|
|
|
|
|
|
|
699 |
msgid "The email address which emails are sent from."
|
700 |
msgstr ""
|
701 |
|
702 |
-
#:
|
703 |
-
|
704 |
-
msgid "If you using an email provider (Gmail, Yahoo, Outlook.com, etc) this should be your email address for that account."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#:
|
708 |
-
#: src/Admin/Pages/SettingsTab.php:107
|
709 |
msgid "Please note that other plugins can change this, to prevent this use the setting below."
|
710 |
msgstr ""
|
711 |
|
712 |
-
#:
|
713 |
-
#: src/Admin/Pages/SettingsTab.php:119
|
714 |
msgid "Force From Email"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#:
|
718 |
-
#: src/Admin/Pages/SettingsTab.php:124
|
719 |
msgid "Current provider will automatically force From Email to be the email address that you use to set up the connection below."
|
720 |
msgstr ""
|
721 |
|
722 |
-
#:
|
723 |
-
|
|
|
|
|
|
|
724 |
msgid "If checked, the From Email setting above will be used for all emails, ignoring values set by other plugins."
|
725 |
msgstr ""
|
726 |
|
727 |
-
#:
|
728 |
-
#: src/Admin/Pages/SettingsTab.php:138
|
729 |
msgid "From Name"
|
730 |
msgstr ""
|
731 |
|
732 |
-
#:
|
733 |
-
#: src/Admin/Pages/SettingsTab.php:149
|
734 |
msgid "The name which emails are sent from."
|
735 |
msgstr ""
|
736 |
|
737 |
-
#:
|
738 |
-
#: src/Admin/Pages/SettingsTab.php:161
|
739 |
msgid "Force From Name"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#:
|
743 |
-
#: src/Admin/Pages/SettingsTab.php:166
|
744 |
msgid "Current provider doesn't support setting and forcing From Name. Emails will be sent on behalf of the account name used to setup the connection below."
|
745 |
msgstr ""
|
746 |
|
747 |
-
#:
|
748 |
-
#: src/Admin/Pages/SettingsTab.php:170
|
749 |
msgid "If checked, the From Name setting above will be used for all emails, ignoring values set by other plugins."
|
750 |
msgstr ""
|
751 |
|
752 |
-
#:
|
753 |
-
#: src/Admin/Pages/SettingsTab.php:179
|
754 |
msgid "Return Path"
|
755 |
msgstr ""
|
756 |
|
757 |
-
#:
|
758 |
-
#: src/Admin/Pages/SettingsTab.php:188
|
759 |
msgid "Set the return-path to match the From Email"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#:
|
763 |
-
#: src/Admin/Pages/SettingsTab.php:192
|
764 |
msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent."
|
765 |
msgstr ""
|
766 |
|
767 |
-
#:
|
768 |
-
#: src/Admin/Pages/SettingsTab.php:193
|
769 |
msgid "If unchecked, bounce messages may be lost. Some providers may ignore this option."
|
770 |
msgstr ""
|
771 |
|
772 |
-
#:
|
773 |
-
#: src/Admin/Pages/SettingsTab.php:201
|
774 |
msgid "Mailer"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#:
|
778 |
-
#: src/Admin/Pages/SettingsTab.php:242
|
779 |
msgid "Don't see what you're looking for?"
|
780 |
msgstr ""
|
781 |
|
782 |
-
#:
|
783 |
-
#: src/Admin/Pages/SettingsTab.php:244
|
784 |
msgid "Suggest a Mailer"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#:
|
788 |
-
#: src/Admin/Pages/SettingsTab.php:272
|
789 |
msgid "Dismiss this notice"
|
790 |
msgstr ""
|
791 |
|
792 |
-
#:
|
793 |
-
#: src/Admin/Pages/SettingsTab.php:314
|
794 |
msgid "You're using WP Mail SMTP Lite - no license needed. Enjoy!"
|
795 |
msgstr ""
|
796 |
|
797 |
#. translators: %s - WPMailSMTP.com upgrade URL.
|
798 |
-
#:
|
799 |
-
#: src/Admin/Pages/SettingsTab.php:320
|
800 |
msgid "To unlock more features consider <strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wp-mail-smtp-upgrade-modal\">upgrading to PRO</a></strong>."
|
801 |
msgstr ""
|
802 |
|
803 |
-
#:
|
804 |
-
#: src/Admin/Pages/SettingsTab.php:339
|
805 |
msgid "As a valued WP Mail SMTP Lite user you receive <strong>$50 off</strong>, automatically applied at checkout!"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#:
|
809 |
-
#: src/Admin/Pages/SettingsTab.php:400
|
810 |
msgid "Get WP Mail SMTP Pro and Unlock all the Powerful Features"
|
811 |
msgstr ""
|
812 |
|
813 |
-
#:
|
814 |
-
#: src/Admin/Pages/SettingsTab.php:404
|
815 |
msgid "Thanks for being a loyal WP Mail SMTP user. Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is the most popular SMTP plugin."
|
816 |
msgstr ""
|
817 |
|
818 |
-
#:
|
819 |
-
#: src/Admin/Pages/SettingsTab.php:408
|
820 |
msgid "We know that you will truly love WP Mail SMTP. It's used by over 1,000,000 websites."
|
821 |
msgstr ""
|
822 |
|
823 |
-
#:
|
824 |
-
#: src/Admin/Pages/SettingsTab.php:411
|
825 |
msgid "Pro Features:"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#:
|
829 |
-
#: src/Admin/Pages/SettingsTab.php:415
|
830 |
msgid "Manage Notifications - control which emails your site sends"
|
831 |
msgstr ""
|
832 |
|
833 |
-
#:
|
834 |
-
#: src/Admin/Pages/SettingsTab.php:416
|
835 |
msgid "Email Logging - keep track of every email sent from your site"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#:
|
839 |
-
#: src/Admin/Pages/SettingsTab.php:417
|
840 |
msgid "Office 365 - send emails using your Office 365 account"
|
841 |
msgstr ""
|
842 |
|
843 |
-
#:
|
844 |
-
#: src/Admin/Pages/SettingsTab.php:418
|
845 |
msgid "Amazon SES - harness the power of AWS"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#:
|
849 |
-
#: src/Admin/Pages/SettingsTab.php:419
|
850 |
msgid "Outlook.com - send emails using your Outlook.com account"
|
851 |
msgstr ""
|
852 |
|
853 |
-
#:
|
854 |
-
#: src/Admin/Pages/SettingsTab.php:420
|
855 |
msgid "Access to our world class support team"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#:
|
859 |
-
#: src/Admin/Pages/SettingsTab.php:423
|
860 |
msgid "White Glove Setup - sit back and relax while we handle everything for you"
|
861 |
msgstr ""
|
862 |
|
863 |
-
#:
|
864 |
-
#: src/Admin/Pages/SettingsTab.php:424
|
865 |
msgid "Install WP Mail SMTP Pro plugin"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#:
|
869 |
-
#: src/Admin/Pages/SettingsTab.php:425
|
870 |
msgid "Set up domain name verification (DNS)"
|
871 |
msgstr ""
|
872 |
|
873 |
-
#:
|
874 |
-
#: src/Admin/Pages/SettingsTab.php:426
|
875 |
msgid "Configure Mailgun service"
|
876 |
msgstr ""
|
877 |
|
878 |
-
#:
|
879 |
-
#: src/Admin/Pages/SettingsTab.php:427
|
880 |
msgid "Set up WP Mail SMTP Pro plugin"
|
881 |
msgstr ""
|
882 |
|
883 |
-
#:
|
884 |
-
#: src/Admin/Pages/SettingsTab.php:428
|
885 |
msgid "Test and verify email delivery"
|
886 |
msgstr ""
|
887 |
|
888 |
#. translators: %s - WPMailSMTP.com URL.
|
889 |
-
#:
|
890 |
-
#: src/Admin/Pages/SettingsTab.php:436
|
891 |
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get WP Mail SMTP Pro Today and Unlock all the Powerful Features »</a>"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#:
|
895 |
-
#: src/Admin/Pages/SettingsTab.php:454
|
896 |
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span class=\"price-off\">$50 off regular price</span>, automatically applied at checkout."
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:37
|
900 |
#: src/Admin/Pages/TestTab.php:37
|
901 |
msgid "Email Test"
|
902 |
msgstr ""
|
903 |
|
904 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:59
|
905 |
#: src/Admin/Pages/TestTab.php:59
|
906 |
msgid "Send a Test Email"
|
907 |
msgstr ""
|
908 |
|
909 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:66
|
910 |
#: src/Admin/Pages/TestTab.php:66
|
911 |
msgid "Send To"
|
912 |
msgstr ""
|
913 |
|
914 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:72
|
915 |
#: src/Admin/Pages/TestTab.php:72
|
916 |
msgid "Enter email address where test email will be sent."
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:80
|
920 |
#: src/Admin/Pages/TestTab.php:80
|
921 |
msgid "HTML"
|
922 |
msgstr ""
|
923 |
|
924 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:86
|
925 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:264
|
926 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:286
|
927 |
#: src/Admin/Pages/TestTab.php:86
|
928 |
#: src/Providers/OptionsAbstract.php:264
|
929 |
#: src/Providers/OptionsAbstract.php:286
|
930 |
msgid "On"
|
931 |
msgstr ""
|
932 |
|
933 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:87
|
934 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:265
|
935 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:287
|
936 |
#: src/Admin/Pages/TestTab.php:87
|
937 |
#: src/Providers/OptionsAbstract.php:265
|
938 |
#: src/Providers/OptionsAbstract.php:287
|
939 |
msgid "Off"
|
940 |
msgstr ""
|
941 |
|
942 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:90
|
943 |
#: src/Admin/Pages/TestTab.php:90
|
944 |
msgid "Send this email in HTML or in plain text format."
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:110
|
948 |
#: src/Admin/Pages/TestTab.php:110
|
949 |
msgid "You cannot send an email. Mailer is not properly configured. Please check your settings."
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:114
|
953 |
#: src/Admin/Pages/TestTab.php:114
|
954 |
msgid "Send Email"
|
955 |
msgstr ""
|
956 |
|
957 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:142
|
958 |
#: src/Admin/Pages/TestTab.php:142
|
959 |
msgid "Test failed. Please use a valid email address and try to resend the test email."
|
960 |
msgstr ""
|
961 |
|
962 |
#. translators: %s - email address a test email will be sent to.
|
963 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:154
|
964 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:160
|
965 |
#: src/Admin/Pages/TestTab.php:154
|
966 |
#: src/Admin/Pages/TestTab.php:160
|
967 |
msgid "Test email to %s"
|
968 |
msgstr ""
|
969 |
|
970 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:186
|
971 |
#: src/Admin/Pages/TestTab.php:186
|
972 |
msgid "Test plain text email was sent successfully!"
|
973 |
msgstr ""
|
974 |
|
975 |
#. translators: %s - "HTML" in bold.
|
976 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:190
|
977 |
#: src/Admin/Pages/TestTab.php:190
|
978 |
msgid "Test %s email was sent successfully! Please check your inbox to make sure it is delivered."
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:510
|
982 |
#: src/Admin/Pages/TestTab.php:510
|
983 |
msgid "SSL certificate issue."
|
984 |
msgstr ""
|
985 |
|
986 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:511
|
987 |
#: src/Admin/Pages/TestTab.php:511
|
988 |
msgid "This means your web server cannot reliably make secure connections (make requests to HTTPS sites)."
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:512
|
992 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:560
|
993 |
#: src/Admin/Pages/TestTab.php:512
|
994 |
#: src/Admin/Pages/TestTab.php:560
|
995 |
msgid "Typically this error is returned when web server is not configured properly."
|
996 |
msgstr ""
|
997 |
|
998 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:515
|
999 |
#: src/Admin/Pages/TestTab.php:515
|
1000 |
msgid "Contact your web hosting provider and inform them your site has an issue with SSL certificates."
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:516
|
1004 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:564
|
1005 |
#: src/Admin/Pages/TestTab.php:516
|
1006 |
#: src/Admin/Pages/TestTab.php:564
|
1007 |
msgid "The exact error you can provide them is in the Error log, available at the bottom of this page."
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:517
|
1011 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:565
|
1012 |
#: src/Admin/Pages/TestTab.php:517
|
1013 |
#: src/Admin/Pages/TestTab.php:565
|
1014 |
msgid "Ask them to resolve the issue then try again."
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:528
|
1018 |
#: src/Admin/Pages/TestTab.php:528
|
1019 |
msgid "Could not connect to host."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
#. translators: %s - SMTP host address.
|
1023 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:531
|
1024 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:556
|
1025 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:658
|
1026 |
#: src/Admin/Pages/TestTab.php:531
|
1027 |
#: src/Admin/Pages/TestTab.php:556
|
1028 |
#: src/Admin/Pages/TestTab.php:658
|
1029 |
msgid "This means your web server was unable to connect to %s."
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:534
|
1033 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:559
|
1034 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:661
|
1035 |
#: src/Admin/Pages/TestTab.php:534
|
1036 |
#: src/Admin/Pages/TestTab.php:559
|
1037 |
#: src/Admin/Pages/TestTab.php:661
|
1038 |
msgid "This means your web server was unable to connect to the host server."
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:535
|
1042 |
#: src/Admin/Pages/TestTab.php:535
|
1043 |
msgid "Typically this error is returned your web server is blocking the connections or the SMTP host denying the request."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
#. translators: %s - SMTP host address.
|
1047 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:539
|
1048 |
#: src/Admin/Pages/TestTab.php:539
|
1049 |
msgid "Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:542
|
1053 |
#: src/Admin/Pages/TestTab.php:542
|
1054 |
msgid "If using \"Other SMTP\" Mailer, triple check your SMTP settings including host address, email, and password."
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:543
|
1058 |
#: src/Admin/Pages/TestTab.php:543
|
1059 |
msgid "If using \"Other SMTP\" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc)."
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:553
|
1063 |
#: src/Admin/Pages/TestTab.php:553
|
1064 |
msgid "Could not connect to your host."
|
1065 |
msgstr ""
|
1066 |
|
1067 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:563
|
1068 |
#: src/Admin/Pages/TestTab.php:563
|
1069 |
msgid "Contact your web hosting provider and inform them you are having issues making outbound connections."
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:575
|
1073 |
#: src/Admin/Pages/TestTab.php:575
|
1074 |
msgid "Could not authenticate your SMTP account."
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:576
|
1078 |
#: src/Admin/Pages/TestTab.php:576
|
1079 |
msgid "This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings."
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:577
|
1083 |
#: src/Admin/Pages/TestTab.php:577
|
1084 |
msgid "Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:580
|
1088 |
#: src/Admin/Pages/TestTab.php:580
|
1089 |
msgid "Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings."
|
1090 |
msgstr ""
|
1091 |
|
1092 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:581
|
1093 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:686
|
1094 |
#: src/Admin/Pages/TestTab.php:581
|
1095 |
#: src/Admin/Pages/TestTab.php:686
|
1096 |
msgid "Contact your SMTP host to confirm you are using the correct username and password."
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:582
|
1100 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:687
|
1101 |
#: src/Admin/Pages/TestTab.php:582
|
1102 |
#: src/Admin/Pages/TestTab.php:687
|
1103 |
msgid "Verify with your SMTP host that your account has permissions to send emails using outside connections."
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:592
|
1107 |
#: src/Admin/Pages/TestTab.php:592
|
1108 |
msgid "Error due to unsolicited and/or bulk e-mail."
|
1109 |
msgstr ""
|
1110 |
|
1111 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:593
|
1112 |
#: src/Admin/Pages/TestTab.php:593
|
1113 |
msgid "This means the connection to your SMTP host was made successfully, but the host rejected the email."
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:594
|
1117 |
#: src/Admin/Pages/TestTab.php:594
|
1118 |
msgid "Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam."
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:597
|
1122 |
#: src/Admin/Pages/TestTab.php:597
|
1123 |
msgid "Check the emails that are sending are sending individually. Example: email is not sending to 30 recipients. You can install any WordPress e-mail logging plugin to do that."
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:598
|
1127 |
#: src/Admin/Pages/TestTab.php:598
|
1128 |
msgid "Contact your SMTP host to ask about sending/rate limits."
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:599
|
1132 |
#: src/Admin/Pages/TestTab.php:599
|
1133 |
msgid "Verify with them your SMTP account is in good standing and your account has not been flagged."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:609
|
1137 |
#: src/Admin/Pages/TestTab.php:609
|
1138 |
msgid "Unauthenticated senders are not allowed."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:610
|
1142 |
#: src/Admin/Pages/TestTab.php:610
|
1143 |
msgid "This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password."
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:613
|
1147 |
#: src/Admin/Pages/TestTab.php:613
|
1148 |
msgid "Go to WP Mail SMTP plugin Settings page."
|
1149 |
msgstr ""
|
1150 |
|
1151 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:614
|
1152 |
#: src/Admin/Pages/TestTab.php:614
|
1153 |
msgid "Enable Authentication"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:615
|
1157 |
#: src/Admin/Pages/TestTab.php:615
|
1158 |
msgid "Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields."
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:627
|
1162 |
#: src/Admin/Pages/TestTab.php:627
|
1163 |
msgid "Misconfigured server certificate."
|
1164 |
msgstr ""
|
1165 |
|
1166 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:628
|
1167 |
#: src/Admin/Pages/TestTab.php:628
|
1168 |
msgid "This means OpenSSL on your server isn't able to verify the host certificate."
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:629
|
1172 |
#: src/Admin/Pages/TestTab.php:629
|
1173 |
msgid "There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server's OpenSSL is using an outdated CA bundle."
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:632
|
1177 |
#: src/Admin/Pages/TestTab.php:632
|
1178 |
msgid "Verify that the host's SSL certificate is valid."
|
1179 |
msgstr ""
|
1180 |
|
1181 |
#. translators: %s - URL to the PHP openssl manual
|
1182 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:635
|
1183 |
#: src/Admin/Pages/TestTab.php:635
|
1184 |
msgid "Contact your hosting support, show them the \"full Error Log for debugging\" below and share this <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">link</a> with them."
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:655
|
1188 |
#: src/Admin/Pages/TestTab.php:655
|
1189 |
msgid "Could not connect to the SMTP host."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:662
|
1193 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1048
|
1194 |
#: src/Admin/Pages/TestTab.php:662
|
1195 |
#: src/Admin/Pages/TestTab.php:1048
|
1196 |
msgid "Typically this error is returned for one of the following reasons:"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:663
|
1200 |
#: src/Admin/Pages/TestTab.php:663
|
1201 |
msgid "SMTP settings are incorrect (wrong port, security setting, incorrect host)."
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:664
|
1205 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1050
|
1206 |
#: src/Admin/Pages/TestTab.php:664
|
1207 |
#: src/Admin/Pages/TestTab.php:1050
|
1208 |
msgid "Your web server is blocking the connection."
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:665
|
1212 |
#: src/Admin/Pages/TestTab.php:665
|
1213 |
msgid "Your SMTP host is rejecting the connection."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:668
|
1217 |
#: src/Admin/Pages/TestTab.php:668
|
1218 |
msgid "Triple check your SMTP settings including host address, email, and password, port, and security."
|
1219 |
msgstr ""
|
1220 |
|
1221 |
#. translators: %1$s - SMTP host address, %2$s - SMTP port, %3$s - SMTP encryption.
|
1222 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:671
|
1223 |
#: src/Admin/Pages/TestTab.php:671
|
1224 |
msgid "Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.<br><strong>Note: this is the most common cause of this issue.</strong>"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:684
|
1228 |
#: src/Admin/Pages/TestTab.php:684
|
1229 |
msgid "no"
|
1230 |
msgstr ""
|
1231 |
|
1232 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:697
|
1233 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:712
|
1234 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:728
|
1235 |
#: src/Admin/Pages/TestTab.php:697
|
1236 |
#: src/Admin/Pages/TestTab.php:712
|
1237 |
#: src/Admin/Pages/TestTab.php:728
|
1238 |
msgid "Mailgun failed."
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:698
|
1242 |
#: src/Admin/Pages/TestTab.php:698
|
1243 |
msgid "It seems that you forgot to activate your Mailgun account."
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:701
|
1247 |
#: src/Admin/Pages/TestTab.php:701
|
1248 |
msgid "Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:702
|
1252 |
#: src/Admin/Pages/TestTab.php:702
|
1253 |
msgid "If you do not see activation email, go to your Mailgun control panel and resend the activation email."
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:713
|
1257 |
#: src/Admin/Pages/TestTab.php:713
|
1258 |
msgid "Typically this error is because there is an issue with your Mailgun settings, in many cases the API key."
|
1259 |
msgstr ""
|
1260 |
|
1261 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:716
|
1262 |
#: src/Admin/Pages/TestTab.php:716
|
1263 |
msgid "Verify your API key is correct."
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:717
|
1267 |
#: src/Admin/Pages/TestTab.php:717
|
1268 |
msgid "Go to your Mailgun account and view your API key."
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:718
|
1272 |
#: src/Admin/Pages/TestTab.php:718
|
1273 |
msgid "Note that the API key includes the \"key\" prefix, so make sure that it is in the WP Mail SMTP Mailgun API setting."
|
1274 |
msgstr ""
|
1275 |
|
1276 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:729
|
1277 |
#: src/Admin/Pages/TestTab.php:729
|
1278 |
msgid "Your Mailgun account does not have access to send emails."
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:730
|
1282 |
#: src/Admin/Pages/TestTab.php:730
|
1283 |
msgid "Typically this error is because you have not set up and/or complete domain name verification for your Mailgun account."
|
1284 |
msgstr ""
|
1285 |
|
1286 |
#. translators: %s - Mailgun documentation URL.
|
1287 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:735
|
1288 |
#: src/Admin/Pages/TestTab.php:735
|
1289 |
msgid "Go to our how-to guide for setting up <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Mailgun with WP Mail SMTP</a>."
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:746
|
1293 |
#: src/Admin/Pages/TestTab.php:746
|
1294 |
msgid "Complete the steps in section \"2. Verify Your Domain\"."
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:756
|
1298 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:805
|
1299 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:825
|
1300 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:851
|
1301 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:867
|
1302 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:919
|
1303 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:945
|
1304 |
#: src/Admin/Pages/TestTab.php:756
|
1305 |
#: src/Admin/Pages/TestTab.php:805
|
1306 |
#: src/Admin/Pages/TestTab.php:825
|
@@ -1311,767 +1042,642 @@ msgstr ""
|
|
1311 |
msgid "Google API Error."
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:757
|
1315 |
#: src/Admin/Pages/TestTab.php:757
|
1316 |
msgid "You have not properly configured Gmail mailer."
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:758
|
1320 |
#: src/Admin/Pages/TestTab.php:758
|
1321 |
msgid "Make sure that you have clicked the \"Allow plugin to send emails using your Google account\" button under Gmail settings."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:761
|
1325 |
#: src/Admin/Pages/TestTab.php:761
|
1326 |
msgid "Go to plugin Settings page and click the \"Allow plugin to send emails using your Google account\" button."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:762
|
1330 |
#: src/Admin/Pages/TestTab.php:762
|
1331 |
msgid "After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf."
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:763
|
1335 |
#: src/Admin/Pages/TestTab.php:763
|
1336 |
msgid "Please click \"Agree\", if you see that button. If not - you will need to enable less secure apps first:"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
#. translators: %s - Google support article URL.
|
1340 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:768
|
1341 |
#: src/Admin/Pages/TestTab.php:768
|
1342 |
msgid "if you are using regular Gmail account, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to proceed."
|
1343 |
msgstr ""
|
1344 |
|
1345 |
#. translators: %s - Google support article URL.
|
1346 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:783
|
1347 |
#: src/Admin/Pages/TestTab.php:783
|
1348 |
msgid "if you are using G Suite, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to proceed."
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:806
|
1352 |
#: src/Admin/Pages/TestTab.php:806
|
1353 |
msgid "Typically this error is because address the email was sent to is invalid or was empty."
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:809
|
1357 |
#: src/Admin/Pages/TestTab.php:809
|
1358 |
msgid "Check the \"Send To\" email address used and confirm it is a valid email and was not empty."
|
1359 |
msgstr ""
|
1360 |
|
1361 |
#. translators: 1 - correct email address example. 2 - incorrect email address example.
|
1362 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:811
|
1363 |
#: src/Admin/Pages/TestTab.php:811
|
1364 |
msgid "It should be something like this: %1$s. These are incorrect values: %2$s."
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:815
|
1368 |
#: src/Admin/Pages/TestTab.php:815
|
1369 |
msgid "Make sure that the generated email has a TO header, useful when you are responsible for email creation."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:826
|
1373 |
#: src/Admin/Pages/TestTab.php:826
|
1374 |
msgid "Unfortunately, this error can be due to many different reasons."
|
1375 |
msgstr ""
|
1376 |
|
1377 |
#. translators: %s - Blog article URL.
|
1378 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:831
|
1379 |
#: src/Admin/Pages/TestTab.php:831
|
1380 |
msgid "Please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to learn more about what can cause this error and how it can be resolved."
|
1381 |
msgstr ""
|
1382 |
|
1383 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:852
|
1384 |
#: src/Admin/Pages/TestTab.php:852
|
1385 |
msgid "Authentication code that Google returned to you has already been used on your previous auth attempt."
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:855
|
1389 |
#: src/Admin/Pages/TestTab.php:855
|
1390 |
msgid "Make sure that you are not trying to manually clean up the plugin options to retry the \"Allow...\" step."
|
1391 |
msgstr ""
|
1392 |
|
1393 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:856
|
1394 |
#: src/Admin/Pages/TestTab.php:856
|
1395 |
msgid "Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry."
|
1396 |
msgstr ""
|
1397 |
|
1398 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:857
|
1399 |
#: src/Admin/Pages/TestTab.php:857
|
1400 |
msgid "Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts."
|
1401 |
msgstr ""
|
1402 |
|
1403 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:868
|
1404 |
#: src/Admin/Pages/TestTab.php:868
|
1405 |
msgid "There are various reasons for that, please review the steps below."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
#. translators: %s - Google G Suite Admin area URL.
|
1409 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:873
|
1410 |
#: src/Admin/Pages/TestTab.php:873
|
1411 |
msgid "Make sure that your G Suite trial period has not expired. You can check the status <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."
|
1412 |
msgstr ""
|
1413 |
|
1414 |
#. translators: %s - Google G Suite Admin area URL.
|
1415 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:886
|
1416 |
#: src/Admin/Pages/TestTab.php:886
|
1417 |
msgid "Make sure that Gmail app in your G Suite is actually enabled. You can check that in Apps list in <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">G Suite Admin</a> area."
|
1418 |
msgstr ""
|
1419 |
|
1420 |
#. translators: %s - Google Developers Console URL.
|
1421 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:899
|
1422 |
#: src/Admin/Pages/TestTab.php:899
|
1423 |
msgid "Make sure that you have Gmail API enabled, and you can do that <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:922
|
1427 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:949
|
1428 |
#: src/Admin/Pages/TestTab.php:922
|
1429 |
#: src/Admin/Pages/TestTab.php:949
|
1430 |
msgid "Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled."
|
1431 |
msgstr ""
|
1432 |
|
1433 |
#. translators: %s - Gmail documentation URL.
|
1434 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:925
|
1435 |
#: src/Admin/Pages/TestTab.php:925
|
1436 |
msgid "Please follow our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail tutorial</a> to be sure that all the correct project and data is applied."
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:946
|
1440 |
#: src/Admin/Pages/TestTab.php:946
|
1441 |
msgid "You may have added a new API to a project"
|
1442 |
msgstr ""
|
1443 |
|
1444 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:950
|
1445 |
#: src/Admin/Pages/TestTab.php:950
|
1446 |
msgid "Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch."
|
1447 |
msgstr ""
|
1448 |
|
1449 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:960
|
1450 |
#: src/Admin/Pages/TestTab.php:960
|
1451 |
msgid "SMTP.com API Error."
|
1452 |
msgstr ""
|
1453 |
|
1454 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:961
|
1455 |
#: src/Admin/Pages/TestTab.php:961
|
1456 |
msgid "Your Sender Name option is incorrect."
|
1457 |
msgstr ""
|
1458 |
|
1459 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:964
|
1460 |
#: src/Admin/Pages/TestTab.php:964
|
1461 |
msgid "Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings."
|
1462 |
msgstr ""
|
1463 |
|
1464 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:974
|
1465 |
#: src/Admin/Pages/TestTab.php:974
|
1466 |
msgid "GuzzleHttp requirements."
|
1467 |
msgstr ""
|
1468 |
|
1469 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:975
|
1470 |
#: src/Admin/Pages/TestTab.php:975
|
1471 |
msgid "GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler."
|
1472 |
msgstr ""
|
1473 |
|
1474 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:978
|
1475 |
#: src/Admin/Pages/TestTab.php:978
|
1476 |
msgid "Edit your php.ini file on your hosting server."
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:979
|
1480 |
#: src/Admin/Pages/TestTab.php:979
|
1481 |
msgid "(Recommended) Enable PHP extension: cURL, by adding \"extension=curl\" to the php.ini file (without the quotation marks) OR"
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:980
|
1485 |
#: src/Admin/Pages/TestTab.php:980
|
1486 |
msgid "(If cURL can't be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding \"allow_url_fopen = On\" to the php.ini file (without the quotation marks)"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:981
|
1490 |
#: src/Admin/Pages/TestTab.php:981
|
1491 |
msgid "If you don't know how to do the above we strongly suggest contacting your hosting support and provide them the \"full Error Log for debugging\" below and these steps. They should be able to fix this issue for you."
|
1492 |
msgstr ""
|
1493 |
|
1494 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1003
|
1495 |
#: src/Admin/Pages/TestTab.php:1003
|
1496 |
msgid "PCRE library issue"
|
1497 |
msgstr ""
|
1498 |
|
1499 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1004
|
1500 |
#: src/Admin/Pages/TestTab.php:1004
|
1501 |
msgid "It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation."
|
1502 |
msgstr ""
|
1503 |
|
1504 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1005
|
1505 |
#: src/Admin/Pages/TestTab.php:1005
|
1506 |
msgid "There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33."
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1008
|
1510 |
#: src/Admin/Pages/TestTab.php:1008
|
1511 |
msgid "Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4."
|
1512 |
msgstr ""
|
1513 |
|
1514 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1009
|
1515 |
#: src/Admin/Pages/TestTab.php:1009
|
1516 |
msgid "They should be able to resolve this issue for you."
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1010
|
1520 |
#: src/Admin/Pages/TestTab.php:1010
|
1521 |
msgid "For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server."
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1046
|
1525 |
#: src/Admin/Pages/TestTab.php:1046
|
1526 |
msgid "An issue was detected."
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1047
|
1530 |
#: src/Admin/Pages/TestTab.php:1047
|
1531 |
msgid "This means your test email was unable to be sent."
|
1532 |
msgstr ""
|
1533 |
|
1534 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1049
|
1535 |
#: src/Admin/Pages/TestTab.php:1049
|
1536 |
msgid "Plugin settings are incorrect (wrong SMTP settings, invalid Mailer configuration, etc)."
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1051
|
1540 |
#: src/Admin/Pages/TestTab.php:1051
|
1541 |
msgid "Your host is rejecting the connection."
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1054
|
1545 |
#: src/Admin/Pages/TestTab.php:1054
|
1546 |
msgid "Triple check the plugin settings, consider reconfiguring to make sure everything is correct (eg bad copy and paste)."
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1056
|
1550 |
#: src/Admin/Pages/TestTab.php:1056
|
1551 |
msgid "Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.<br><strong>Note: this is the most common cause of this issue.</strong>"
|
1552 |
msgstr ""
|
1553 |
|
1554 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1062
|
1555 |
#: src/Admin/Pages/TestTab.php:1062
|
1556 |
msgid "Try using a different mailer."
|
1557 |
msgstr ""
|
1558 |
|
1559 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1081
|
1560 |
#: src/Admin/Pages/TestTab.php:1081
|
1561 |
msgid "There was a problem while sending the test email."
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1091
|
1565 |
#: src/Admin/Pages/TestTab.php:1091
|
1566 |
msgid "Recommended next steps:"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1101
|
1570 |
#: src/Admin/Pages/TestTab.php:1101
|
1571 |
msgid "Need support?"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
#. translators: %s - WPMailSMTP.com account area link.
|
1575 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1109
|
1576 |
#: src/Admin/Pages/TestTab.php:1109
|
1577 |
msgid "As a WP Mail SMTP Pro user you have access to WP Mail SMTP priority support. Please log in to your WPMailSMTP.com account and <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">submit a support ticket</a>."
|
1578 |
msgstr ""
|
1579 |
|
1580 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1126
|
1581 |
#: src/Admin/Pages/TestTab.php:1126
|
1582 |
msgid "WP Mail SMTP is a free plugin, and the team behind WPForms maintains it to give back to the WordPress community."
|
1583 |
msgstr ""
|
1584 |
|
1585 |
#. translators: %s - WPMailSMTP.com URL.
|
1586 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1133
|
1587 |
#: src/Admin/Pages/TestTab.php:1133
|
1588 |
msgid "To access our world class support, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">upgrade to WP Mail SMTP Pro</a>. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com."
|
1589 |
msgstr ""
|
1590 |
|
1591 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1148
|
1592 |
#: src/Admin/Pages/TestTab.php:1148
|
1593 |
msgid "Additionally, you can take advantage of our White Glove Setup. Sit back and relax while we handle everything for you! If you simply don't have time or maybe you feel a bit in over your head - we got you covered."
|
1594 |
msgstr ""
|
1595 |
|
1596 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1154
|
1597 |
#: src/Admin/Pages/TestTab.php:1154
|
1598 |
msgid "As a valued WP Mail SMTP user, you will get <span class=\"price-off\">$50 off regular pricing</span>, automatically applied at checkout!"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
#. translators: %1$s - WP Mail SMTP support policy URL, %2$s - WP Mail SMTP support forum URL, %3$s - WPMailSMTP.com URL.
|
1602 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1168
|
1603 |
#: src/Admin/Pages/TestTab.php:1168
|
1604 |
msgid "Alternatively, we also offer <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">limited support</a> on the WordPress.org support forums. You can <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">create a support thread</a> there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">upgrading to WP Mail SMTP Pro</a> to access our priority support ticket system."
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1189
|
1608 |
#: src/Admin/Pages/TestTab.php:1189
|
1609 |
msgid "Click here to view the full Error Log for debugging"
|
1610 |
msgstr ""
|
1611 |
|
1612 |
-
#: build/wp-mail-smtp-pro/src/Admin/Pages/TestTab.php:1198
|
1613 |
#: src/Admin/Pages/TestTab.php:1198
|
1614 |
msgid "Please copy only the content of the error debug message above, identified with an orange left border, into the support forum topic if you experience any issues."
|
1615 |
msgstr ""
|
1616 |
|
1617 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:119
|
1618 |
#: src/Admin/Review.php:119
|
1619 |
msgid "Are you enjoying WP Mail SMTP?"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:121
|
1623 |
#: src/Admin/Review.php:121
|
1624 |
msgid "Yes"
|
1625 |
msgstr ""
|
1626 |
|
1627 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:122
|
1628 |
#: src/Admin/Review.php:122
|
1629 |
msgid "Not Really"
|
1630 |
msgstr ""
|
1631 |
|
1632 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:126
|
1633 |
#: src/Admin/Review.php:126
|
1634 |
msgid "We're sorry to hear you aren't enjoying WP Mail SMTP. We would love a chance to improve. Could you take a minute and let us know what we can do better?"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:129
|
1638 |
#: src/Admin/Review.php:129
|
1639 |
msgid "Give Feedback"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:132
|
1643 |
#: src/Admin/Review.php:132
|
1644 |
msgid "No thanks"
|
1645 |
msgstr ""
|
1646 |
|
1647 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:137
|
1648 |
#: src/Admin/Review.php:137
|
1649 |
msgid "That’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:138
|
1653 |
#: src/Admin/Review.php:138
|
1654 |
msgid "~ Jared Atchison<br>Lead Developer, WP Mail SMTP"
|
1655 |
msgstr ""
|
1656 |
|
1657 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:141
|
1658 |
#: src/Admin/Review.php:141
|
1659 |
msgid "Ok, you deserve it"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:143
|
1663 |
#: src/Admin/Review.php:143
|
1664 |
msgid "Nope, maybe later"
|
1665 |
msgstr ""
|
1666 |
|
1667 |
-
#: build/wp-mail-smtp-pro/src/Admin/Review.php:144
|
1668 |
#: src/Admin/Review.php:144
|
1669 |
msgid "I already did"
|
1670 |
msgstr ""
|
1671 |
|
1672 |
#. translators: %1$s - Plugin name causing conflict; %2$s - Plugin name causing conflict.
|
1673 |
-
#: build/wp-mail-smtp-pro/src/Conflicts.php:159
|
1674 |
#: src/Conflicts.php:159
|
1675 |
msgid "Heads up! WP Mail SMTP has detected %1$s is activated. Please deactivate %2$s to prevent conflicts."
|
1676 |
msgstr ""
|
1677 |
|
1678 |
#. translators: %1$s - WP Mail SMTP plugin name; %2$s - WPMailSMTP.com URL to a related doc.
|
1679 |
-
#:
|
1680 |
-
#: src/Core.php:367
|
1681 |
msgid "Your site is running an outdated version of PHP that is no longer supported and may cause issues with %1$s. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Read more</a> for additional information."
|
1682 |
msgstr ""
|
1683 |
|
1684 |
-
#:
|
1685 |
-
#: src/Core.php:381
|
1686 |
msgid "<strong>Please Note:</strong> Support for PHP 5.5 will be discontinued in 2020. After this, if no further action is taken, WP Mail SMTP functionality will be disabled."
|
1687 |
msgstr ""
|
1688 |
|
1689 |
#. translators: %s - plugin name and its version.
|
1690 |
-
#:
|
1691 |
-
#: src/Core.php:415
|
1692 |
msgid "<strong>EMAILING DISABLED:</strong> The %s is currently blocking all emails from being sent."
|
1693 |
msgstr ""
|
1694 |
|
1695 |
#. translators: %1$s - constant name; %2$s - constant value.
|
1696 |
-
#:
|
1697 |
-
#: src/Core.php:426
|
1698 |
msgid "To send emails, change the value of the %1$s constant to %2$s."
|
1699 |
msgstr ""
|
1700 |
|
1701 |
#. translators: %s - plugin Misc settings page URL.
|
1702 |
-
#:
|
1703 |
-
#: src/Core.php:437
|
1704 |
msgid "To send emails, go to plugin <a href=\"%s\">Misc settings</a> and disable the \"Do Not Send\" option."
|
1705 |
msgstr ""
|
1706 |
|
1707 |
#. translators: %s - plugin name and its version.
|
1708 |
-
#:
|
1709 |
-
#: src/Core.php:469
|
1710 |
msgid "<strong>EMAIL DELIVERY ERROR:</strong> the plugin %s logged this error during the last time it tried to send an email:"
|
1711 |
msgstr ""
|
1712 |
|
1713 |
-
#:
|
1714 |
-
#: src/Core.php:499
|
1715 |
msgid "Consider running an email test after fixing it."
|
1716 |
msgstr ""
|
1717 |
|
1718 |
#. translators: %1$s - WP Mail SMTP, %2$s - error message.
|
1719 |
-
#: build/wp-mail-smtp-pro/src/Migration.php:137
|
1720 |
#: src/Migration.php:137
|
1721 |
msgid "There was an error while upgrading the database. Please contact %1$s support with this information: %2$s."
|
1722 |
msgstr ""
|
1723 |
|
1724 |
-
#: build/wp-mail-smtp-pro/src/Pro/Providers/Providers.php:158
|
1725 |
#: src/Pro/Providers/Providers.php:158
|
1726 |
msgid "OK"
|
1727 |
msgstr ""
|
1728 |
|
1729 |
-
#: build/wp-mail-smtp-pro/src/Pro/SiteHealth.php:58
|
1730 |
#: src/Pro/SiteHealth.php:58
|
1731 |
msgid "Is wpmailsmtp.com reachable?"
|
1732 |
msgstr ""
|
1733 |
|
1734 |
-
#: build/wp-mail-smtp-pro/src/Providers/AmazonSES/Options.php:25
|
1735 |
#: src/Providers/AmazonSES/Options.php:25
|
1736 |
msgid "Amazon SES"
|
1737 |
msgstr ""
|
1738 |
|
1739 |
-
#: build/wp-mail-smtp-pro/src/Providers/AmazonSES/Options.php:39
|
1740 |
#: src/Providers/AmazonSES/Options.php:39
|
1741 |
msgid "We're sorry, the Amazon SES mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
|
1742 |
msgstr ""
|
1743 |
|
1744 |
-
#:
|
1745 |
-
#: src/Providers/Gmail/Auth.php:170
|
1746 |
msgid "There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved."
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#:
|
1750 |
-
#: src/Providers/Gmail/Mailer.php:258
|
1751 |
msgid "Please re-grant Google app permissions!"
|
1752 |
msgstr ""
|
1753 |
|
1754 |
-
#:
|
1755 |
-
#: src/Providers/Gmail/Mailer.php:259
|
1756 |
msgid "Go to WP Mail SMTP plugin settings page. Click the “Remove Connection” button."
|
1757 |
msgstr ""
|
1758 |
|
1759 |
-
#:
|
1760 |
-
#: src/Providers/Gmail/Mailer.php:260
|
1761 |
msgid "Then click the “Allow plugin to send emails using your Google account” button and re-enable access."
|
1762 |
msgstr ""
|
1763 |
|
1764 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:32
|
1765 |
#: src/Providers/Gmail/Options.php:32
|
1766 |
msgid "Gmail"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
#. translators: %s - URL to our Gmail doc.
|
1770 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:35
|
1771 |
#: src/Providers/Gmail/Options.php:35
|
1772 |
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 <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail documentation</a> to learn how to configure Gmail or G Suite."
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:48
|
1776 |
#: src/Providers/Gmail/Options.php:48
|
1777 |
msgid "The Gmail mailer works well for sites that send low numbers of emails. However, Gmail's API has rate limitations and a number of additional restrictions that can lead to challenges during setup. If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option."
|
1778 |
msgstr ""
|
1779 |
|
1780 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:72
|
1781 |
#: src/Providers/Gmail/Options.php:72
|
1782 |
msgid "Client ID"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:87
|
1786 |
#: src/Providers/Gmail/Options.php:87
|
1787 |
msgid "Client Secret"
|
1788 |
msgstr ""
|
1789 |
|
1790 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:109
|
1791 |
#: src/Providers/Gmail/Options.php:109
|
1792 |
msgid "Authorized redirect URI"
|
1793 |
msgstr ""
|
1794 |
|
1795 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:117
|
1796 |
#: src/Providers/Gmail/Options.php:117
|
1797 |
msgid "Copy URL to clipboard"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:122
|
1801 |
#: src/Providers/Gmail/Options.php:122
|
1802 |
msgid "Please copy this URL into the \"Authorized redirect URIs\" field of your Google web application."
|
1803 |
msgstr ""
|
1804 |
|
1805 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:131
|
1806 |
#: src/Providers/Gmail/Options.php:131
|
1807 |
msgid "Authorization"
|
1808 |
msgstr ""
|
1809 |
|
1810 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:159
|
1811 |
#: src/Providers/Gmail/Options.php:159
|
1812 |
msgid "Allow plugin to send emails using your Google account"
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:162
|
1816 |
#: src/Providers/Gmail/Options.php:162
|
1817 |
msgid "Click the button above to confirm authorization."
|
1818 |
msgstr ""
|
1819 |
|
1820 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:168
|
1821 |
#: src/Providers/Gmail/Options.php:168
|
1822 |
msgid "Remove Connection"
|
1823 |
msgstr ""
|
1824 |
|
1825 |
#. translators: %s - email address, as received from Google API.
|
1826 |
-
#: build/wp-mail-smtp-pro/src/Providers/Gmail/Options.php:177
|
1827 |
#: src/Providers/Gmail/Options.php:177
|
1828 |
msgid "Connected as %s"
|
1829 |
msgstr ""
|
1830 |
|
1831 |
-
|
1832 |
-
#: src/Providers/Gmail/Options.php:
|
|
|
|
|
|
|
|
|
1833 |
msgid "Removing the connection will give you an ability to redo the connection or link to another Google account."
|
1834 |
msgstr ""
|
1835 |
|
1836 |
-
#:
|
1837 |
-
#: src/Providers/Gmail/Options.php:192
|
1838 |
msgid "You need to save settings with Client ID and Client Secret before you can proceed."
|
1839 |
msgstr ""
|
1840 |
|
1841 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mail/Options.php:25
|
1842 |
#: src/Providers/Mail/Options.php:25
|
1843 |
msgid "Default (none)"
|
1844 |
msgstr ""
|
1845 |
|
1846 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mail/Options.php:37
|
1847 |
#: src/Providers/Mail/Options.php:37
|
1848 |
msgid "You currently have the native WordPress option selected. Please select any other Mailer option above to continue the setup."
|
1849 |
msgstr ""
|
1850 |
|
1851 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1852 |
#: src/Providers/Mailgun/Options.php:25
|
1853 |
msgid "Mailgun"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
#. translators: %1$s - opening link tag; %2$s - closing link tag; %3$s - opening link tag; %4$s - closing link tag.
|
1857 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:29
|
1858 |
#: src/Providers/Mailgun/Options.php:29
|
1859 |
msgid "%1$sMailgun%2$s is one of the leading transactional email services trusted by over 150,000+ businesses. They provide 5,000 free emails per month for 3 months.<br><br>Read our %3$sMailgun documentation%4$s to learn how to configure Mailgun and improve your email deliverability."
|
1860 |
msgstr ""
|
1861 |
|
1862 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:57
|
1863 |
#: src/Providers/Mailgun/Options.php:57
|
1864 |
msgid "Private API Key"
|
1865 |
msgstr ""
|
1866 |
|
1867 |
#. translators: %s - API key link.
|
1868 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:76
|
1869 |
#: src/Providers/Mailgun/Options.php:76
|
1870 |
msgid "Follow this link to get an API Key from Mailgun: %s."
|
1871 |
msgstr ""
|
1872 |
|
1873 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:78
|
1874 |
#: src/Providers/Mailgun/Options.php:78
|
1875 |
msgid "Get a Private API Key"
|
1876 |
msgstr ""
|
1877 |
|
1878 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:89
|
1879 |
#: src/Providers/Mailgun/Options.php:89
|
1880 |
msgid "Domain Name"
|
1881 |
msgstr ""
|
1882 |
|
1883 |
#. translators: %s - Domain Name link.
|
1884 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:101
|
1885 |
#: src/Providers/Mailgun/Options.php:101
|
1886 |
msgid "Follow this link to get a Domain Name from Mailgun: %s."
|
1887 |
msgstr ""
|
1888 |
|
1889 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:103
|
1890 |
#: src/Providers/Mailgun/Options.php:103
|
1891 |
msgid "Get a Domain Name"
|
1892 |
msgstr ""
|
1893 |
|
1894 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:114
|
1895 |
#: src/Providers/Mailgun/Options.php:114
|
1896 |
msgid "Region"
|
1897 |
msgstr ""
|
1898 |
|
1899 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:124
|
1900 |
#: src/Providers/Mailgun/Options.php:124
|
1901 |
msgid "US"
|
1902 |
msgstr ""
|
1903 |
|
1904 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:133
|
1905 |
#: src/Providers/Mailgun/Options.php:133
|
1906 |
msgid "EU"
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:137
|
1910 |
#: src/Providers/Mailgun/Options.php:137
|
1911 |
msgid "Define which endpoint you want to use for sending messages."
|
1912 |
msgstr ""
|
1913 |
|
1914 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:138
|
1915 |
#: src/Providers/Mailgun/Options.php:138
|
1916 |
msgid "If you are operating under EU laws, you may be required to use EU region."
|
1917 |
msgstr ""
|
1918 |
|
1919 |
#. translators: %s - URL to Mailgun.com page.
|
1920 |
-
#: build/wp-mail-smtp-pro/src/Providers/Mailgun/Options.php:143
|
1921 |
#: src/Providers/Mailgun/Options.php:143
|
1922 |
msgid "<a href=\"%s\" rel=\"\" target=\"_blank\">More information</a> on Mailgun.com."
|
1923 |
msgstr ""
|
1924 |
|
1925 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:186
|
1926 |
#: src/Providers/OptionsAbstract.php:186
|
1927 |
msgid "SMTP Host"
|
1928 |
msgstr ""
|
1929 |
|
1930 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:200
|
1931 |
#: src/Providers/OptionsAbstract.php:200
|
1932 |
msgid "Encryption"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:210
|
1936 |
#: src/Providers/OptionsAbstract.php:210
|
1937 |
msgid "None"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:219
|
1941 |
#: src/Providers/OptionsAbstract.php:219
|
1942 |
msgid "SSL"
|
1943 |
msgstr ""
|
1944 |
|
1945 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:228
|
1946 |
#: src/Providers/OptionsAbstract.php:228
|
1947 |
msgid "TLS"
|
1948 |
msgstr ""
|
1949 |
|
1950 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:232
|
1951 |
#: src/Providers/OptionsAbstract.php:232
|
1952 |
msgid "For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS."
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:240
|
1956 |
#: src/Providers/OptionsAbstract.php:240
|
1957 |
msgid "SMTP Port"
|
1958 |
msgstr ""
|
1959 |
|
1960 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:254
|
1961 |
#: src/Providers/OptionsAbstract.php:254
|
1962 |
msgid "Auto TLS"
|
1963 |
msgstr ""
|
1964 |
|
1965 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:268
|
1966 |
#: src/Providers/OptionsAbstract.php:268
|
1967 |
msgid "By default TLS encryption is automatically used if the server supports it, which is recommended. In some cases, due to server misconfigurations, this can cause issues and may need to be disabled."
|
1968 |
msgstr ""
|
1969 |
|
1970 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:276
|
1971 |
#: src/Providers/OptionsAbstract.php:276
|
1972 |
msgid "Authentication"
|
1973 |
msgstr ""
|
1974 |
|
1975 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:295
|
1976 |
#: src/Providers/OptionsAbstract.php:295
|
1977 |
msgid "SMTP Username"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:309
|
1981 |
#: src/Providers/OptionsAbstract.php:309
|
1982 |
msgid "SMTP Password"
|
1983 |
msgstr ""
|
1984 |
|
1985 |
#. translators: %s - constant name: WPMS_SMTP_PASS.
|
1986 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:321
|
1987 |
#: src/Providers/OptionsAbstract.php:321
|
1988 |
msgid "To change the password you need to change the value of the constant there: %s"
|
1989 |
msgstr ""
|
1990 |
|
1991 |
#. translators: %1$s - wp-config.php file, %2$s - WPMS_ON constant name.
|
1992 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:329
|
1993 |
#: src/Providers/OptionsAbstract.php:329
|
1994 |
msgid "If you want to disable the use of constants, find in %1$s file the constant %2$s and turn if off:"
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:339
|
1998 |
#: src/Providers/OptionsAbstract.php:339
|
1999 |
msgid "All the defined constants will stop working and you will be able to change all the values on this page."
|
2000 |
msgstr ""
|
2001 |
|
2002 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:347
|
2003 |
#: src/Providers/OptionsAbstract.php:347
|
2004 |
msgid "The password will be stored in plain text. For improved security, we highly recommend using your site's WordPress configuration file to set your password."
|
2005 |
msgstr ""
|
2006 |
|
2007 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:350
|
2008 |
#: src/Providers/OptionsAbstract.php:350
|
2009 |
msgid "Learn More"
|
2010 |
msgstr ""
|
2011 |
|
2012 |
#. translators: %1$s - Provider name; %2$s - PHP version required by Provider; %3$s - current PHP version.
|
2013 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:410
|
2014 |
#: src/Providers/OptionsAbstract.php:410
|
2015 |
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."
|
2016 |
msgstr ""
|
2017 |
|
2018 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:417
|
2019 |
#: src/Providers/OptionsAbstract.php:417
|
2020 |
msgid "Meanwhile you can switch to some other mailers."
|
2021 |
msgstr ""
|
2022 |
|
2023 |
#. translators: %s - Provider name
|
2024 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:436
|
2025 |
#: src/Providers/OptionsAbstract.php:436
|
2026 |
msgid "%s requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out <a href=\"https://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/\" target=\"_blank\">WPBeginner's tutorial on how to set up SSL</a>."
|
2027 |
msgstr ""
|
2028 |
|
2029 |
-
#: build/wp-mail-smtp-pro/src/Providers/OptionsAbstract.php:449
|
2030 |
#: src/Providers/OptionsAbstract.php:449
|
2031 |
msgid "If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please select a different mailer option."
|
2032 |
msgstr ""
|
2033 |
|
2034 |
-
#: build/wp-mail-smtp-pro/src/Providers/Outlook/Options.php:25
|
2035 |
#: src/Providers/Outlook/Options.php:25
|
2036 |
msgid "Outlook"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
-
#: build/wp-mail-smtp-pro/src/Providers/Outlook/Options.php:39
|
2040 |
#: src/Providers/Outlook/Options.php:39
|
2041 |
msgid "We're sorry, the Microsoft Outlook mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#: build/wp-mail-smtp-pro/src/Providers/Pepipost/Options.php:25
|
2045 |
#: src/Providers/Pepipost/Options.php:25
|
2046 |
msgid "Pepipost SMTP"
|
2047 |
msgstr ""
|
2048 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2049 |
#. translators: %1$s - URL to pepipost.com site.
|
2050 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:31
|
2051 |
#: src/Providers/PepipostAPI/Options.php:31
|
2052 |
msgid "<strong><a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost</a> is a recommended transactional email service.</strong> Every month Pepipost delivers over 8 billion emails from 20,000+ customers. Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever. Pepipost provides users 30,000 free emails the first 30 days."
|
2053 |
msgstr ""
|
2054 |
|
2055 |
#. translators: %1$s - URL to wpmailsmtp.com doc.
|
2056 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:34
|
2057 |
#: src/Providers/PepipostAPI/Options.php:34
|
2058 |
msgid "Read our <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost documentation</a> to learn how to configure Pepipost and improve your email deliverability."
|
2059 |
msgstr ""
|
2060 |
|
2061 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:53
|
2062 |
#: src/Providers/PepipostAPI/Options.php:53
|
2063 |
msgid "Get Started with Pepipost"
|
2064 |
msgstr ""
|
2065 |
|
2066 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:61
|
2067 |
#: src/Providers/PepipostAPI/Options.php:61
|
2068 |
msgid "Pepipost"
|
2069 |
msgstr ""
|
2070 |
|
2071 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:88
|
2072 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:57
|
2073 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:76
|
2074 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:83
|
2075 |
#: src/Providers/PepipostAPI/Options.php:88
|
2076 |
#: src/Providers/Sendgrid/Options.php:57
|
2077 |
#: src/Providers/Sendinblue/Options.php:76
|
@@ -2080,222 +1686,215 @@ msgid "API Key"
|
|
2080 |
msgstr ""
|
2081 |
|
2082 |
#. translators: %s - link to get an API Key.
|
2083 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:107
|
2084 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:95
|
2085 |
#: src/Providers/PepipostAPI/Options.php:107
|
2086 |
#: src/Providers/Sendinblue/Options.php:95
|
2087 |
msgid "Follow this link to get an API Key: %s."
|
2088 |
msgstr ""
|
2089 |
|
2090 |
-
#: build/wp-mail-smtp-pro/src/Providers/PepipostAPI/Options.php:109
|
2091 |
#: src/Providers/PepipostAPI/Options.php:109
|
2092 |
msgid "Get the API Key"
|
2093 |
msgstr ""
|
2094 |
|
2095 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:25
|
2096 |
#: src/Providers/Sendgrid/Options.php:25
|
2097 |
msgid "SendGrid"
|
2098 |
msgstr ""
|
2099 |
|
2100 |
#. translators: %1$s - opening link tag; %2$s - closing link tag; %3$s - opening link tag; %4$s - closing link tag.
|
2101 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:29
|
2102 |
#: src/Providers/Sendgrid/Options.php:29
|
2103 |
msgid "%1$sSendGrid%2$s is one of the leading transactional email services, sending over 35 billion emails every month. They provide users 100 free emails per day.<br><br>Read our %3$sSendGrid documentation%4$s to learn how to set up SendGrid and improve your email deliverability."
|
2104 |
msgstr ""
|
2105 |
|
2106 |
#. translators: %s - API key link.
|
2107 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:76
|
2108 |
#: src/Providers/Sendgrid/Options.php:76
|
2109 |
msgid "Follow this link to get an API Key from SendGrid: %s."
|
2110 |
msgstr ""
|
2111 |
|
2112 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:78
|
2113 |
#: src/Providers/Sendgrid/Options.php:78
|
2114 |
msgid "Create API Key"
|
2115 |
msgstr ""
|
2116 |
|
2117 |
#. translators: %s - SendGrid access level.
|
2118 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendgrid/Options.php:86
|
2119 |
#: src/Providers/Sendgrid/Options.php:86
|
2120 |
msgid "To send emails you will need only a %s access level for this API key."
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:33
|
2124 |
#: src/Providers/Sendinblue/Options.php:33
|
2125 |
msgid "Sendinblue"
|
2126 |
msgstr ""
|
2127 |
|
2128 |
#. translators: %1$s - URL to sendinblue.com site.
|
2129 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:37
|
2130 |
#: src/Providers/Sendinblue/Options.php:37
|
2131 |
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue</a> serves 80,000+ growing companies around the world and sends over 30 million emails each day. They provide users 300 free emails per day."
|
2132 |
msgstr ""
|
2133 |
|
2134 |
#. translators: %2$s - URL to wpmailsmtp.com doc.
|
2135 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:40
|
2136 |
#: src/Providers/Sendinblue/Options.php:40
|
2137 |
msgid "Read our <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue documentation</a> to learn how to configure Sendinblue and improve your email deliverability."
|
2138 |
msgstr ""
|
2139 |
|
2140 |
-
#: build/wp-mail-smtp-pro/src/Providers/Sendinblue/Options.php:97
|
2141 |
#: src/Providers/Sendinblue/Options.php:97
|
2142 |
msgid "Get v3 API Key"
|
2143 |
msgstr ""
|
2144 |
|
2145 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTP/Options.php:25
|
2146 |
#: src/Providers/SMTP/Options.php:25
|
2147 |
msgid "Other SMTP"
|
2148 |
msgstr ""
|
2149 |
|
2150 |
#. translators: %s - URL to SMTP documentation.
|
2151 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTP/Options.php:29
|
2152 |
#: src/Providers/SMTP/Options.php:29
|
2153 |
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 <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP documentation</a>."
|
2154 |
msgstr ""
|
2155 |
|
2156 |
-
#:
|
2157 |
-
#: src/Providers/SMTPcom/Mailer.php:433
|
2158 |
msgid "Api Key:"
|
2159 |
msgstr ""
|
2160 |
|
2161 |
-
#:
|
2162 |
-
#: src/Providers/SMTPcom/Mailer.php:435
|
2163 |
msgid "Channel:"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
#. translators: %s - URL to smtp.com site.
|
2167 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:41
|
2168 |
#: src/Providers/SMTPcom/Options.php:41
|
2169 |
msgid "<strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP.com</a> is a recommended transactional email service.</strong> With a 22 years of track record of reliable email delivery, SMTP.com is a premiere solution for WordPress developers and website owners. SMTP.com has been around for almost as long as email itself. Their super simple integration interface makes it easy to get started while a powerful API and robust documentation make it a preferred choice among developers. Start a 30-day free trial with 50,000 emails."
|
2170 |
msgstr ""
|
2171 |
|
2172 |
#. translators: %s - URL to wpmailsmtp.com doc page for stmp.com.
|
2173 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:49
|
2174 |
#: src/Providers/SMTPcom/Options.php:49
|
2175 |
msgid "Read our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP.com documentation</a> to learn how to configure SMTP.com and improve your email deliverability."
|
2176 |
msgstr ""
|
2177 |
|
2178 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:59
|
2179 |
#: src/Providers/SMTPcom/Options.php:59
|
2180 |
msgid "Get Started with SMTP.com"
|
2181 |
msgstr ""
|
2182 |
|
2183 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:67
|
2184 |
#: src/Providers/SMTPcom/Options.php:67
|
2185 |
msgid "SMTP.com"
|
2186 |
msgstr ""
|
2187 |
|
2188 |
#. translators: %s - API key link.
|
2189 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:101
|
2190 |
#: src/Providers/SMTPcom/Options.php:101
|
2191 |
msgid "Follow this link to get an API Key from SMTP.com: %s."
|
2192 |
msgstr ""
|
2193 |
|
2194 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:103
|
2195 |
#: src/Providers/SMTPcom/Options.php:103
|
2196 |
msgid "Get API Key"
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:114
|
2200 |
#: src/Providers/SMTPcom/Options.php:114
|
2201 |
msgid "Sender Name"
|
2202 |
msgstr ""
|
2203 |
|
2204 |
#. translators: %s - Channel/Sender Name link for smtp.com documentation.
|
2205 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:130
|
2206 |
#: src/Providers/SMTPcom/Options.php:130
|
2207 |
msgid "Follow this link to get a Sender Name from SMTP.com: %s."
|
2208 |
msgstr ""
|
2209 |
|
2210 |
-
#: build/wp-mail-smtp-pro/src/Providers/SMTPcom/Options.php:132
|
2211 |
#: src/Providers/SMTPcom/Options.php:132
|
2212 |
msgid "Get Sender Name"
|
2213 |
msgstr ""
|
2214 |
|
2215 |
-
#: build/wp-mail-smtp-pro/src/SiteHealth.php:67
|
2216 |
#: src/SiteHealth.php:67
|
2217 |
msgid "Is WP Mail SMTP mailer setup complete?"
|
2218 |
msgstr ""
|
2219 |
|
2220 |
-
#:
|
2221 |
-
|
|
|
|
|
|
|
2222 |
msgid "Version"
|
2223 |
msgstr ""
|
2224 |
|
2225 |
-
#:
|
2226 |
-
#: src/SiteHealth.php:96
|
2227 |
msgid "License key type"
|
2228 |
msgstr ""
|
2229 |
|
2230 |
-
#:
|
2231 |
-
#: src/SiteHealth.php:100
|
2232 |
msgid "Debug"
|
2233 |
msgstr ""
|
2234 |
|
2235 |
-
#:
|
2236 |
-
#: src/SiteHealth.php:101
|
2237 |
msgid "No debug notices found."
|
2238 |
msgstr ""
|
2239 |
|
2240 |
-
#:
|
2241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2242 |
msgid "Current mailer"
|
2243 |
msgstr ""
|
2244 |
|
2245 |
-
#:
|
2246 |
-
#: src/SiteHealth.php:136
|
2247 |
msgid "WP Mail SMTP mailer setup is complete"
|
2248 |
msgstr ""
|
2249 |
|
2250 |
-
#:
|
2251 |
-
#: src/SiteHealth.php:145
|
2252 |
msgid "The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it's working properly."
|
2253 |
msgstr ""
|
2254 |
|
2255 |
-
#:
|
2256 |
-
#: src/SiteHealth.php:150
|
2257 |
msgid "Test email sending"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
-
#:
|
2261 |
-
#: src/SiteHealth.php:158
|
2262 |
msgid "You currently have the default mailer selected, which means that you haven’t set up SMTP yet."
|
2263 |
msgstr ""
|
2264 |
|
2265 |
-
#:
|
2266 |
-
#: src/SiteHealth.php:163
|
2267 |
msgid "WP Mail SMTP mailer setup is incomplete"
|
2268 |
msgstr ""
|
2269 |
|
2270 |
-
#:
|
2271 |
-
#: src/SiteHealth.php:169
|
2272 |
msgid "The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer."
|
2273 |
msgstr ""
|
2274 |
|
2275 |
-
#:
|
2276 |
-
#: src/SiteHealth.php:174
|
2277 |
msgid "Configure mailer"
|
2278 |
msgstr ""
|
2279 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2280 |
#. translators: %1$s - date, \a\t - specially escaped "at", %2$s - time.
|
2281 |
-
#: build/wp-mail-smtp-pro/src/WP.php:190
|
2282 |
#: src/WP.php:190
|
2283 |
msgid "%1$s \\a\\t %2$s"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
-
#: build/wp-mail-smtp-pro/wp_mail_smtp.php:135
|
2287 |
#: wp_mail_smtp.php:135
|
2288 |
msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro."
|
2289 |
msgstr ""
|
2290 |
|
2291 |
#. translators: %1$s - WPBeginner URL for recommended WordPress hosting.
|
2292 |
-
#: build/wp-mail-smtp-pro/wp_mail_smtp.php:163
|
2293 |
#: wp_mail_smtp.php:163
|
2294 |
msgid "Your site is running an <strong>insecure version</strong> of PHP that is no longer supported. Please contact your web hosting provider to update your PHP version or switch to a <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">recommended WordPress hosting company</a>."
|
2295 |
msgstr ""
|
2296 |
|
2297 |
#. translators: %s - WPMailSMTP.com docs URL with more details.
|
2298 |
-
#: build/wp-mail-smtp-pro/wp_mail_smtp.php:180
|
2299 |
#: wp_mail_smtp.php:180
|
2300 |
msgid "<strong>WP Mail SMTP plugin is disabled</strong> on your site until you fix the issue. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read more for additional information.</a>"
|
2301 |
msgstr ""
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
+
"Project-Id-Version: WP Mail SMTP 2.2.1\n"
|
4 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
|
5 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
6 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
7 |
"MIME-Version: 1.0\n"
|
8 |
"Content-Type: text/plain; charset=UTF-8\n"
|
9 |
"Content-Transfer-Encoding: 8bit\n"
|
10 |
+
"POT-Creation-Date: 2020-07-09T12:48:03+03:00\n"
|
11 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
12 |
"X-Generator: WP-CLI 2.4.0\n"
|
13 |
"X-Domain: wp-mail-smtp\n"
|
33 |
msgstr ""
|
34 |
|
35 |
#. translators: %s - error code, returned by Google API.
|
|
|
36 |
#: src/Admin/Area.php:125
|
37 |
msgid "There was an error while processing the authentication request: %s. Please try again."
|
38 |
msgstr ""
|
39 |
|
|
|
40 |
#: src/Admin/Area.php:133
|
41 |
msgid "There was an error while processing the authentication request. Please try again."
|
42 |
msgstr ""
|
43 |
|
|
|
44 |
#: src/Admin/Area.php:140
|
45 |
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."
|
46 |
msgstr ""
|
47 |
|
|
|
48 |
#: src/Admin/Area.php:149
|
49 |
msgid "You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail."
|
50 |
msgstr ""
|
51 |
|
|
|
52 |
#: src/Admin/Area.php:155
|
53 |
msgid "You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook."
|
54 |
msgstr ""
|
55 |
|
56 |
#. translators: %s - Mailer anchor link.
|
|
|
57 |
#: src/Admin/Area.php:186
|
58 |
msgid "Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, <strong>please select and configure your <a href=\"%s\">Mailer</a></strong>."
|
59 |
msgstr ""
|
60 |
|
|
|
|
|
|
|
61 |
#: src/Admin/Area.php:209
|
62 |
#: src/Admin/Area.php:210
|
63 |
#: src/SiteHealth.php:40
|
64 |
msgid "WP Mail SMTP"
|
65 |
msgstr ""
|
66 |
|
|
|
|
|
|
|
67 |
#: src/Admin/Area.php:220
|
68 |
#: src/Admin/Area.php:221
|
69 |
+
#: src/Admin/Area.php:862
|
70 |
msgid "Settings"
|
71 |
msgstr ""
|
72 |
|
|
|
|
|
|
|
|
|
|
|
73 |
#: src/Admin/Area.php:228
|
74 |
#: src/Admin/Area.php:229
|
75 |
+
#: src/Admin/Pages/About.php:651
|
76 |
+
#: src/Admin/Pages/Logs.php:48
|
77 |
#: src/Admin/Pages/LogsTab.php:30
|
78 |
msgid "Email Log"
|
79 |
msgstr ""
|
80 |
|
|
|
|
|
|
|
81 |
#: src/Admin/Area.php:238
|
82 |
#: src/Admin/Area.php:239
|
83 |
+
#: src/Admin/Pages/About.php:106
|
84 |
msgid "About Us"
|
85 |
msgstr ""
|
86 |
|
|
|
87 |
#: src/Admin/Area.php:302
|
88 |
msgid "Are you sure you want to reset the current provider connection? You will need to immediately create a new one to be able to send emails."
|
89 |
msgstr ""
|
90 |
|
|
|
91 |
#: src/Admin/Area.php:303
|
92 |
msgid "Changes that you made to the settings are not saved!"
|
93 |
msgstr ""
|
94 |
|
|
|
95 |
#: src/Admin/Area.php:305
|
96 |
msgid "Heads up!"
|
97 |
msgstr ""
|
98 |
|
|
|
99 |
#: src/Admin/Area.php:307
|
100 |
msgid "<p>The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.</p><p>Please consider selecting and configuring one of the other mailers.</p>"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: src/Admin/Area.php:310
|
104 |
+
#: src/Admin/PageAbstract.php:83
|
|
|
|
|
105 |
msgid "Save Settings"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: src/Admin/Area.php:311
|
|
|
109 |
msgid "Cancel"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: src/Admin/Area.php:312
|
|
|
113 |
msgid "Warning icon"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: src/Admin/Area.php:317
|
|
|
117 |
msgid "%name% is a PRO Feature"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: src/Admin/Area.php:318
|
|
|
121 |
msgid "Upgrade to Pro"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: src/Admin/Area.php:322
|
|
|
125 |
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span>$50 off</span> regular price,<br>applied at checkout."
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: src/Admin/Area.php:331
|
|
|
129 |
msgid "Already purchased?"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: src/Admin/Area.php:398
|
133 |
+
#: src/Admin/Area.php:405
|
134 |
+
#: src/Admin/Pages/About.php:332
|
|
|
|
|
|
|
135 |
msgid "Activate"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: src/Admin/Area.php:399
|
139 |
+
#: src/Admin/Pages/About.php:324
|
|
|
|
|
140 |
msgid "Activated"
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: src/Admin/Area.php:400
|
144 |
+
#: src/Admin/Pages/About.php:321
|
|
|
|
|
145 |
msgid "Active"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: src/Admin/Area.php:401
|
149 |
+
#: src/Admin/Pages/About.php:329
|
|
|
|
|
150 |
msgid "Inactive"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: src/Admin/Area.php:402
|
|
|
154 |
msgid "Processing..."
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: src/Admin/Area.php:403
|
|
|
158 |
msgid "Could not install a plugin. Please download from WordPress.org and install manually."
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: src/Admin/Area.php:404
|
|
|
162 |
msgid "Install and Activate"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: src/Admin/Area.php:406
|
|
|
166 |
msgid "Download"
|
167 |
msgstr ""
|
168 |
|
169 |
#. translators: %1$s - WP.org link; %2$s - same WP.org link.
|
170 |
+
#: src/Admin/Area.php:466
|
|
|
171 |
msgid "Please rate <strong>WP Mail SMTP</strong> <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">★★★★★</a> on <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org</a> to help us spread the word. Thank you from the WP Mail SMTP team!"
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: src/Admin/Area.php:803
|
|
|
175 |
msgid "WP Mail SMTP Pro related message was successfully dismissed."
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: src/Admin/Area.php:822
|
|
|
179 |
msgid "Educational notice for this mailer was successfully dismissed."
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: src/Admin/Area.php:861
|
|
|
183 |
msgid "Go to WP Mail SMTP Settings page"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: src/Admin/Area.php:868
|
|
|
187 |
msgid "Go to WP Mail SMTP Lite vs Pro comparison page"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: src/Admin/Area.php:869
|
|
|
191 |
msgid "Premium Support"
|
192 |
msgstr ""
|
193 |
|
194 |
#. translators: %s - plugin current license type.
|
195 |
+
#: src/Admin/Pages/About.php:99
|
196 |
+
#: src/Admin/Pages/About.php:550
|
|
|
|
|
197 |
msgid "%s vs Pro"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: src/Admin/Pages/About.php:171
|
|
|
201 |
msgid "Hello and welcome to WP Mail SMTP, the easiest and most popular WordPress SMTP plugin. We build software that helps your site reliably deliver emails every time."
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: src/Admin/Pages/About.php:175
|
|
|
205 |
msgid "Email deliverability has been a well-documented problem for all WordPress websites. However as WPForms grew, we became more aware of this painful issue that affects our users and the larger WordPress community. So we decided to solve this problem and make a solution that's beginner friendly."
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: src/Admin/Pages/About.php:178
|
|
|
209 |
msgid "Our goal is to make reliable email deliverability easy for WordPress."
|
210 |
msgstr ""
|
211 |
|
212 |
#. translators: %1$s - WPForms URL, %2$s - WPBeginner URL, %3$s - OptinMonster URL, %4$s - MonsterInsights URL, %5$s - RafflePress URL
|
213 |
+
#: src/Admin/Pages/About.php:185
|
|
|
214 |
msgid "WP Mail SMTP is brought to you by the same team that's behind the most user friendly WordPress forms, <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">WPForms</a>, the largest WordPress resource site, <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">WPBeginner</a>, the most popular lead-generation software, <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">OptinMonster</a>, the best WordPress analytics plugin, <a href=\"%4$s\" target=\"_blank\" rel=\"noopener noreferrer\">MonsterInsights</a>, and the most powerful WordPress contest plugin, <a href=\"%5$s\" target=\"_blank\" rel=\"noopener noreferrer\">RafflePress</a>."
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: src/Admin/Pages/About.php:203
|
|
|
218 |
msgid "Yup, we know a thing or two about building awesome products that customers love."
|
219 |
msgstr ""
|
220 |
|
221 |
+
#: src/Admin/Pages/About.php:209
|
|
|
222 |
msgid "The WPForms Team photo"
|
223 |
msgstr ""
|
224 |
|
225 |
+
#: src/Admin/Pages/About.php:211
|
|
|
226 |
msgid "The WPForms Team"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: src/Admin/Pages/About.php:260
|
230 |
+
msgid "Plugin icon"
|
231 |
+
msgstr ""
|
232 |
+
|
233 |
#. translators: %s - status HTML text.
|
234 |
+
#: src/Admin/Pages/About.php:274
|
|
|
235 |
msgid "Status: %s"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: src/Admin/Pages/About.php:340
|
|
|
239 |
msgid "Not Installed"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: src/Admin/Pages/About.php:343
|
|
|
243 |
msgid "Install Plugin"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: src/Admin/Pages/About.php:364
|
|
|
247 |
msgid "MonsterInsights"
|
248 |
msgstr ""
|
249 |
|
250 |
+
#: src/Admin/Pages/About.php:365
|
251 |
+
#: src/Admin/Pages/About.php:371
|
|
|
|
|
252 |
msgid "MonsterInsights makes it “effortless” to properly connect your WordPress site with Google Analytics, so you can start making data-driven decisions to grow your business."
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: src/Admin/Pages/About.php:370
|
|
|
256 |
msgid "MonsterInsights Pro"
|
257 |
msgstr ""
|
258 |
|
259 |
+
#: src/Admin/Pages/About.php:378
|
|
|
260 |
msgid "OptinMonster"
|
261 |
msgstr ""
|
262 |
|
263 |
+
#: src/Admin/Pages/About.php:379
|
|
|
264 |
msgid "Our high-converting optin forms like Exit-Intent® popups, Fullscreen Welcome Mats, and Scroll boxes help you dramatically boost conversions and get more email subscribers."
|
265 |
msgstr ""
|
266 |
|
267 |
+
#: src/Admin/Pages/About.php:385
|
|
|
268 |
msgid "Contact Forms by WPForms"
|
269 |
msgstr ""
|
270 |
|
271 |
+
#: src/Admin/Pages/About.php:386
|
272 |
+
#: src/Admin/Pages/About.php:392
|
|
|
|
|
273 |
msgid "The best WordPress contact form plugin. Drag & Drop online form builder that helps you create beautiful contact forms with just a few clicks."
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: src/Admin/Pages/About.php:391
|
|
|
277 |
msgid "WPForms Pro"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: src/Admin/Pages/About.php:399
|
|
|
281 |
msgid "RafflePress"
|
282 |
msgstr ""
|
283 |
|
284 |
+
#: src/Admin/Pages/About.php:400
|
285 |
+
#: src/Admin/Pages/About.php:406
|
|
|
|
|
286 |
msgid "Turn your visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with powerful viral giveaways & contests."
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: src/Admin/Pages/About.php:405
|
|
|
290 |
msgid "RafflePress Pro"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: src/Admin/Pages/About.php:425
|
|
|
294 |
msgid "Could not activate the plugin. Please activate it from the Plugins page."
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: src/Admin/Pages/About.php:437
|
|
|
298 |
msgid "Plugin activated."
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: src/Admin/Pages/About.php:454
|
|
|
302 |
msgid "Could not install the plugin."
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: src/Admin/Pages/About.php:515
|
|
|
306 |
msgid "Plugin installed & activated."
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: src/Admin/Pages/About.php:523
|
|
|
310 |
msgid "Plugin installed."
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: src/Admin/Pages/About.php:558
|
|
|
314 |
msgid "Get the most out of WP Mail SMTP by upgrading to Pro and unlocking all of the powerful features."
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: src/Admin/Pages/About.php:567
|
|
|
318 |
msgid "Feature"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: src/Admin/Pages/About.php:577
|
|
|
322 |
msgid "Pro"
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: src/Admin/Pages/About.php:618
|
|
|
326 |
msgid "Get WP Mail SMTP Pro Today and Unlock all of these Powerful Features"
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: src/Admin/Pages/About.php:625
|
|
|
330 |
msgid "Bonus: WP Mail SMTP Lite users get <span class=\"price-off\">$50 off regular price</span>, automatically applied at checkout."
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: src/Admin/Pages/About.php:652
|
|
|
|
|
334 |
#: src/Admin/Pages/ControlTab.php:27
|
335 |
msgid "Email Controls"
|
336 |
msgstr ""
|
337 |
|
338 |
+
#: src/Admin/Pages/About.php:653
|
|
|
339 |
msgid "Additional Mailers"
|
340 |
msgstr ""
|
341 |
|
342 |
+
#: src/Admin/Pages/About.php:654
|
|
|
343 |
msgid "Customer Support"
|
344 |
msgstr ""
|
345 |
|
346 |
+
#: src/Admin/Pages/About.php:675
|
|
|
347 |
msgid "Emails are not logged"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: src/Admin/Pages/About.php:681
|
|
|
351 |
msgid "Complete Email Log management inside WordPress"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: src/Admin/Pages/About.php:689
|
|
|
355 |
msgid "No controls over whether default WordPress emails are sent"
|
356 |
msgstr ""
|
357 |
|
358 |
+
#: src/Admin/Pages/About.php:695
|
|
|
359 |
msgid "Complete Email Controls management for most default WordPress emails"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: src/Admin/Pages/About.php:703
|
|
|
363 |
msgid "Only default list of mailers"
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: src/Admin/Pages/About.php:709
|
|
|
367 |
msgid "Additional mailers: Microsoft Outlook (with Office365 support) and Amazon SES"
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: src/Admin/Pages/About.php:717
|
|
|
371 |
msgid "Limited Support"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: src/Admin/Pages/About.php:723
|
|
|
375 |
msgid "Priority Support"
|
376 |
msgstr ""
|
377 |
|
|
|
378 |
#: src/Admin/Pages/ControlTab.php:48
|
379 |
msgid "Comment Notifications"
|
380 |
msgstr ""
|
381 |
|
|
|
382 |
#: src/Admin/Pages/ControlTab.php:49
|
383 |
msgid "Manage emails sent when comments are published or awaiting moderation."
|
384 |
msgstr ""
|
385 |
|
|
|
386 |
#: src/Admin/Pages/ControlTab.php:53
|
387 |
msgid "Site Admin Email Change Notifications"
|
388 |
msgstr ""
|
389 |
|
|
|
390 |
#: src/Admin/Pages/ControlTab.php:54
|
391 |
msgid "Manage emails sent when site admin's account has been changed."
|
392 |
msgstr ""
|
393 |
|
|
|
394 |
#: src/Admin/Pages/ControlTab.php:58
|
395 |
msgid "User Change Notifications"
|
396 |
msgstr ""
|
397 |
|
|
|
398 |
#: src/Admin/Pages/ControlTab.php:59
|
399 |
msgid "Limit emails triggered by password changed/reset, email changed, and more."
|
400 |
msgstr ""
|
401 |
|
|
|
402 |
#: src/Admin/Pages/ControlTab.php:63
|
403 |
msgid "Personal Data Requests Notifications"
|
404 |
msgstr ""
|
405 |
|
|
|
406 |
#: src/Admin/Pages/ControlTab.php:64
|
407 |
msgid "Control emails for data requests and data removal actions."
|
408 |
msgstr ""
|
409 |
|
|
|
410 |
#: src/Admin/Pages/ControlTab.php:68
|
411 |
msgid "Automatic Update Notifications"
|
412 |
msgstr ""
|
413 |
|
|
|
414 |
#: src/Admin/Pages/ControlTab.php:69
|
415 |
msgid "Manage emails sent by the core automatic update process."
|
416 |
msgstr ""
|
417 |
|
|
|
418 |
#: src/Admin/Pages/ControlTab.php:73
|
419 |
msgid "New User Notifications"
|
420 |
msgstr ""
|
421 |
|
|
|
422 |
#: src/Admin/Pages/ControlTab.php:74
|
423 |
msgid "Toggle emails sent to both user and site administrator about new user accounts."
|
424 |
msgstr ""
|
425 |
|
|
|
426 |
#: src/Admin/Pages/ControlTab.php:92
|
427 |
msgid "Unlock Email Controls"
|
428 |
msgstr ""
|
429 |
|
|
|
430 |
#: src/Admin/Pages/ControlTab.php:95
|
431 |
msgid "Email Controls allows you to granularly manage emails sent by WordPress.
"
|
432 |
msgstr ""
|
433 |
|
|
|
|
|
434 |
#: src/Admin/Pages/ControlTab.php:119
|
435 |
#: src/Admin/Pages/LogsTab.php:67
|
436 |
msgid "Upgrade to WP Mail SMTP Pro"
|
437 |
msgstr ""
|
438 |
|
|
|
439 |
#: src/Admin/Pages/LogsTab.php:53
|
440 |
msgid "Unlock Email Logging"
|
441 |
msgstr ""
|
442 |
|
|
|
443 |
#: src/Admin/Pages/LogsTab.php:56
|
444 |
msgid "Keep track of every email sent from your WordPress site with email logging.
"
|
445 |
msgstr ""
|
446 |
|
|
|
447 |
#: src/Admin/Pages/LogsTab.php:57
|
448 |
msgid "Troubleshoot sending issues, recover lost emails, and more!"
|
449 |
msgstr ""
|
450 |
|
|
|
451 |
#: src/Admin/Pages/LogsTab.php:61
|
452 |
msgid "Logs Archive Page Screenshot"
|
453 |
msgstr ""
|
454 |
|
|
|
455 |
#: src/Admin/Pages/LogsTab.php:62
|
456 |
msgid "Logs Single Page Screenshot"
|
457 |
msgstr ""
|
458 |
|
|
|
459 |
#: src/Admin/Pages/MiscTab.php:24
|
460 |
msgid "Misc"
|
461 |
msgstr ""
|
462 |
|
|
|
463 |
#: src/Admin/Pages/MiscTab.php:56
|
464 |
msgid "Do Not Send"
|
465 |
msgstr ""
|
466 |
|
|
|
467 |
#: src/Admin/Pages/MiscTab.php:65
|
468 |
msgid "Check this if you would like to stop sending all emails."
|
469 |
msgstr ""
|
470 |
|
|
|
471 |
#: src/Admin/Pages/MiscTab.php:71
|
472 |
msgid "Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default <code>wp_mail()</code> function to send emails."
|
473 |
msgstr ""
|
474 |
|
|
|
475 |
#: src/Admin/Pages/MiscTab.php:79
|
476 |
msgid "You will need to consult with their documentation to switch them to use default WordPress email delivery."
|
477 |
msgstr ""
|
478 |
|
|
|
479 |
#: src/Admin/Pages/MiscTab.php:81
|
480 |
msgid "Test emails are allowed to be sent, regardless of this option."
|
481 |
msgstr ""
|
482 |
|
483 |
#. translators: %1$s - constant that was used; %2$s - file where it was used.
|
|
|
|
|
484 |
#: src/Admin/Pages/MiscTab.php:86
|
485 |
#: src/Providers/OptionsAbstract.php:468
|
486 |
msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation."
|
487 |
msgstr ""
|
488 |
|
489 |
#. translators: %s - The URL to the constants support article.
|
|
|
490 |
#: src/Admin/Pages/MiscTab.php:93
|
491 |
msgid "Please read this <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">support article</a> if you want to enable this option using constants."
|
492 |
msgstr ""
|
493 |
|
|
|
494 |
#: src/Admin/Pages/MiscTab.php:114
|
495 |
msgid "Hide Announcements"
|
496 |
msgstr ""
|
497 |
|
|
|
498 |
#: src/Admin/Pages/MiscTab.php:123
|
499 |
msgid "Check this if you would like to hide plugin announcements and update details."
|
500 |
msgstr ""
|
501 |
|
|
|
502 |
#: src/Admin/Pages/MiscTab.php:133
|
503 |
msgid "Hide Email Delivery Errors"
|
504 |
msgstr ""
|
505 |
|
|
|
506 |
#: src/Admin/Pages/MiscTab.php:149
|
507 |
msgid "Check this if you would like to hide warnings alerting of email delivery errors."
|
508 |
msgstr ""
|
509 |
|
510 |
#. translators: %s - filter that was used to disabled.
|
|
|
511 |
#: src/Admin/Pages/MiscTab.php:156
|
512 |
msgid "Email Delivery Errors were disabled using a %s filter."
|
513 |
msgstr ""
|
514 |
|
|
|
515 |
#: src/Admin/Pages/MiscTab.php:165
|
516 |
msgid "<strong>This is not recommended</strong> and should only be done for staging or development sites."
|
517 |
msgstr ""
|
518 |
|
|
|
519 |
#: src/Admin/Pages/MiscTab.php:180
|
520 |
msgid "Uninstall WP Mail SMTP"
|
521 |
msgstr ""
|
522 |
|
|
|
523 |
#: src/Admin/Pages/MiscTab.php:188
|
524 |
msgid "Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable."
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: src/Admin/Pages/MiscTab.php:234
|
528 |
+
#: src/Admin/Pages/SettingsTab.php:583
|
|
|
|
|
529 |
msgid "Settings were successfully saved."
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: src/Admin/Pages/SettingsTab.php:37
|
|
|
533 |
msgid "General"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: src/Admin/Pages/SettingsTab.php:67
|
|
|
537 |
msgid "License"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: src/Admin/Pages/SettingsTab.php:70
|
|
|
541 |
msgid "Your license key provides access to updates and support."
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: src/Admin/Pages/SettingsTab.php:78
|
|
|
545 |
msgid "License Key"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: src/Admin/Pages/SettingsTab.php:88
|
|
|
549 |
msgid "Mail"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: src/Admin/Pages/SettingsTab.php:95
|
|
|
553 |
msgid "From Email"
|
554 |
msgstr ""
|
555 |
|
556 |
+
#: src/Admin/Pages/SettingsTab.php:113
|
557 |
+
msgid "Please first authorize the Gmail mailer below"
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: src/Admin/Pages/SettingsTab.php:127
|
561 |
msgid "The email address which emails are sent from."
|
562 |
msgstr ""
|
563 |
|
564 |
+
#: src/Admin/Pages/SettingsTab.php:128
|
565 |
+
msgid "If you're using an email provider (Yahoo, Outlook.com, etc) this should be your email address for that account."
|
|
|
566 |
msgstr ""
|
567 |
|
568 |
+
#: src/Admin/Pages/SettingsTab.php:131
|
|
|
569 |
msgid "Please note that other plugins can change this, to prevent this use the setting below."
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: src/Admin/Pages/SettingsTab.php:149
|
|
|
573 |
msgid "Force From Email"
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: src/Admin/Pages/SettingsTab.php:156
|
|
|
577 |
msgid "Current provider will automatically force From Email to be the email address that you use to set up the connection below."
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: src/Admin/Pages/SettingsTab.php:158
|
581 |
+
msgid "Gmail mailer will automatically force From Email to be the email address that you selected above."
|
582 |
+
msgstr ""
|
583 |
+
|
584 |
+
#: src/Admin/Pages/SettingsTab.php:164
|
585 |
msgid "If checked, the From Email setting above will be used for all emails, ignoring values set by other plugins."
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: src/Admin/Pages/SettingsTab.php:174
|
|
|
589 |
msgid "From Name"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: src/Admin/Pages/SettingsTab.php:185
|
|
|
593 |
msgid "The name which emails are sent from."
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: src/Admin/Pages/SettingsTab.php:197
|
|
|
597 |
msgid "Force From Name"
|
598 |
msgstr ""
|
599 |
|
600 |
+
#: src/Admin/Pages/SettingsTab.php:202
|
|
|
601 |
msgid "Current provider doesn't support setting and forcing From Name. Emails will be sent on behalf of the account name used to setup the connection below."
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: src/Admin/Pages/SettingsTab.php:206
|
|
|
605 |
msgid "If checked, the From Name setting above will be used for all emails, ignoring values set by other plugins."
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: src/Admin/Pages/SettingsTab.php:215
|
|
|
609 |
msgid "Return Path"
|
610 |
msgstr ""
|
611 |
|
612 |
+
#: src/Admin/Pages/SettingsTab.php:224
|
|
|
613 |
msgid "Set the return-path to match the From Email"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: src/Admin/Pages/SettingsTab.php:228
|
|
|
617 |
msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent."
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: src/Admin/Pages/SettingsTab.php:229
|
|
|
621 |
msgid "If unchecked, bounce messages may be lost. Some providers may ignore this option."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: src/Admin/Pages/SettingsTab.php:237
|
|
|
625 |
msgid "Mailer"
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: src/Admin/Pages/SettingsTab.php:278
|
|
|
629 |
msgid "Don't see what you're looking for?"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: src/Admin/Pages/SettingsTab.php:280
|
|
|
633 |
msgid "Suggest a Mailer"
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: src/Admin/Pages/SettingsTab.php:308
|
|
|
637 |
msgid "Dismiss this notice"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: src/Admin/Pages/SettingsTab.php:355
|
|
|
641 |
msgid "You're using WP Mail SMTP Lite - no license needed. Enjoy!"
|
642 |
msgstr ""
|
643 |
|
644 |
#. translators: %s - WPMailSMTP.com upgrade URL.
|
645 |
+
#: src/Admin/Pages/SettingsTab.php:361
|
|
|
646 |
msgid "To unlock more features consider <strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wp-mail-smtp-upgrade-modal\">upgrading to PRO</a></strong>."
|
647 |
msgstr ""
|
648 |
|
649 |
+
#: src/Admin/Pages/SettingsTab.php:380
|
|
|
650 |
msgid "As a valued WP Mail SMTP Lite user you receive <strong>$50 off</strong>, automatically applied at checkout!"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: src/Admin/Pages/SettingsTab.php:441
|
|
|
654 |
msgid "Get WP Mail SMTP Pro and Unlock all the Powerful Features"
|
655 |
msgstr ""
|
656 |
|
657 |
+
#: src/Admin/Pages/SettingsTab.php:445
|
|
|
658 |
msgid "Thanks for being a loyal WP Mail SMTP user. Upgrade to WP Mail SMTP Pro to unlock more awesome features and experience why WP Mail SMTP is the most popular SMTP plugin."
|
659 |
msgstr ""
|
660 |
|
661 |
+
#: src/Admin/Pages/SettingsTab.php:449
|
|
|
662 |
msgid "We know that you will truly love WP Mail SMTP. It's used by over 1,000,000 websites."
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: src/Admin/Pages/SettingsTab.php:452
|
|
|
666 |
msgid "Pro Features:"
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: src/Admin/Pages/SettingsTab.php:456
|
|
|
670 |
msgid "Manage Notifications - control which emails your site sends"
|
671 |
msgstr ""
|
672 |
|
673 |
+
#: src/Admin/Pages/SettingsTab.php:457
|
|
|
674 |
msgid "Email Logging - keep track of every email sent from your site"
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: src/Admin/Pages/SettingsTab.php:458
|
|
|
678 |
msgid "Office 365 - send emails using your Office 365 account"
|
679 |
msgstr ""
|
680 |
|
681 |
+
#: src/Admin/Pages/SettingsTab.php:459
|
|
|
682 |
msgid "Amazon SES - harness the power of AWS"
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: src/Admin/Pages/SettingsTab.php:460
|
|
|
686 |
msgid "Outlook.com - send emails using your Outlook.com account"
|
687 |
msgstr ""
|
688 |
|
689 |
+
#: src/Admin/Pages/SettingsTab.php:461
|
|
|
690 |
msgid "Access to our world class support team"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: src/Admin/Pages/SettingsTab.php:464
|
|
|
694 |
msgid "White Glove Setup - sit back and relax while we handle everything for you"
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: src/Admin/Pages/SettingsTab.php:465
|
|
|
698 |
msgid "Install WP Mail SMTP Pro plugin"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: src/Admin/Pages/SettingsTab.php:466
|
|
|
702 |
msgid "Set up domain name verification (DNS)"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: src/Admin/Pages/SettingsTab.php:467
|
|
|
706 |
msgid "Configure Mailgun service"
|
707 |
msgstr ""
|
708 |
|
709 |
+
#: src/Admin/Pages/SettingsTab.php:468
|
|
|
710 |
msgid "Set up WP Mail SMTP Pro plugin"
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: src/Admin/Pages/SettingsTab.php:469
|
|
|
714 |
msgid "Test and verify email delivery"
|
715 |
msgstr ""
|
716 |
|
717 |
#. translators: %s - WPMailSMTP.com URL.
|
718 |
+
#: src/Admin/Pages/SettingsTab.php:477
|
|
|
719 |
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get WP Mail SMTP Pro Today and Unlock all the Powerful Features »</a>"
|
720 |
msgstr ""
|
721 |
|
722 |
+
#: src/Admin/Pages/SettingsTab.php:495
|
|
|
723 |
msgid "<strong>Bonus:</strong> WP Mail SMTP users get <span class=\"price-off\">$50 off regular price</span>, automatically applied at checkout."
|
724 |
msgstr ""
|
725 |
|
|
|
726 |
#: src/Admin/Pages/TestTab.php:37
|
727 |
msgid "Email Test"
|
728 |
msgstr ""
|
729 |
|
|
|
730 |
#: src/Admin/Pages/TestTab.php:59
|
731 |
msgid "Send a Test Email"
|
732 |
msgstr ""
|
733 |
|
|
|
734 |
#: src/Admin/Pages/TestTab.php:66
|
735 |
msgid "Send To"
|
736 |
msgstr ""
|
737 |
|
|
|
738 |
#: src/Admin/Pages/TestTab.php:72
|
739 |
msgid "Enter email address where test email will be sent."
|
740 |
msgstr ""
|
741 |
|
|
|
742 |
#: src/Admin/Pages/TestTab.php:80
|
743 |
msgid "HTML"
|
744 |
msgstr ""
|
745 |
|
|
|
|
|
|
|
746 |
#: src/Admin/Pages/TestTab.php:86
|
747 |
#: src/Providers/OptionsAbstract.php:264
|
748 |
#: src/Providers/OptionsAbstract.php:286
|
749 |
msgid "On"
|
750 |
msgstr ""
|
751 |
|
|
|
|
|
|
|
752 |
#: src/Admin/Pages/TestTab.php:87
|
753 |
#: src/Providers/OptionsAbstract.php:265
|
754 |
#: src/Providers/OptionsAbstract.php:287
|
755 |
msgid "Off"
|
756 |
msgstr ""
|
757 |
|
|
|
758 |
#: src/Admin/Pages/TestTab.php:90
|
759 |
msgid "Send this email in HTML or in plain text format."
|
760 |
msgstr ""
|
761 |
|
|
|
762 |
#: src/Admin/Pages/TestTab.php:110
|
763 |
msgid "You cannot send an email. Mailer is not properly configured. Please check your settings."
|
764 |
msgstr ""
|
765 |
|
|
|
766 |
#: src/Admin/Pages/TestTab.php:114
|
767 |
msgid "Send Email"
|
768 |
msgstr ""
|
769 |
|
|
|
770 |
#: src/Admin/Pages/TestTab.php:142
|
771 |
msgid "Test failed. Please use a valid email address and try to resend the test email."
|
772 |
msgstr ""
|
773 |
|
774 |
#. translators: %s - email address a test email will be sent to.
|
|
|
|
|
775 |
#: src/Admin/Pages/TestTab.php:154
|
776 |
#: src/Admin/Pages/TestTab.php:160
|
777 |
msgid "Test email to %s"
|
778 |
msgstr ""
|
779 |
|
|
|
780 |
#: src/Admin/Pages/TestTab.php:186
|
781 |
msgid "Test plain text email was sent successfully!"
|
782 |
msgstr ""
|
783 |
|
784 |
#. translators: %s - "HTML" in bold.
|
|
|
785 |
#: src/Admin/Pages/TestTab.php:190
|
786 |
msgid "Test %s email was sent successfully! Please check your inbox to make sure it is delivered."
|
787 |
msgstr ""
|
788 |
|
|
|
789 |
#: src/Admin/Pages/TestTab.php:510
|
790 |
msgid "SSL certificate issue."
|
791 |
msgstr ""
|
792 |
|
|
|
793 |
#: src/Admin/Pages/TestTab.php:511
|
794 |
msgid "This means your web server cannot reliably make secure connections (make requests to HTTPS sites)."
|
795 |
msgstr ""
|
796 |
|
|
|
|
|
797 |
#: src/Admin/Pages/TestTab.php:512
|
798 |
#: src/Admin/Pages/TestTab.php:560
|
799 |
msgid "Typically this error is returned when web server is not configured properly."
|
800 |
msgstr ""
|
801 |
|
|
|
802 |
#: src/Admin/Pages/TestTab.php:515
|
803 |
msgid "Contact your web hosting provider and inform them your site has an issue with SSL certificates."
|
804 |
msgstr ""
|
805 |
|
|
|
|
|
806 |
#: src/Admin/Pages/TestTab.php:516
|
807 |
#: src/Admin/Pages/TestTab.php:564
|
808 |
msgid "The exact error you can provide them is in the Error log, available at the bottom of this page."
|
809 |
msgstr ""
|
810 |
|
|
|
|
|
811 |
#: src/Admin/Pages/TestTab.php:517
|
812 |
#: src/Admin/Pages/TestTab.php:565
|
813 |
msgid "Ask them to resolve the issue then try again."
|
814 |
msgstr ""
|
815 |
|
|
|
816 |
#: src/Admin/Pages/TestTab.php:528
|
817 |
msgid "Could not connect to host."
|
818 |
msgstr ""
|
819 |
|
820 |
#. translators: %s - SMTP host address.
|
|
|
|
|
|
|
821 |
#: src/Admin/Pages/TestTab.php:531
|
822 |
#: src/Admin/Pages/TestTab.php:556
|
823 |
#: src/Admin/Pages/TestTab.php:658
|
824 |
msgid "This means your web server was unable to connect to %s."
|
825 |
msgstr ""
|
826 |
|
|
|
|
|
|
|
827 |
#: src/Admin/Pages/TestTab.php:534
|
828 |
#: src/Admin/Pages/TestTab.php:559
|
829 |
#: src/Admin/Pages/TestTab.php:661
|
830 |
msgid "This means your web server was unable to connect to the host server."
|
831 |
msgstr ""
|
832 |
|
|
|
833 |
#: src/Admin/Pages/TestTab.php:535
|
834 |
msgid "Typically this error is returned your web server is blocking the connections or the SMTP host denying the request."
|
835 |
msgstr ""
|
836 |
|
837 |
#. translators: %s - SMTP host address.
|
|
|
838 |
#: src/Admin/Pages/TestTab.php:539
|
839 |
msgid "Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection."
|
840 |
msgstr ""
|
841 |
|
|
|
842 |
#: src/Admin/Pages/TestTab.php:542
|
843 |
msgid "If using \"Other SMTP\" Mailer, triple check your SMTP settings including host address, email, and password."
|
844 |
msgstr ""
|
845 |
|
|
|
846 |
#: src/Admin/Pages/TestTab.php:543
|
847 |
msgid "If using \"Other SMTP\" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc)."
|
848 |
msgstr ""
|
849 |
|
|
|
850 |
#: src/Admin/Pages/TestTab.php:553
|
851 |
msgid "Could not connect to your host."
|
852 |
msgstr ""
|
853 |
|
|
|
854 |
#: src/Admin/Pages/TestTab.php:563
|
855 |
msgid "Contact your web hosting provider and inform them you are having issues making outbound connections."
|
856 |
msgstr ""
|
857 |
|
|
|
858 |
#: src/Admin/Pages/TestTab.php:575
|
859 |
msgid "Could not authenticate your SMTP account."
|
860 |
msgstr ""
|
861 |
|
|
|
862 |
#: src/Admin/Pages/TestTab.php:576
|
863 |
msgid "This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings."
|
864 |
msgstr ""
|
865 |
|
|
|
866 |
#: src/Admin/Pages/TestTab.php:577
|
867 |
msgid "Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting."
|
868 |
msgstr ""
|
869 |
|
|
|
870 |
#: src/Admin/Pages/TestTab.php:580
|
871 |
msgid "Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings."
|
872 |
msgstr ""
|
873 |
|
|
|
|
|
874 |
#: src/Admin/Pages/TestTab.php:581
|
875 |
#: src/Admin/Pages/TestTab.php:686
|
876 |
msgid "Contact your SMTP host to confirm you are using the correct username and password."
|
877 |
msgstr ""
|
878 |
|
|
|
|
|
879 |
#: src/Admin/Pages/TestTab.php:582
|
880 |
#: src/Admin/Pages/TestTab.php:687
|
881 |
msgid "Verify with your SMTP host that your account has permissions to send emails using outside connections."
|
882 |
msgstr ""
|
883 |
|
|
|
884 |
#: src/Admin/Pages/TestTab.php:592
|
885 |
msgid "Error due to unsolicited and/or bulk e-mail."
|
886 |
msgstr ""
|
887 |
|
|
|
888 |
#: src/Admin/Pages/TestTab.php:593
|
889 |
msgid "This means the connection to your SMTP host was made successfully, but the host rejected the email."
|
890 |
msgstr ""
|
891 |
|
|
|
892 |
#: src/Admin/Pages/TestTab.php:594
|
893 |
msgid "Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam."
|
894 |
msgstr ""
|
895 |
|
|
|
896 |
#: src/Admin/Pages/TestTab.php:597
|
897 |
msgid "Check the emails that are sending are sending individually. Example: email is not sending to 30 recipients. You can install any WordPress e-mail logging plugin to do that."
|
898 |
msgstr ""
|
899 |
|
|
|
900 |
#: src/Admin/Pages/TestTab.php:598
|
901 |
msgid "Contact your SMTP host to ask about sending/rate limits."
|
902 |
msgstr ""
|
903 |
|
|
|
904 |
#: src/Admin/Pages/TestTab.php:599
|
905 |
msgid "Verify with them your SMTP account is in good standing and your account has not been flagged."
|
906 |
msgstr ""
|
907 |
|
|
|
908 |
#: src/Admin/Pages/TestTab.php:609
|
909 |
msgid "Unauthenticated senders are not allowed."
|
910 |
msgstr ""
|
911 |
|
|
|
912 |
#: src/Admin/Pages/TestTab.php:610
|
913 |
msgid "This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password."
|
914 |
msgstr ""
|
915 |
|
|
|
916 |
#: src/Admin/Pages/TestTab.php:613
|
917 |
msgid "Go to WP Mail SMTP plugin Settings page."
|
918 |
msgstr ""
|
919 |
|
|
|
920 |
#: src/Admin/Pages/TestTab.php:614
|
921 |
msgid "Enable Authentication"
|
922 |
msgstr ""
|
923 |
|
|
|
924 |
#: src/Admin/Pages/TestTab.php:615
|
925 |
msgid "Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields."
|
926 |
msgstr ""
|
927 |
|
|
|
928 |
#: src/Admin/Pages/TestTab.php:627
|
929 |
msgid "Misconfigured server certificate."
|
930 |
msgstr ""
|
931 |
|
|
|
932 |
#: src/Admin/Pages/TestTab.php:628
|
933 |
msgid "This means OpenSSL on your server isn't able to verify the host certificate."
|
934 |
msgstr ""
|
935 |
|
|
|
936 |
#: src/Admin/Pages/TestTab.php:629
|
937 |
msgid "There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server's OpenSSL is using an outdated CA bundle."
|
938 |
msgstr ""
|
939 |
|
|
|
940 |
#: src/Admin/Pages/TestTab.php:632
|
941 |
msgid "Verify that the host's SSL certificate is valid."
|
942 |
msgstr ""
|
943 |
|
944 |
#. translators: %s - URL to the PHP openssl manual
|
|
|
945 |
#: src/Admin/Pages/TestTab.php:635
|
946 |
msgid "Contact your hosting support, show them the \"full Error Log for debugging\" below and share this <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">link</a> with them."
|
947 |
msgstr ""
|
948 |
|
|
|
949 |
#: src/Admin/Pages/TestTab.php:655
|
950 |
msgid "Could not connect to the SMTP host."
|
951 |
msgstr ""
|
952 |
|
|
|
|
|
953 |
#: src/Admin/Pages/TestTab.php:662
|
954 |
#: src/Admin/Pages/TestTab.php:1048
|
955 |
msgid "Typically this error is returned for one of the following reasons:"
|
956 |
msgstr ""
|
957 |
|
|
|
958 |
#: src/Admin/Pages/TestTab.php:663
|
959 |
msgid "SMTP settings are incorrect (wrong port, security setting, incorrect host)."
|
960 |
msgstr ""
|
961 |
|
|
|
|
|
962 |
#: src/Admin/Pages/TestTab.php:664
|
963 |
#: src/Admin/Pages/TestTab.php:1050
|
964 |
msgid "Your web server is blocking the connection."
|
965 |
msgstr ""
|
966 |
|
|
|
967 |
#: src/Admin/Pages/TestTab.php:665
|
968 |
msgid "Your SMTP host is rejecting the connection."
|
969 |
msgstr ""
|
970 |
|
|
|
971 |
#: src/Admin/Pages/TestTab.php:668
|
972 |
msgid "Triple check your SMTP settings including host address, email, and password, port, and security."
|
973 |
msgstr ""
|
974 |
|
975 |
#. translators: %1$s - SMTP host address, %2$s - SMTP port, %3$s - SMTP encryption.
|
|
|
976 |
#: src/Admin/Pages/TestTab.php:671
|
977 |
msgid "Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.<br><strong>Note: this is the most common cause of this issue.</strong>"
|
978 |
msgstr ""
|
979 |
|
|
|
980 |
#: src/Admin/Pages/TestTab.php:684
|
981 |
msgid "no"
|
982 |
msgstr ""
|
983 |
|
|
|
|
|
|
|
984 |
#: src/Admin/Pages/TestTab.php:697
|
985 |
#: src/Admin/Pages/TestTab.php:712
|
986 |
#: src/Admin/Pages/TestTab.php:728
|
987 |
msgid "Mailgun failed."
|
988 |
msgstr ""
|
989 |
|
|
|
990 |
#: src/Admin/Pages/TestTab.php:698
|
991 |
msgid "It seems that you forgot to activate your Mailgun account."
|
992 |
msgstr ""
|
993 |
|
|
|
994 |
#: src/Admin/Pages/TestTab.php:701
|
995 |
msgid "Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun."
|
996 |
msgstr ""
|
997 |
|
|
|
998 |
#: src/Admin/Pages/TestTab.php:702
|
999 |
msgid "If you do not see activation email, go to your Mailgun control panel and resend the activation email."
|
1000 |
msgstr ""
|
1001 |
|
|
|
1002 |
#: src/Admin/Pages/TestTab.php:713
|
1003 |
msgid "Typically this error is because there is an issue with your Mailgun settings, in many cases the API key."
|
1004 |
msgstr ""
|
1005 |
|
|
|
1006 |
#: src/Admin/Pages/TestTab.php:716
|
1007 |
msgid "Verify your API key is correct."
|
1008 |
msgstr ""
|
1009 |
|
|
|
1010 |
#: src/Admin/Pages/TestTab.php:717
|
1011 |
msgid "Go to your Mailgun account and view your API key."
|
1012 |
msgstr ""
|
1013 |
|
|
|
1014 |
#: src/Admin/Pages/TestTab.php:718
|
1015 |
msgid "Note that the API key includes the \"key\" prefix, so make sure that it is in the WP Mail SMTP Mailgun API setting."
|
1016 |
msgstr ""
|
1017 |
|
|
|
1018 |
#: src/Admin/Pages/TestTab.php:729
|
1019 |
msgid "Your Mailgun account does not have access to send emails."
|
1020 |
msgstr ""
|
1021 |
|
|
|
1022 |
#: src/Admin/Pages/TestTab.php:730
|
1023 |
msgid "Typically this error is because you have not set up and/or complete domain name verification for your Mailgun account."
|
1024 |
msgstr ""
|
1025 |
|
1026 |
#. translators: %s - Mailgun documentation URL.
|
|
|
1027 |
#: src/Admin/Pages/TestTab.php:735
|
1028 |
msgid "Go to our how-to guide for setting up <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Mailgun with WP Mail SMTP</a>."
|
1029 |
msgstr ""
|
1030 |
|
|
|
1031 |
#: src/Admin/Pages/TestTab.php:746
|
1032 |
msgid "Complete the steps in section \"2. Verify Your Domain\"."
|
1033 |
msgstr ""
|
1034 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1035 |
#: src/Admin/Pages/TestTab.php:756
|
1036 |
#: src/Admin/Pages/TestTab.php:805
|
1037 |
#: src/Admin/Pages/TestTab.php:825
|
1042 |
msgid "Google API Error."
|
1043 |
msgstr ""
|
1044 |
|
|
|
1045 |
#: src/Admin/Pages/TestTab.php:757
|
1046 |
msgid "You have not properly configured Gmail mailer."
|
1047 |
msgstr ""
|
1048 |
|
|
|
1049 |
#: src/Admin/Pages/TestTab.php:758
|
1050 |
msgid "Make sure that you have clicked the \"Allow plugin to send emails using your Google account\" button under Gmail settings."
|
1051 |
msgstr ""
|
1052 |
|
|
|
1053 |
#: src/Admin/Pages/TestTab.php:761
|
1054 |
msgid "Go to plugin Settings page and click the \"Allow plugin to send emails using your Google account\" button."
|
1055 |
msgstr ""
|
1056 |
|
|
|
1057 |
#: src/Admin/Pages/TestTab.php:762
|
1058 |
msgid "After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf."
|
1059 |
msgstr ""
|
1060 |
|
|
|
1061 |
#: src/Admin/Pages/TestTab.php:763
|
1062 |
msgid "Please click \"Agree\", if you see that button. If not - you will need to enable less secure apps first:"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
#. translators: %s - Google support article URL.
|
|
|
1066 |
#: src/Admin/Pages/TestTab.php:768
|
1067 |
msgid "if you are using regular Gmail account, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to proceed."
|
1068 |
msgstr ""
|
1069 |
|
1070 |
#. translators: %s - Google support article URL.
|
|
|
1071 |
#: src/Admin/Pages/TestTab.php:783
|
1072 |
msgid "if you are using G Suite, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to proceed."
|
1073 |
msgstr ""
|
1074 |
|
|
|
1075 |
#: src/Admin/Pages/TestTab.php:806
|
1076 |
msgid "Typically this error is because address the email was sent to is invalid or was empty."
|
1077 |
msgstr ""
|
1078 |
|
|
|
1079 |
#: src/Admin/Pages/TestTab.php:809
|
1080 |
msgid "Check the \"Send To\" email address used and confirm it is a valid email and was not empty."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
#. translators: 1 - correct email address example. 2 - incorrect email address example.
|
|
|
1084 |
#: src/Admin/Pages/TestTab.php:811
|
1085 |
msgid "It should be something like this: %1$s. These are incorrect values: %2$s."
|
1086 |
msgstr ""
|
1087 |
|
|
|
1088 |
#: src/Admin/Pages/TestTab.php:815
|
1089 |
msgid "Make sure that the generated email has a TO header, useful when you are responsible for email creation."
|
1090 |
msgstr ""
|
1091 |
|
|
|
1092 |
#: src/Admin/Pages/TestTab.php:826
|
1093 |
msgid "Unfortunately, this error can be due to many different reasons."
|
1094 |
msgstr ""
|
1095 |
|
1096 |
#. translators: %s - Blog article URL.
|
|
|
1097 |
#: src/Admin/Pages/TestTab.php:831
|
1098 |
msgid "Please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">read this article</a> to learn more about what can cause this error and how it can be resolved."
|
1099 |
msgstr ""
|
1100 |
|
|
|
1101 |
#: src/Admin/Pages/TestTab.php:852
|
1102 |
msgid "Authentication code that Google returned to you has already been used on your previous auth attempt."
|
1103 |
msgstr ""
|
1104 |
|
|
|
1105 |
#: src/Admin/Pages/TestTab.php:855
|
1106 |
msgid "Make sure that you are not trying to manually clean up the plugin options to retry the \"Allow...\" step."
|
1107 |
msgstr ""
|
1108 |
|
|
|
1109 |
#: src/Admin/Pages/TestTab.php:856
|
1110 |
msgid "Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry."
|
1111 |
msgstr ""
|
1112 |
|
|
|
1113 |
#: src/Admin/Pages/TestTab.php:857
|
1114 |
msgid "Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts."
|
1115 |
msgstr ""
|
1116 |
|
|
|
1117 |
#: src/Admin/Pages/TestTab.php:868
|
1118 |
msgid "There are various reasons for that, please review the steps below."
|
1119 |
msgstr ""
|
1120 |
|
1121 |
#. translators: %s - Google G Suite Admin area URL.
|
|
|
1122 |
#: src/Admin/Pages/TestTab.php:873
|
1123 |
msgid "Make sure that your G Suite trial period has not expired. You can check the status <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."
|
1124 |
msgstr ""
|
1125 |
|
1126 |
#. translators: %s - Google G Suite Admin area URL.
|
|
|
1127 |
#: src/Admin/Pages/TestTab.php:886
|
1128 |
msgid "Make sure that Gmail app in your G Suite is actually enabled. You can check that in Apps list in <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">G Suite Admin</a> area."
|
1129 |
msgstr ""
|
1130 |
|
1131 |
#. translators: %s - Google Developers Console URL.
|
|
|
1132 |
#: src/Admin/Pages/TestTab.php:899
|
1133 |
msgid "Make sure that you have Gmail API enabled, and you can do that <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">here</a>."
|
1134 |
msgstr ""
|
1135 |
|
|
|
|
|
1136 |
#: src/Admin/Pages/TestTab.php:922
|
1137 |
#: src/Admin/Pages/TestTab.php:949
|
1138 |
msgid "Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
#. translators: %s - Gmail documentation URL.
|
|
|
1142 |
#: src/Admin/Pages/TestTab.php:925
|
1143 |
msgid "Please follow our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail tutorial</a> to be sure that all the correct project and data is applied."
|
1144 |
msgstr ""
|
1145 |
|
|
|
1146 |
#: src/Admin/Pages/TestTab.php:946
|
1147 |
msgid "You may have added a new API to a project"
|
1148 |
msgstr ""
|
1149 |
|
|
|
1150 |
#: src/Admin/Pages/TestTab.php:950
|
1151 |
msgid "Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch."
|
1152 |
msgstr ""
|
1153 |
|
|
|
1154 |
#: src/Admin/Pages/TestTab.php:960
|
1155 |
msgid "SMTP.com API Error."
|
1156 |
msgstr ""
|
1157 |
|
|
|
1158 |
#: src/Admin/Pages/TestTab.php:961
|
1159 |
msgid "Your Sender Name option is incorrect."
|
1160 |
msgstr ""
|
1161 |
|
|
|
1162 |
#: src/Admin/Pages/TestTab.php:964
|
1163 |
msgid "Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings."
|
1164 |
msgstr ""
|
1165 |
|
|
|
1166 |
#: src/Admin/Pages/TestTab.php:974
|
1167 |
msgid "GuzzleHttp requirements."
|
1168 |
msgstr ""
|
1169 |
|
|
|
1170 |
#: src/Admin/Pages/TestTab.php:975
|
1171 |
msgid "GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler."
|
1172 |
msgstr ""
|
1173 |
|
|
|
1174 |
#: src/Admin/Pages/TestTab.php:978
|
1175 |
msgid "Edit your php.ini file on your hosting server."
|
1176 |
msgstr ""
|
1177 |
|
|
|
1178 |
#: src/Admin/Pages/TestTab.php:979
|
1179 |
msgid "(Recommended) Enable PHP extension: cURL, by adding \"extension=curl\" to the php.ini file (without the quotation marks) OR"
|
1180 |
msgstr ""
|
1181 |
|
|
|
1182 |
#: src/Admin/Pages/TestTab.php:980
|
1183 |
msgid "(If cURL can't be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding \"allow_url_fopen = On\" to the php.ini file (without the quotation marks)"
|
1184 |
msgstr ""
|
1185 |
|
|
|
1186 |
#: src/Admin/Pages/TestTab.php:981
|
1187 |
msgid "If you don't know how to do the above we strongly suggest contacting your hosting support and provide them the \"full Error Log for debugging\" below and these steps. They should be able to fix this issue for you."
|
1188 |
msgstr ""
|
1189 |
|
|
|
1190 |
#: src/Admin/Pages/TestTab.php:1003
|
1191 |
msgid "PCRE library issue"
|
1192 |
msgstr ""
|
1193 |
|
|
|
1194 |
#: src/Admin/Pages/TestTab.php:1004
|
1195 |
msgid "It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation."
|
1196 |
msgstr ""
|
1197 |
|
|
|
1198 |
#: src/Admin/Pages/TestTab.php:1005
|
1199 |
msgid "There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33."
|
1200 |
msgstr ""
|
1201 |
|
|
|
1202 |
#: src/Admin/Pages/TestTab.php:1008
|
1203 |
msgid "Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4."
|
1204 |
msgstr ""
|
1205 |
|
|
|
1206 |
#: src/Admin/Pages/TestTab.php:1009
|
1207 |
msgid "They should be able to resolve this issue for you."
|
1208 |
msgstr ""
|
1209 |
|
|
|
1210 |
#: src/Admin/Pages/TestTab.php:1010
|
1211 |
msgid "For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server."
|
1212 |
msgstr ""
|
1213 |
|
|
|
1214 |
#: src/Admin/Pages/TestTab.php:1046
|
1215 |
msgid "An issue was detected."
|
1216 |
msgstr ""
|
1217 |
|
|
|
1218 |
#: src/Admin/Pages/TestTab.php:1047
|
1219 |
msgid "This means your test email was unable to be sent."
|
1220 |
msgstr ""
|
1221 |
|
|
|
1222 |
#: src/Admin/Pages/TestTab.php:1049
|
1223 |
msgid "Plugin settings are incorrect (wrong SMTP settings, invalid Mailer configuration, etc)."
|
1224 |
msgstr ""
|
1225 |
|
|
|
1226 |
#: src/Admin/Pages/TestTab.php:1051
|
1227 |
msgid "Your host is rejecting the connection."
|
1228 |
msgstr ""
|
1229 |
|
|
|
1230 |
#: src/Admin/Pages/TestTab.php:1054
|
1231 |
msgid "Triple check the plugin settings, consider reconfiguring to make sure everything is correct (eg bad copy and paste)."
|
1232 |
msgstr ""
|
1233 |
|
|
|
1234 |
#: src/Admin/Pages/TestTab.php:1056
|
1235 |
msgid "Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.<br><strong>Note: this is the most common cause of this issue.</strong>"
|
1236 |
msgstr ""
|
1237 |
|
|
|
1238 |
#: src/Admin/Pages/TestTab.php:1062
|
1239 |
msgid "Try using a different mailer."
|
1240 |
msgstr ""
|
1241 |
|
|
|
1242 |
#: src/Admin/Pages/TestTab.php:1081
|
1243 |
msgid "There was a problem while sending the test email."
|
1244 |
msgstr ""
|
1245 |
|
|
|
1246 |
#: src/Admin/Pages/TestTab.php:1091
|
1247 |
msgid "Recommended next steps:"
|
1248 |
msgstr ""
|
1249 |
|
|
|
1250 |
#: src/Admin/Pages/TestTab.php:1101
|
1251 |
msgid "Need support?"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
#. translators: %s - WPMailSMTP.com account area link.
|
|
|
1255 |
#: src/Admin/Pages/TestTab.php:1109
|
1256 |
msgid "As a WP Mail SMTP Pro user you have access to WP Mail SMTP priority support. Please log in to your WPMailSMTP.com account and <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">submit a support ticket</a>."
|
1257 |
msgstr ""
|
1258 |
|
|
|
1259 |
#: src/Admin/Pages/TestTab.php:1126
|
1260 |
msgid "WP Mail SMTP is a free plugin, and the team behind WPForms maintains it to give back to the WordPress community."
|
1261 |
msgstr ""
|
1262 |
|
1263 |
#. translators: %s - WPMailSMTP.com URL.
|
|
|
1264 |
#: src/Admin/Pages/TestTab.php:1133
|
1265 |
msgid "To access our world class support, please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">upgrade to WP Mail SMTP Pro</a>. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com."
|
1266 |
msgstr ""
|
1267 |
|
|
|
1268 |
#: src/Admin/Pages/TestTab.php:1148
|
1269 |
msgid "Additionally, you can take advantage of our White Glove Setup. Sit back and relax while we handle everything for you! If you simply don't have time or maybe you feel a bit in over your head - we got you covered."
|
1270 |
msgstr ""
|
1271 |
|
|
|
1272 |
#: src/Admin/Pages/TestTab.php:1154
|
1273 |
msgid "As a valued WP Mail SMTP user, you will get <span class=\"price-off\">$50 off regular pricing</span>, automatically applied at checkout!"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
#. translators: %1$s - WP Mail SMTP support policy URL, %2$s - WP Mail SMTP support forum URL, %3$s - WPMailSMTP.com URL.
|
|
|
1277 |
#: src/Admin/Pages/TestTab.php:1168
|
1278 |
msgid "Alternatively, we also offer <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">limited support</a> on the WordPress.org support forums. You can <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">create a support thread</a> there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">upgrading to WP Mail SMTP Pro</a> to access our priority support ticket system."
|
1279 |
msgstr ""
|
1280 |
|
|
|
1281 |
#: src/Admin/Pages/TestTab.php:1189
|
1282 |
msgid "Click here to view the full Error Log for debugging"
|
1283 |
msgstr ""
|
1284 |
|
|
|
1285 |
#: src/Admin/Pages/TestTab.php:1198
|
1286 |
msgid "Please copy only the content of the error debug message above, identified with an orange left border, into the support forum topic if you experience any issues."
|
1287 |
msgstr ""
|
1288 |
|
|
|
1289 |
#: src/Admin/Review.php:119
|
1290 |
msgid "Are you enjoying WP Mail SMTP?"
|
1291 |
msgstr ""
|
1292 |
|
|
|
1293 |
#: src/Admin/Review.php:121
|
1294 |
msgid "Yes"
|
1295 |
msgstr ""
|
1296 |
|
|
|
1297 |
#: src/Admin/Review.php:122
|
1298 |
msgid "Not Really"
|
1299 |
msgstr ""
|
1300 |
|
|
|
1301 |
#: src/Admin/Review.php:126
|
1302 |
msgid "We're sorry to hear you aren't enjoying WP Mail SMTP. We would love a chance to improve. Could you take a minute and let us know what we can do better?"
|
1303 |
msgstr ""
|
1304 |
|
|
|
1305 |
#: src/Admin/Review.php:129
|
1306 |
msgid "Give Feedback"
|
1307 |
msgstr ""
|
1308 |
|
|
|
1309 |
#: src/Admin/Review.php:132
|
1310 |
msgid "No thanks"
|
1311 |
msgstr ""
|
1312 |
|
|
|
1313 |
#: src/Admin/Review.php:137
|
1314 |
msgid "That’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
|
1315 |
msgstr ""
|
1316 |
|
|
|
1317 |
#: src/Admin/Review.php:138
|
1318 |
msgid "~ Jared Atchison<br>Lead Developer, WP Mail SMTP"
|
1319 |
msgstr ""
|
1320 |
|
|
|
1321 |
#: src/Admin/Review.php:141
|
1322 |
msgid "Ok, you deserve it"
|
1323 |
msgstr ""
|
1324 |
|
|
|
1325 |
#: src/Admin/Review.php:143
|
1326 |
msgid "Nope, maybe later"
|
1327 |
msgstr ""
|
1328 |
|
|
|
1329 |
#: src/Admin/Review.php:144
|
1330 |
msgid "I already did"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
#. translators: %1$s - Plugin name causing conflict; %2$s - Plugin name causing conflict.
|
|
|
1334 |
#: src/Conflicts.php:159
|
1335 |
msgid "Heads up! WP Mail SMTP has detected %1$s is activated. Please deactivate %2$s to prevent conflicts."
|
1336 |
msgstr ""
|
1337 |
|
1338 |
#. translators: %1$s - WP Mail SMTP plugin name; %2$s - WPMailSMTP.com URL to a related doc.
|
1339 |
+
#: src/Core.php:381
|
|
|
1340 |
msgid "Your site is running an outdated version of PHP that is no longer supported and may cause issues with %1$s. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Read more</a> for additional information."
|
1341 |
msgstr ""
|
1342 |
|
1343 |
+
#: src/Core.php:395
|
|
|
1344 |
msgid "<strong>Please Note:</strong> Support for PHP 5.5 will be discontinued in 2020. After this, if no further action is taken, WP Mail SMTP functionality will be disabled."
|
1345 |
msgstr ""
|
1346 |
|
1347 |
#. translators: %s - plugin name and its version.
|
1348 |
+
#: src/Core.php:429
|
|
|
1349 |
msgid "<strong>EMAILING DISABLED:</strong> The %s is currently blocking all emails from being sent."
|
1350 |
msgstr ""
|
1351 |
|
1352 |
#. translators: %1$s - constant name; %2$s - constant value.
|
1353 |
+
#: src/Core.php:440
|
|
|
1354 |
msgid "To send emails, change the value of the %1$s constant to %2$s."
|
1355 |
msgstr ""
|
1356 |
|
1357 |
#. translators: %s - plugin Misc settings page URL.
|
1358 |
+
#: src/Core.php:451
|
|
|
1359 |
msgid "To send emails, go to plugin <a href=\"%s\">Misc settings</a> and disable the \"Do Not Send\" option."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
#. translators: %s - plugin name and its version.
|
1363 |
+
#: src/Core.php:482
|
|
|
1364 |
msgid "<strong>EMAIL DELIVERY ERROR:</strong> the plugin %s logged this error during the last time it tried to send an email:"
|
1365 |
msgstr ""
|
1366 |
|
1367 |
+
#: src/Core.php:512
|
|
|
1368 |
msgid "Consider running an email test after fixing it."
|
1369 |
msgstr ""
|
1370 |
|
1371 |
#. translators: %1$s - WP Mail SMTP, %2$s - error message.
|
|
|
1372 |
#: src/Migration.php:137
|
1373 |
msgid "There was an error while upgrading the database. Please contact %1$s support with this information: %2$s."
|
1374 |
msgstr ""
|
1375 |
|
|
|
1376 |
#: src/Pro/Providers/Providers.php:158
|
1377 |
msgid "OK"
|
1378 |
msgstr ""
|
1379 |
|
|
|
1380 |
#: src/Pro/SiteHealth.php:58
|
1381 |
msgid "Is wpmailsmtp.com reachable?"
|
1382 |
msgstr ""
|
1383 |
|
|
|
1384 |
#: src/Providers/AmazonSES/Options.php:25
|
1385 |
msgid "Amazon SES"
|
1386 |
msgstr ""
|
1387 |
|
|
|
1388 |
#: src/Providers/AmazonSES/Options.php:39
|
1389 |
msgid "We're sorry, the Amazon SES mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: src/Providers/Gmail/Auth.php:182
|
|
|
1393 |
msgid "There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: src/Providers/Gmail/Mailer.php:255
|
|
|
1397 |
msgid "Please re-grant Google app permissions!"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: src/Providers/Gmail/Mailer.php:256
|
|
|
1401 |
msgid "Go to WP Mail SMTP plugin settings page. Click the “Remove Connection” button."
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: src/Providers/Gmail/Mailer.php:257
|
|
|
1405 |
msgid "Then click the “Allow plugin to send emails using your Google account” button and re-enable access."
|
1406 |
msgstr ""
|
1407 |
|
|
|
1408 |
#: src/Providers/Gmail/Options.php:32
|
1409 |
msgid "Gmail"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
#. translators: %s - URL to our Gmail doc.
|
|
|
1413 |
#: src/Providers/Gmail/Options.php:35
|
1414 |
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 <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail documentation</a> to learn how to configure Gmail or G Suite."
|
1415 |
msgstr ""
|
1416 |
|
|
|
1417 |
#: src/Providers/Gmail/Options.php:48
|
1418 |
msgid "The Gmail mailer works well for sites that send low numbers of emails. However, Gmail's API has rate limitations and a number of additional restrictions that can lead to challenges during setup. If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option."
|
1419 |
msgstr ""
|
1420 |
|
|
|
1421 |
#: src/Providers/Gmail/Options.php:72
|
1422 |
msgid "Client ID"
|
1423 |
msgstr ""
|
1424 |
|
|
|
1425 |
#: src/Providers/Gmail/Options.php:87
|
1426 |
msgid "Client Secret"
|
1427 |
msgstr ""
|
1428 |
|
|
|
1429 |
#: src/Providers/Gmail/Options.php:109
|
1430 |
msgid "Authorized redirect URI"
|
1431 |
msgstr ""
|
1432 |
|
|
|
1433 |
#: src/Providers/Gmail/Options.php:117
|
1434 |
msgid "Copy URL to clipboard"
|
1435 |
msgstr ""
|
1436 |
|
|
|
1437 |
#: src/Providers/Gmail/Options.php:122
|
1438 |
msgid "Please copy this URL into the \"Authorized redirect URIs\" field of your Google web application."
|
1439 |
msgstr ""
|
1440 |
|
|
|
1441 |
#: src/Providers/Gmail/Options.php:131
|
1442 |
msgid "Authorization"
|
1443 |
msgstr ""
|
1444 |
|
|
|
1445 |
#: src/Providers/Gmail/Options.php:159
|
1446 |
msgid "Allow plugin to send emails using your Google account"
|
1447 |
msgstr ""
|
1448 |
|
|
|
1449 |
#: src/Providers/Gmail/Options.php:162
|
1450 |
msgid "Click the button above to confirm authorization."
|
1451 |
msgstr ""
|
1452 |
|
|
|
1453 |
#: src/Providers/Gmail/Options.php:168
|
1454 |
msgid "Remove Connection"
|
1455 |
msgstr ""
|
1456 |
|
1457 |
#. translators: %s - email address, as received from Google API.
|
|
|
1458 |
#: src/Providers/Gmail/Options.php:177
|
1459 |
msgid "Connected as %s"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#. translators: %s - URL to Google Gmail alias documentation page.
|
1463 |
+
#: src/Providers/Gmail/Options.php:187
|
1464 |
+
msgid "If you want to use a different From Email address you can set-up a Google email alias. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Follow these instructions</a> and then select the From Email at the top of this page."
|
1465 |
+
msgstr ""
|
1466 |
+
|
1467 |
+
#: src/Providers/Gmail/Options.php:201
|
1468 |
msgid "Removing the connection will give you an ability to redo the connection or link to another Google account."
|
1469 |
msgstr ""
|
1470 |
|
1471 |
+
#: src/Providers/Gmail/Options.php:209
|
|
|
1472 |
msgid "You need to save settings with Client ID and Client Secret before you can proceed."
|
1473 |
msgstr ""
|
1474 |
|
|
|
1475 |
#: src/Providers/Mail/Options.php:25
|
1476 |
msgid "Default (none)"
|
1477 |
msgstr ""
|
1478 |
|
|
|
1479 |
#: src/Providers/Mail/Options.php:37
|
1480 |
msgid "You currently have the native WordPress option selected. Please select any other Mailer option above to continue the setup."
|
1481 |
msgstr ""
|
1482 |
|
1483 |
+
#: src/Providers/Mailgun/Mailer.php:392
|
1484 |
+
msgid "Mailgun API request was successful, but it could not queue the email for delivery."
|
1485 |
+
msgstr ""
|
1486 |
+
|
1487 |
+
#: src/Providers/Mailgun/Mailer.php:393
|
1488 |
+
msgid "This could point to an incorrect Domain Name in the plugin settings."
|
1489 |
+
msgstr ""
|
1490 |
+
|
1491 |
+
#: src/Providers/Mailgun/Mailer.php:394
|
1492 |
+
msgid "Please check the WP Mail SMTP plugin settings and make sure the Mailgun Domain Name setting is correct."
|
1493 |
+
msgstr ""
|
1494 |
+
|
1495 |
#: src/Providers/Mailgun/Options.php:25
|
1496 |
msgid "Mailgun"
|
1497 |
msgstr ""
|
1498 |
|
1499 |
#. translators: %1$s - opening link tag; %2$s - closing link tag; %3$s - opening link tag; %4$s - closing link tag.
|
|
|
1500 |
#: src/Providers/Mailgun/Options.php:29
|
1501 |
msgid "%1$sMailgun%2$s is one of the leading transactional email services trusted by over 150,000+ businesses. They provide 5,000 free emails per month for 3 months.<br><br>Read our %3$sMailgun documentation%4$s to learn how to configure Mailgun and improve your email deliverability."
|
1502 |
msgstr ""
|
1503 |
|
|
|
1504 |
#: src/Providers/Mailgun/Options.php:57
|
1505 |
msgid "Private API Key"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
#. translators: %s - API key link.
|
|
|
1509 |
#: src/Providers/Mailgun/Options.php:76
|
1510 |
msgid "Follow this link to get an API Key from Mailgun: %s."
|
1511 |
msgstr ""
|
1512 |
|
|
|
1513 |
#: src/Providers/Mailgun/Options.php:78
|
1514 |
msgid "Get a Private API Key"
|
1515 |
msgstr ""
|
1516 |
|
|
|
1517 |
#: src/Providers/Mailgun/Options.php:89
|
1518 |
msgid "Domain Name"
|
1519 |
msgstr ""
|
1520 |
|
1521 |
#. translators: %s - Domain Name link.
|
|
|
1522 |
#: src/Providers/Mailgun/Options.php:101
|
1523 |
msgid "Follow this link to get a Domain Name from Mailgun: %s."
|
1524 |
msgstr ""
|
1525 |
|
|
|
1526 |
#: src/Providers/Mailgun/Options.php:103
|
1527 |
msgid "Get a Domain Name"
|
1528 |
msgstr ""
|
1529 |
|
|
|
1530 |
#: src/Providers/Mailgun/Options.php:114
|
1531 |
msgid "Region"
|
1532 |
msgstr ""
|
1533 |
|
|
|
1534 |
#: src/Providers/Mailgun/Options.php:124
|
1535 |
msgid "US"
|
1536 |
msgstr ""
|
1537 |
|
|
|
1538 |
#: src/Providers/Mailgun/Options.php:133
|
1539 |
msgid "EU"
|
1540 |
msgstr ""
|
1541 |
|
|
|
1542 |
#: src/Providers/Mailgun/Options.php:137
|
1543 |
msgid "Define which endpoint you want to use for sending messages."
|
1544 |
msgstr ""
|
1545 |
|
|
|
1546 |
#: src/Providers/Mailgun/Options.php:138
|
1547 |
msgid "If you are operating under EU laws, you may be required to use EU region."
|
1548 |
msgstr ""
|
1549 |
|
1550 |
#. translators: %s - URL to Mailgun.com page.
|
|
|
1551 |
#: src/Providers/Mailgun/Options.php:143
|
1552 |
msgid "<a href=\"%s\" rel=\"\" target=\"_blank\">More information</a> on Mailgun.com."
|
1553 |
msgstr ""
|
1554 |
|
|
|
1555 |
#: src/Providers/OptionsAbstract.php:186
|
1556 |
msgid "SMTP Host"
|
1557 |
msgstr ""
|
1558 |
|
|
|
1559 |
#: src/Providers/OptionsAbstract.php:200
|
1560 |
msgid "Encryption"
|
1561 |
msgstr ""
|
1562 |
|
|
|
1563 |
#: src/Providers/OptionsAbstract.php:210
|
1564 |
msgid "None"
|
1565 |
msgstr ""
|
1566 |
|
|
|
1567 |
#: src/Providers/OptionsAbstract.php:219
|
1568 |
msgid "SSL"
|
1569 |
msgstr ""
|
1570 |
|
|
|
1571 |
#: src/Providers/OptionsAbstract.php:228
|
1572 |
msgid "TLS"
|
1573 |
msgstr ""
|
1574 |
|
|
|
1575 |
#: src/Providers/OptionsAbstract.php:232
|
1576 |
msgid "For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS."
|
1577 |
msgstr ""
|
1578 |
|
|
|
1579 |
#: src/Providers/OptionsAbstract.php:240
|
1580 |
msgid "SMTP Port"
|
1581 |
msgstr ""
|
1582 |
|
|
|
1583 |
#: src/Providers/OptionsAbstract.php:254
|
1584 |
msgid "Auto TLS"
|
1585 |
msgstr ""
|
1586 |
|
|
|
1587 |
#: src/Providers/OptionsAbstract.php:268
|
1588 |
msgid "By default TLS encryption is automatically used if the server supports it, which is recommended. In some cases, due to server misconfigurations, this can cause issues and may need to be disabled."
|
1589 |
msgstr ""
|
1590 |
|
|
|
1591 |
#: src/Providers/OptionsAbstract.php:276
|
1592 |
msgid "Authentication"
|
1593 |
msgstr ""
|
1594 |
|
|
|
1595 |
#: src/Providers/OptionsAbstract.php:295
|
1596 |
msgid "SMTP Username"
|
1597 |
msgstr ""
|
1598 |
|
|
|
1599 |
#: src/Providers/OptionsAbstract.php:309
|
1600 |
msgid "SMTP Password"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
#. translators: %s - constant name: WPMS_SMTP_PASS.
|
|
|
1604 |
#: src/Providers/OptionsAbstract.php:321
|
1605 |
msgid "To change the password you need to change the value of the constant there: %s"
|
1606 |
msgstr ""
|
1607 |
|
1608 |
#. translators: %1$s - wp-config.php file, %2$s - WPMS_ON constant name.
|
|
|
1609 |
#: src/Providers/OptionsAbstract.php:329
|
1610 |
msgid "If you want to disable the use of constants, find in %1$s file the constant %2$s and turn if off:"
|
1611 |
msgstr ""
|
1612 |
|
|
|
1613 |
#: src/Providers/OptionsAbstract.php:339
|
1614 |
msgid "All the defined constants will stop working and you will be able to change all the values on this page."
|
1615 |
msgstr ""
|
1616 |
|
|
|
1617 |
#: src/Providers/OptionsAbstract.php:347
|
1618 |
msgid "The password will be stored in plain text. For improved security, we highly recommend using your site's WordPress configuration file to set your password."
|
1619 |
msgstr ""
|
1620 |
|
|
|
1621 |
#: src/Providers/OptionsAbstract.php:350
|
1622 |
msgid "Learn More"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
#. translators: %1$s - Provider name; %2$s - PHP version required by Provider; %3$s - current PHP version.
|
|
|
1626 |
#: src/Providers/OptionsAbstract.php:410
|
1627 |
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."
|
1628 |
msgstr ""
|
1629 |
|
|
|
1630 |
#: src/Providers/OptionsAbstract.php:417
|
1631 |
msgid "Meanwhile you can switch to some other mailers."
|
1632 |
msgstr ""
|
1633 |
|
1634 |
#. translators: %s - Provider name
|
|
|
1635 |
#: src/Providers/OptionsAbstract.php:436
|
1636 |
msgid "%s requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out <a href=\"https://www.wpbeginner.com/wp-tutorials/how-to-add-ssl-and-https-in-wordpress/\" target=\"_blank\">WPBeginner's tutorial on how to set up SSL</a>."
|
1637 |
msgstr ""
|
1638 |
|
|
|
1639 |
#: src/Providers/OptionsAbstract.php:449
|
1640 |
msgid "If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please select a different mailer option."
|
1641 |
msgstr ""
|
1642 |
|
|
|
1643 |
#: src/Providers/Outlook/Options.php:25
|
1644 |
msgid "Outlook"
|
1645 |
msgstr ""
|
1646 |
|
|
|
1647 |
#: src/Providers/Outlook/Options.php:39
|
1648 |
msgid "We're sorry, the Microsoft Outlook mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features."
|
1649 |
msgstr ""
|
1650 |
|
|
|
1651 |
#: src/Providers/Pepipost/Options.php:25
|
1652 |
msgid "Pepipost SMTP"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: src/Providers/PepipostAPI/Mailer.php:339
|
1656 |
+
msgid "General error"
|
1657 |
+
msgstr ""
|
1658 |
+
|
1659 |
+
#: src/Providers/PepipostAPI/Mailer.php:340
|
1660 |
+
msgid "Error"
|
1661 |
+
msgstr ""
|
1662 |
+
|
1663 |
#. translators: %1$s - URL to pepipost.com site.
|
|
|
1664 |
#: src/Providers/PepipostAPI/Options.php:31
|
1665 |
msgid "<strong><a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost</a> is a recommended transactional email service.</strong> Every month Pepipost delivers over 8 billion emails from 20,000+ customers. Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever. Pepipost provides users 30,000 free emails the first 30 days."
|
1666 |
msgstr ""
|
1667 |
|
1668 |
#. translators: %1$s - URL to wpmailsmtp.com doc.
|
|
|
1669 |
#: src/Providers/PepipostAPI/Options.php:34
|
1670 |
msgid "Read our <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Pepipost documentation</a> to learn how to configure Pepipost and improve your email deliverability."
|
1671 |
msgstr ""
|
1672 |
|
|
|
1673 |
#: src/Providers/PepipostAPI/Options.php:53
|
1674 |
msgid "Get Started with Pepipost"
|
1675 |
msgstr ""
|
1676 |
|
|
|
1677 |
#: src/Providers/PepipostAPI/Options.php:61
|
1678 |
msgid "Pepipost"
|
1679 |
msgstr ""
|
1680 |
|
|
|
|
|
|
|
|
|
1681 |
#: src/Providers/PepipostAPI/Options.php:88
|
1682 |
#: src/Providers/Sendgrid/Options.php:57
|
1683 |
#: src/Providers/Sendinblue/Options.php:76
|
1686 |
msgstr ""
|
1687 |
|
1688 |
#. translators: %s - link to get an API Key.
|
|
|
|
|
1689 |
#: src/Providers/PepipostAPI/Options.php:107
|
1690 |
#: src/Providers/Sendinblue/Options.php:95
|
1691 |
msgid "Follow this link to get an API Key: %s."
|
1692 |
msgstr ""
|
1693 |
|
|
|
1694 |
#: src/Providers/PepipostAPI/Options.php:109
|
1695 |
msgid "Get the API Key"
|
1696 |
msgstr ""
|
1697 |
|
|
|
1698 |
#: src/Providers/Sendgrid/Options.php:25
|
1699 |
msgid "SendGrid"
|
1700 |
msgstr ""
|
1701 |
|
1702 |
#. translators: %1$s - opening link tag; %2$s - closing link tag; %3$s - opening link tag; %4$s - closing link tag.
|
|
|
1703 |
#: src/Providers/Sendgrid/Options.php:29
|
1704 |
msgid "%1$sSendGrid%2$s is one of the leading transactional email services, sending over 35 billion emails every month. They provide users 100 free emails per day.<br><br>Read our %3$sSendGrid documentation%4$s to learn how to set up SendGrid and improve your email deliverability."
|
1705 |
msgstr ""
|
1706 |
|
1707 |
#. translators: %s - API key link.
|
|
|
1708 |
#: src/Providers/Sendgrid/Options.php:76
|
1709 |
msgid "Follow this link to get an API Key from SendGrid: %s."
|
1710 |
msgstr ""
|
1711 |
|
|
|
1712 |
#: src/Providers/Sendgrid/Options.php:78
|
1713 |
msgid "Create API Key"
|
1714 |
msgstr ""
|
1715 |
|
1716 |
#. translators: %s - SendGrid access level.
|
|
|
1717 |
#: src/Providers/Sendgrid/Options.php:86
|
1718 |
msgid "To send emails you will need only a %s access level for this API key."
|
1719 |
msgstr ""
|
1720 |
|
|
|
1721 |
#: src/Providers/Sendinblue/Options.php:33
|
1722 |
msgid "Sendinblue"
|
1723 |
msgstr ""
|
1724 |
|
1725 |
#. translators: %1$s - URL to sendinblue.com site.
|
|
|
1726 |
#: src/Providers/Sendinblue/Options.php:37
|
1727 |
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue</a> serves 80,000+ growing companies around the world and sends over 30 million emails each day. They provide users 300 free emails per day."
|
1728 |
msgstr ""
|
1729 |
|
1730 |
#. translators: %2$s - URL to wpmailsmtp.com doc.
|
|
|
1731 |
#: src/Providers/Sendinblue/Options.php:40
|
1732 |
msgid "Read our <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Sendinblue documentation</a> to learn how to configure Sendinblue and improve your email deliverability."
|
1733 |
msgstr ""
|
1734 |
|
|
|
1735 |
#: src/Providers/Sendinblue/Options.php:97
|
1736 |
msgid "Get v3 API Key"
|
1737 |
msgstr ""
|
1738 |
|
|
|
1739 |
#: src/Providers/SMTP/Options.php:25
|
1740 |
msgid "Other SMTP"
|
1741 |
msgstr ""
|
1742 |
|
1743 |
#. translators: %s - URL to SMTP documentation.
|
|
|
1744 |
#: src/Providers/SMTP/Options.php:29
|
1745 |
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 <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP documentation</a>."
|
1746 |
msgstr ""
|
1747 |
|
1748 |
+
#: src/Providers/SMTPcom/Mailer.php:434
|
|
|
1749 |
msgid "Api Key:"
|
1750 |
msgstr ""
|
1751 |
|
1752 |
+
#: src/Providers/SMTPcom/Mailer.php:436
|
|
|
1753 |
msgid "Channel:"
|
1754 |
msgstr ""
|
1755 |
|
1756 |
#. translators: %s - URL to smtp.com site.
|
|
|
1757 |
#: src/Providers/SMTPcom/Options.php:41
|
1758 |
msgid "<strong><a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP.com</a> is a recommended transactional email service.</strong> With a 22 years of track record of reliable email delivery, SMTP.com is a premiere solution for WordPress developers and website owners. SMTP.com has been around for almost as long as email itself. Their super simple integration interface makes it easy to get started while a powerful API and robust documentation make it a preferred choice among developers. Start a 30-day free trial with 50,000 emails."
|
1759 |
msgstr ""
|
1760 |
|
1761 |
#. translators: %s - URL to wpmailsmtp.com doc page for stmp.com.
|
|
|
1762 |
#: src/Providers/SMTPcom/Options.php:49
|
1763 |
msgid "Read our <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">SMTP.com documentation</a> to learn how to configure SMTP.com and improve your email deliverability."
|
1764 |
msgstr ""
|
1765 |
|
|
|
1766 |
#: src/Providers/SMTPcom/Options.php:59
|
1767 |
msgid "Get Started with SMTP.com"
|
1768 |
msgstr ""
|
1769 |
|
|
|
1770 |
#: src/Providers/SMTPcom/Options.php:67
|
1771 |
msgid "SMTP.com"
|
1772 |
msgstr ""
|
1773 |
|
1774 |
#. translators: %s - API key link.
|
|
|
1775 |
#: src/Providers/SMTPcom/Options.php:101
|
1776 |
msgid "Follow this link to get an API Key from SMTP.com: %s."
|
1777 |
msgstr ""
|
1778 |
|
|
|
1779 |
#: src/Providers/SMTPcom/Options.php:103
|
1780 |
msgid "Get API Key"
|
1781 |
msgstr ""
|
1782 |
|
|
|
1783 |
#: src/Providers/SMTPcom/Options.php:114
|
1784 |
msgid "Sender Name"
|
1785 |
msgstr ""
|
1786 |
|
1787 |
#. translators: %s - Channel/Sender Name link for smtp.com documentation.
|
|
|
1788 |
#: src/Providers/SMTPcom/Options.php:130
|
1789 |
msgid "Follow this link to get a Sender Name from SMTP.com: %s."
|
1790 |
msgstr ""
|
1791 |
|
|
|
1792 |
#: src/Providers/SMTPcom/Options.php:132
|
1793 |
msgid "Get Sender Name"
|
1794 |
msgstr ""
|
1795 |
|
|
|
1796 |
#: src/SiteHealth.php:67
|
1797 |
msgid "Is WP Mail SMTP mailer setup complete?"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
+
#: src/SiteHealth.php:72
|
1801 |
+
msgid "Do WP Mail SMTP DB tables exist?"
|
1802 |
+
msgstr ""
|
1803 |
+
|
1804 |
+
#: src/SiteHealth.php:98
|
1805 |
msgid "Version"
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: src/SiteHealth.php:102
|
|
|
1809 |
msgid "License key type"
|
1810 |
msgstr ""
|
1811 |
|
1812 |
+
#: src/SiteHealth.php:106
|
|
|
1813 |
msgid "Debug"
|
1814 |
msgstr ""
|
1815 |
|
1816 |
+
#: src/SiteHealth.php:107
|
|
|
1817 |
msgid "No debug notices found."
|
1818 |
msgstr ""
|
1819 |
|
1820 |
+
#: src/SiteHealth.php:110
|
1821 |
+
msgid "DB tables"
|
1822 |
+
msgstr ""
|
1823 |
+
|
1824 |
+
#: src/SiteHealth.php:112
|
1825 |
+
msgid "No DB tables found."
|
1826 |
+
msgstr ""
|
1827 |
+
|
1828 |
+
#: src/SiteHealth.php:142
|
1829 |
msgid "Current mailer"
|
1830 |
msgstr ""
|
1831 |
|
1832 |
+
#: src/SiteHealth.php:147
|
|
|
1833 |
msgid "WP Mail SMTP mailer setup is complete"
|
1834 |
msgstr ""
|
1835 |
|
1836 |
+
#: src/SiteHealth.php:156
|
|
|
1837 |
msgid "The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it's working properly."
|
1838 |
msgstr ""
|
1839 |
|
1840 |
+
#: src/SiteHealth.php:161
|
|
|
1841 |
msgid "Test email sending"
|
1842 |
msgstr ""
|
1843 |
|
1844 |
+
#: src/SiteHealth.php:169
|
|
|
1845 |
msgid "You currently have the default mailer selected, which means that you haven’t set up SMTP yet."
|
1846 |
msgstr ""
|
1847 |
|
1848 |
+
#: src/SiteHealth.php:174
|
|
|
1849 |
msgid "WP Mail SMTP mailer setup is incomplete"
|
1850 |
msgstr ""
|
1851 |
|
1852 |
+
#: src/SiteHealth.php:180
|
|
|
1853 |
msgid "The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer."
|
1854 |
msgstr ""
|
1855 |
|
1856 |
+
#: src/SiteHealth.php:185
|
|
|
1857 |
msgid "Configure mailer"
|
1858 |
msgstr ""
|
1859 |
|
1860 |
+
#: src/SiteHealth.php:202
|
1861 |
+
msgid "WP Mail SMTP DB tables are created"
|
1862 |
+
msgstr ""
|
1863 |
+
|
1864 |
+
#: src/SiteHealth.php:208
|
1865 |
+
msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database."
|
1866 |
+
msgstr ""
|
1867 |
+
|
1868 |
+
#: src/SiteHealth.php:216
|
1869 |
+
msgid "WP Mail SMTP DB tables check has failed"
|
1870 |
+
msgstr ""
|
1871 |
+
|
1872 |
+
#. translators: %s - the list of missing tables separated by comma.
|
1873 |
+
#: src/SiteHealth.php:222
|
1874 |
+
msgid "Missing table: %s"
|
1875 |
+
msgid_plural "Missing tables: %s"
|
1876 |
+
msgstr[0] ""
|
1877 |
+
msgstr[1] ""
|
1878 |
+
|
1879 |
+
#: src/SiteHealth.php:225
|
1880 |
+
msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to re-install the WP Mail SMTP plugin. If this issue persists, please contact our support."
|
1881 |
+
msgstr ""
|
1882 |
+
|
1883 |
#. translators: %1$s - date, \a\t - specially escaped "at", %2$s - time.
|
|
|
1884 |
#: src/WP.php:190
|
1885 |
msgid "%1$s \\a\\t %2$s"
|
1886 |
msgstr ""
|
1887 |
|
|
|
1888 |
#: wp_mail_smtp.php:135
|
1889 |
msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro."
|
1890 |
msgstr ""
|
1891 |
|
1892 |
#. translators: %1$s - WPBeginner URL for recommended WordPress hosting.
|
|
|
1893 |
#: wp_mail_smtp.php:163
|
1894 |
msgid "Your site is running an <strong>insecure version</strong> of PHP that is no longer supported. Please contact your web hosting provider to update your PHP version or switch to a <a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">recommended WordPress hosting company</a>."
|
1895 |
msgstr ""
|
1896 |
|
1897 |
#. translators: %s - WPMailSMTP.com docs URL with more details.
|
|
|
1898 |
#: wp_mail_smtp.php:180
|
1899 |
msgid "<strong>WP Mail SMTP plugin is disabled</strong> on your site until you fix the issue. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Read more for additional information.</a>"
|
1900 |
msgstr ""
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ 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, pepipost, sendinblue, wp smtp
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
-
Stable tag: 2.
|
7 |
Requires PHP: 5.5.0
|
8 |
|
9 |
The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
|
@@ -229,6 +229,14 @@ By all means please contact us to discuss features or options you'd like to see
|
|
229 |
|
230 |
== Changelog ==
|
231 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
232 |
= 2.1.1 - 2020-06-08 =
|
233 |
* Changed: Remove current automatic default reply-to address and add WP filter `wp_mail_smtp_processor_set_default_reply_to` for setting default reply-to addresses.
|
234 |
* Changed: Improve description for several options with links to an article about how to properly use constants.
|
3 |
Tags: smtp, wp mail smtp, wordpress smtp, gmail smtp, sendgrid smtp, mailgun smtp, mail, mailer, phpmailer, wp_mail, email, mailgun, sengrid, gmail, pepipost, sendinblue, wp smtp
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
+
Stable tag: 2.2.1
|
7 |
Requires PHP: 5.5.0
|
8 |
|
9 |
The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
|
229 |
|
230 |
== Changelog ==
|
231 |
|
232 |
+
= 2.2.1 - 2020-07-09 =
|
233 |
+
* Added: Gmail mailer now supports aliases.
|
234 |
+
* Added: Support both old PHPMailer v5 (WordPress <=5.4) and PHPMailer v6 (WordPress >=5.5).
|
235 |
+
* Changed: Pepipost mailer is now using the native API v5 instead of the SendGrid migration API.
|
236 |
+
* Fixed: Incorrect Mailgun Domain Name option was not showing an email delivery error.
|
237 |
+
* Fixed: Empty debug errors for the Sendinblue mailer are no more.
|
238 |
+
* Fixed: Properly compare From Email option value with a correct default email address from WP core.
|
239 |
+
|
240 |
= 2.1.1 - 2020-06-08 =
|
241 |
* Changed: Remove current automatic default reply-to address and add WP filter `wp_mail_smtp_processor_set_default_reply_to` for setting default reply-to addresses.
|
242 |
* Changed: Improve description for several options with links to an article about how to properly use constants.
|
src/Admin/Area.php
CHANGED
@@ -271,7 +271,7 @@ class Area {
|
|
271 |
* @since 1.5.0 Added new assets for new pages.
|
272 |
* @since 1.7.0 Added jQuery Confirm library css/js files.
|
273 |
*
|
274 |
-
* @param string $hook
|
275 |
*/
|
276 |
public function enqueue_assets( $hook ) {
|
277 |
|
@@ -305,9 +305,7 @@ class Area {
|
|
305 |
'title' => esc_html__( 'Heads up!', 'wp-mail-smtp' ),
|
306 |
'content' => wp_kses(
|
307 |
__( '<p>The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.</p><p>Please consider selecting and configuring one of the other mailers.</p>', 'wp-mail-smtp' ),
|
308 |
-
|
309 |
-
'p' => true,
|
310 |
-
)
|
311 |
),
|
312 |
'save_button' => esc_html__( 'Save Settings', 'wp-mail-smtp' ),
|
313 |
'cancel_button' => esc_html__( 'Cancel', 'wp-mail-smtp' ),
|
@@ -322,11 +320,11 @@ class Area {
|
|
322 |
'upgrade_bonus' => '<p>' .
|
323 |
wp_kses(
|
324 |
__( '<strong>Bonus:</strong> WP Mail SMTP users get <span>$50 off</span> regular price,<br>applied at checkout.', 'wp-mail-smtp' ),
|
325 |
-
|
326 |
-
'strong' =>
|
327 |
-
'span' =>
|
328 |
-
'br' =>
|
329 |
-
|
330 |
)
|
331 |
. '</p>',
|
332 |
'upgrade_doc' => '<a href="https://wpmailsmtp.com/docs/how-to-upgrade-wp-mail-smtp-to-pro-version/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin" target="_blank" rel="noopener noreferrer" class="already-purchased">
|
@@ -893,7 +891,7 @@ class Area {
|
|
893 |
return add_query_arg(
|
894 |
'page',
|
895 |
$page,
|
896 |
-
admin_url( 'admin.php' )
|
897 |
);
|
898 |
}
|
899 |
|
271 |
* @since 1.5.0 Added new assets for new pages.
|
272 |
* @since 1.7.0 Added jQuery Confirm library css/js files.
|
273 |
*
|
274 |
+
* @param string $hook Current hook.
|
275 |
*/
|
276 |
public function enqueue_assets( $hook ) {
|
277 |
|
305 |
'title' => esc_html__( 'Heads up!', 'wp-mail-smtp' ),
|
306 |
'content' => wp_kses(
|
307 |
__( '<p>The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.</p><p>Please consider selecting and configuring one of the other mailers.</p>', 'wp-mail-smtp' ),
|
308 |
+
[ 'p' => [] ]
|
|
|
|
|
309 |
),
|
310 |
'save_button' => esc_html__( 'Save Settings', 'wp-mail-smtp' ),
|
311 |
'cancel_button' => esc_html__( 'Cancel', 'wp-mail-smtp' ),
|
320 |
'upgrade_bonus' => '<p>' .
|
321 |
wp_kses(
|
322 |
__( '<strong>Bonus:</strong> WP Mail SMTP users get <span>$50 off</span> regular price,<br>applied at checkout.', 'wp-mail-smtp' ),
|
323 |
+
[
|
324 |
+
'strong' => [],
|
325 |
+
'span' => [],
|
326 |
+
'br' => [],
|
327 |
+
]
|
328 |
)
|
329 |
. '</p>',
|
330 |
'upgrade_doc' => '<a href="https://wpmailsmtp.com/docs/how-to-upgrade-wp-mail-smtp-to-pro-version/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin" target="_blank" rel="noopener noreferrer" class="already-purchased">
|
891 |
return add_query_arg(
|
892 |
'page',
|
893 |
$page,
|
894 |
+
WP::admin_url( 'admin.php' )
|
895 |
);
|
896 |
}
|
897 |
|
src/Admin/PageAbstract.php
CHANGED
@@ -1,87 +1,89 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Admin;
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
*
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
*
|
35 |
-
*
|
36 |
-
* @
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
*
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
*
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
*
|
63 |
-
*
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
*
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Admin;
|
4 |
+
|
5 |
+
use WPMailSMTP\WP;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class PageAbstract.
|
9 |
+
*
|
10 |
+
* @since 1.0.0
|
11 |
+
*/
|
12 |
+
abstract class PageAbstract implements PageInterface {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @var string Slug of a tab.
|
16 |
+
*/
|
17 |
+
protected $slug;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @inheritdoc
|
21 |
+
*/
|
22 |
+
public function get_link() {
|
23 |
+
|
24 |
+
return esc_url(
|
25 |
+
add_query_arg(
|
26 |
+
'tab',
|
27 |
+
$this->slug,
|
28 |
+
WP::admin_url( 'admin.php?page=' . Area::SLUG )
|
29 |
+
)
|
30 |
+
);
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Process tab form submission ($_POST ).
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
*
|
38 |
+
* @param array $data $_POST data specific for the plugin.
|
39 |
+
*/
|
40 |
+
public function process_post( $data ) {
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Process tab & mailer specific Auth actions.
|
45 |
+
*
|
46 |
+
* @since 1.0.0
|
47 |
+
*/
|
48 |
+
public function process_auth() {
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Print the nonce field for a specific tab.
|
53 |
+
*
|
54 |
+
* @since 1.0.0
|
55 |
+
*/
|
56 |
+
public function wp_nonce_field() {
|
57 |
+
|
58 |
+
wp_nonce_field( Area::SLUG . '-' . $this->slug );
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Make sure that a user was referred from plugin admin page.
|
63 |
+
* To avoid security problems.
|
64 |
+
*
|
65 |
+
* @since 1.0.0
|
66 |
+
*/
|
67 |
+
public function check_admin_referer() {
|
68 |
+
|
69 |
+
check_admin_referer( Area::SLUG . '-' . $this->slug );
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Save button to be reused on other tabs.
|
74 |
+
*
|
75 |
+
* @since 1.5.0
|
76 |
+
*/
|
77 |
+
public function display_save_btn() {
|
78 |
+
|
79 |
+
?>
|
80 |
+
|
81 |
+
<p class="wp-mail-smtp-submit">
|
82 |
+
<button type="submit" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-orange">
|
83 |
+
<?php esc_html_e( 'Save Settings', 'wp-mail-smtp' ); ?>
|
84 |
+
</button>
|
85 |
+
</p>
|
86 |
+
|
87 |
+
<?php
|
88 |
+
}
|
89 |
+
}
|
src/Admin/Pages/About.php
CHANGED
@@ -6,6 +6,7 @@ use WPMailSMTP\Admin\Area;
|
|
6 |
use WPMailSMTP\Admin\PageAbstract;
|
7 |
use WPMailSMTP\Admin\PluginsInstallSkin;
|
8 |
use WPMailSMTP\Admin\PluginsInstallUpgrader;
|
|
|
9 |
|
10 |
/**
|
11 |
* Class About to display a page with About Us and Versus content.
|
@@ -42,7 +43,7 @@ class About extends PageAbstract {
|
|
42 |
return add_query_arg(
|
43 |
'tab',
|
44 |
$this->get_defined_tab( $tab ),
|
45 |
-
admin_url( 'admin.php?page=' . Area::SLUG . '-' . $this->slug )
|
46 |
);
|
47 |
}
|
48 |
|
@@ -214,6 +215,24 @@ class About extends PageAbstract {
|
|
214 |
|
215 |
</div>
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
<div class="wp-mail-smtp-admin-about-plugins">
|
218 |
<div class="plugins-container">
|
219 |
<?php
|
@@ -229,11 +248,16 @@ class About extends PageAbstract {
|
|
229 |
$data = array_merge( $data, $this->get_about_plugins_data( $plugin, true ) );
|
230 |
}
|
231 |
|
|
|
|
|
|
|
|
|
|
|
232 |
?>
|
233 |
<div class="plugin-container">
|
234 |
<div class="plugin-item">
|
235 |
<div class="details wp-mail-smtp-clear">
|
236 |
-
<img src="<?php echo \esc_url( $plugin['icon'] ); ?>">
|
237 |
<h5 class="plugin-name">
|
238 |
<?php echo $plugin['name']; ?>
|
239 |
</h5>
|
@@ -430,7 +454,7 @@ class About extends PageAbstract {
|
|
430 |
$error = \esc_html__( 'Could not install the plugin.', 'wp-mail-smtp' );
|
431 |
|
432 |
// Check for permissions.
|
433 |
-
if ( ! \current_user_can( '
|
434 |
\wp_send_json_error( $error );
|
435 |
}
|
436 |
|
6 |
use WPMailSMTP\Admin\PageAbstract;
|
7 |
use WPMailSMTP\Admin\PluginsInstallSkin;
|
8 |
use WPMailSMTP\Admin\PluginsInstallUpgrader;
|
9 |
+
use WPMailSMTP\WP;
|
10 |
|
11 |
/**
|
12 |
* Class About to display a page with About Us and Versus content.
|
43 |
return add_query_arg(
|
44 |
'tab',
|
45 |
$this->get_defined_tab( $tab ),
|
46 |
+
WP::admin_url( 'admin.php?page=' . Area::SLUG . '-' . $this->slug )
|
47 |
);
|
48 |
}
|
49 |
|
215 |
|
216 |
</div>
|
217 |
|
218 |
+
<?php
|
219 |
+
|
220 |
+
// Do not display the plugin section if the user can't install or activate them.
|
221 |
+
if ( ! current_user_can( 'install_plugins' ) && ! current_user_can( 'activate_plugins' ) ) {
|
222 |
+
return;
|
223 |
+
}
|
224 |
+
|
225 |
+
$this->display_plugins();
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Display the plugins section.
|
230 |
+
*
|
231 |
+
* @since 2.2.0
|
232 |
+
*/
|
233 |
+
protected function display_plugins() {
|
234 |
+
?>
|
235 |
+
|
236 |
<div class="wp-mail-smtp-admin-about-plugins">
|
237 |
<div class="plugins-container">
|
238 |
<?php
|
248 |
$data = array_merge( $data, $this->get_about_plugins_data( $plugin, true ) );
|
249 |
}
|
250 |
|
251 |
+
// Do not display a plugin which has to be installed and the user can't install it.
|
252 |
+
if ( ! current_user_can( 'install_plugins' ) && $data['status_class'] === 'status-download' ) {
|
253 |
+
continue;
|
254 |
+
}
|
255 |
+
|
256 |
?>
|
257 |
<div class="plugin-container">
|
258 |
<div class="plugin-item">
|
259 |
<div class="details wp-mail-smtp-clear">
|
260 |
+
<img src="<?php echo \esc_url( $plugin['icon'] ); ?>" alt="<?php esc_attr_e( 'Plugin icon', 'wp-mail-smtp' ); ?>">
|
261 |
<h5 class="plugin-name">
|
262 |
<?php echo $plugin['name']; ?>
|
263 |
</h5>
|
454 |
$error = \esc_html__( 'Could not install the plugin.', 'wp-mail-smtp' );
|
455 |
|
456 |
// Check for permissions.
|
457 |
+
if ( ! \current_user_can( 'install_plugins' ) ) {
|
458 |
\wp_send_json_error( $error );
|
459 |
}
|
460 |
|
src/Admin/Pages/Logs.php
CHANGED
@@ -4,11 +4,10 @@ namespace WPMailSMTP\Admin\Pages;
|
|
4 |
|
5 |
use WPMailSMTP\Admin\Area;
|
6 |
use WPMailSMTP\Admin\PageAbstract;
|
|
|
7 |
|
8 |
/**
|
9 |
* Class Logs
|
10 |
-
*
|
11 |
-
* @since 1.5.0
|
12 |
*/
|
13 |
class Logs extends PageAbstract {
|
14 |
|
@@ -34,7 +33,7 @@ class Logs extends PageAbstract {
|
|
34 |
return add_query_arg(
|
35 |
'tab',
|
36 |
$this->slug,
|
37 |
-
admin_url( 'admin.php?page=' . Area::SLUG )
|
38 |
);
|
39 |
}
|
40 |
|
4 |
|
5 |
use WPMailSMTP\Admin\Area;
|
6 |
use WPMailSMTP\Admin\PageAbstract;
|
7 |
+
use WPMailSMTP\WP;
|
8 |
|
9 |
/**
|
10 |
* Class Logs
|
|
|
|
|
11 |
*/
|
12 |
class Logs extends PageAbstract {
|
13 |
|
33 |
return add_query_arg(
|
34 |
'tab',
|
35 |
$this->slug,
|
36 |
+
WP::admin_url( 'admin.php?page=' . Area::SLUG )
|
37 |
);
|
38 |
}
|
39 |
|
src/Admin/Pages/MiscTab.php
CHANGED
@@ -198,7 +198,12 @@ class MiscTab extends PageAbstract {
|
|
198 |
}
|
199 |
|
200 |
/**
|
201 |
-
*
|
|
|
|
|
|
|
|
|
|
|
202 |
*/
|
203 |
public function process_post( $data ) {
|
204 |
|
@@ -207,14 +212,20 @@ class MiscTab extends PageAbstract {
|
|
207 |
$options = new Options();
|
208 |
|
209 |
// Unchecked checkboxes doesn't exist in $_POST, so we need to ensure we actually have them in data to save.
|
|
|
|
|
|
|
210 |
if ( empty( $data['general']['am_notifications_hidden'] ) ) {
|
211 |
$data['general']['am_notifications_hidden'] = false;
|
212 |
}
|
|
|
|
|
|
|
213 |
if ( empty( $data['general']['uninstall'] ) ) {
|
214 |
$data['general']['uninstall'] = false;
|
215 |
}
|
216 |
|
217 |
-
$to_save =
|
218 |
|
219 |
// All the sanitization is done there.
|
220 |
$options->set( $to_save );
|
198 |
}
|
199 |
|
200 |
/**
|
201 |
+
* Process tab form submission ($_POST).
|
202 |
+
*
|
203 |
+
* @since 1.0.0
|
204 |
+
* @since 2.2.0 Fixed checkbox saving and use the correct merge to prevent breaking other 'general' checkboxes.
|
205 |
+
*
|
206 |
+
* @param array $data Tab data specific for the plugin ($_POST).
|
207 |
*/
|
208 |
public function process_post( $data ) {
|
209 |
|
212 |
$options = new Options();
|
213 |
|
214 |
// Unchecked checkboxes doesn't exist in $_POST, so we need to ensure we actually have them in data to save.
|
215 |
+
if ( empty( $data['general']['do_not_send'] ) ) {
|
216 |
+
$data['general']['do_not_send'] = false;
|
217 |
+
}
|
218 |
if ( empty( $data['general']['am_notifications_hidden'] ) ) {
|
219 |
$data['general']['am_notifications_hidden'] = false;
|
220 |
}
|
221 |
+
if ( empty( $data['general']['email_delivery_errors_hidden'] ) ) {
|
222 |
+
$data['general']['email_delivery_errors_hidden'] = false;
|
223 |
+
}
|
224 |
if ( empty( $data['general']['uninstall'] ) ) {
|
225 |
$data['general']['uninstall'] = false;
|
226 |
}
|
227 |
|
228 |
+
$to_save = Options::array_merge_recursive( $options->get_all(), $data );
|
229 |
|
230 |
// All the sanitization is done there.
|
231 |
$options->set( $to_save );
|
src/Admin/Pages/SettingsTab.php
CHANGED
@@ -5,6 +5,7 @@ namespace WPMailSMTP\Admin\Pages;
|
|
5 |
use WPMailSMTP\Admin\PageAbstract;
|
6 |
use WPMailSMTP\Debug;
|
7 |
use WPMailSMTP\Options;
|
|
|
8 |
use WPMailSMTP\WP;
|
9 |
|
10 |
/**
|
@@ -58,6 +59,8 @@ class SettingsTab extends PageAbstract {
|
|
58 |
<form method="POST" action="" autocomplete="off">
|
59 |
<?php $this->wp_nonce_field(); ?>
|
60 |
|
|
|
|
|
61 |
<!-- License Section Title -->
|
62 |
<div class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-content wp-mail-smtp-clear section-heading" id="wp-mail-smtp-setting-row-license-heading">
|
63 |
<div class="wp-mail-smtp-setting-field">
|
@@ -92,16 +95,37 @@ class SettingsTab extends PageAbstract {
|
|
92 |
<label for="wp-mail-smtp-setting-from_email"><?php esc_html_e( 'From Email', 'wp-mail-smtp' ); ?></label>
|
93 |
</div>
|
94 |
<div class="wp-mail-smtp-setting-field">
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
|
101 |
<?php if ( empty( $disabled_email ) ) : ?>
|
102 |
<p class="desc">
|
103 |
<?php esc_html_e( 'The email address which emails are sent from.', 'wp-mail-smtp' ); ?><br/>
|
104 |
-
<?php esc_html_e( 'If you using an email provider (
|
105 |
</p>
|
106 |
<p class="desc">
|
107 |
<?php esc_html_e( 'Please note that other plugins can change this, to prevent this use the setting below.', 'wp-mail-smtp' ); ?>
|
@@ -110,10 +134,16 @@ class SettingsTab extends PageAbstract {
|
|
110 |
|
111 |
<hr class="wp-mail-smtp-setting-mid-row-sep">
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
|
118 |
<label for="wp-mail-smtp-setting-from_email_force">
|
119 |
<?php esc_html_e( 'Force From Email', 'wp-mail-smtp' ); ?>
|
@@ -121,7 +151,13 @@ class SettingsTab extends PageAbstract {
|
|
121 |
|
122 |
<?php if ( ! empty( $disabled_email ) ) : ?>
|
123 |
<p class="desc">
|
124 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
</p>
|
126 |
<?php else : ?>
|
127 |
<p class="desc">
|
@@ -292,6 +328,11 @@ class SettingsTab extends PageAbstract {
|
|
292 |
|
293 |
</div>
|
294 |
|
|
|
|
|
|
|
|
|
|
|
295 |
<?php $this->display_save_btn(); ?>
|
296 |
|
297 |
</form>
|
@@ -525,6 +566,8 @@ class SettingsTab extends PageAbstract {
|
|
525 |
}
|
526 |
}
|
527 |
|
|
|
|
|
528 |
// New gmail clients data will be added from new $data.
|
529 |
$to_save = Options::array_merge_recursive( $old_opt, $data );
|
530 |
|
5 |
use WPMailSMTP\Admin\PageAbstract;
|
6 |
use WPMailSMTP\Debug;
|
7 |
use WPMailSMTP\Options;
|
8 |
+
use WPMailSMTP\Providers\Gmail\Auth;
|
9 |
use WPMailSMTP\WP;
|
10 |
|
11 |
/**
|
59 |
<form method="POST" action="" autocomplete="off">
|
60 |
<?php $this->wp_nonce_field(); ?>
|
61 |
|
62 |
+
<?php ob_start(); ?>
|
63 |
+
|
64 |
<!-- License Section Title -->
|
65 |
<div class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-content wp-mail-smtp-clear section-heading" id="wp-mail-smtp-setting-row-license-heading">
|
66 |
<div class="wp-mail-smtp-setting-field">
|
95 |
<label for="wp-mail-smtp-setting-from_email"><?php esc_html_e( 'From Email', 'wp-mail-smtp' ); ?></label>
|
96 |
</div>
|
97 |
<div class="wp-mail-smtp-setting-field">
|
98 |
+
<?php if ( 'gmail' !== $mailer ) : ?>
|
99 |
+
<input name="wp-mail-smtp[mail][from_email]" type="email"
|
100 |
+
value="<?php echo esc_attr( $options->get( 'mail', 'from_email' ) ); ?>"
|
101 |
+
<?php echo $options->is_const_defined( 'mail', 'from_email' ) || ! empty( $disabled_email ) ? 'disabled' : ''; ?>
|
102 |
+
id="wp-mail-smtp-setting-from_email" spellcheck="false"
|
103 |
+
placeholder="<?php echo esc_attr( wp_mail_smtp()->get_processor()->get_default_email() ); ?>">
|
104 |
+
<?php else : ?>
|
105 |
+
<?php
|
106 |
+
// Gmail mailer From Email selector.
|
107 |
+
$gmail_auth = new Auth();
|
108 |
+
$gmail_aliases = $gmail_auth->is_clients_saved() ? $gmail_auth->get_user_possible_send_from_addresses() : [];
|
109 |
+
?>
|
110 |
+
|
111 |
+
<?php if ( empty( $gmail_aliases ) ) : ?>
|
112 |
+
<select name="wp-mail-smtp[mail][from_email]" id="wp-mail-smtp-setting-from_email" disabled>
|
113 |
+
<option value=""><?php esc_html_e( 'Please first authorize the Gmail mailer below', 'wp-mail-smtp' ); ?></option>
|
114 |
+
</select>
|
115 |
+
<?php else : ?>
|
116 |
+
<select name="wp-mail-smtp[mail][from_email]" id="wp-mail-smtp-setting-from_email">
|
117 |
+
<?php foreach ( $gmail_aliases as $gmail_email_address ) : ?>
|
118 |
+
<option value="<?php echo esc_attr( $gmail_email_address ); ?>" <?php selected( $options->get( 'mail', 'from_email' ), $gmail_email_address ); ?>><?php echo esc_html( $gmail_email_address ); ?></option>
|
119 |
+
<?php endforeach; ?>
|
120 |
+
</select>
|
121 |
+
<?php endif; ?>
|
122 |
+
|
123 |
+
<?php endif; ?>
|
124 |
|
125 |
<?php if ( empty( $disabled_email ) ) : ?>
|
126 |
<p class="desc">
|
127 |
<?php esc_html_e( 'The email address which emails are sent from.', 'wp-mail-smtp' ); ?><br/>
|
128 |
+
<?php esc_html_e( 'If you\'re using an email provider (Yahoo, Outlook.com, etc) this should be your email address for that account.', 'wp-mail-smtp' ); ?>
|
129 |
</p>
|
130 |
<p class="desc">
|
131 |
<?php esc_html_e( 'Please note that other plugins can change this, to prevent this use the setting below.', 'wp-mail-smtp' ); ?>
|
134 |
|
135 |
<hr class="wp-mail-smtp-setting-mid-row-sep">
|
136 |
|
137 |
+
<?php if ( 'gmail' !== $mailer ) : ?>
|
138 |
+
<input name="wp-mail-smtp[mail][from_email_force]" type="checkbox"
|
139 |
+
value="true" <?php checked( true, (bool) $options->get( 'mail', 'from_email_force' ) ); ?>
|
140 |
+
<?php echo $options->is_const_defined( 'mail', 'from_email_force' ) || ! empty( $disabled_email ) ? 'disabled' : ''; ?>
|
141 |
+
id="wp-mail-smtp-setting-from_email_force">
|
142 |
+
<?php else : ?>
|
143 |
+
<input name="wp-mail-smtp[mail][from_email_force]" type="checkbox"
|
144 |
+
value="true" checked="checked" disabled
|
145 |
+
id="wp-mail-smtp-setting-from_email_force">
|
146 |
+
<?php endif; ?>
|
147 |
|
148 |
<label for="wp-mail-smtp-setting-from_email_force">
|
149 |
<?php esc_html_e( 'Force From Email', 'wp-mail-smtp' ); ?>
|
151 |
|
152 |
<?php if ( ! empty( $disabled_email ) ) : ?>
|
153 |
<p class="desc">
|
154 |
+
<?php
|
155 |
+
if ( 'gmail' !== $mailer ) :
|
156 |
+
esc_html_e( 'Current provider will automatically force From Email to be the email address that you use to set up the connection below.', 'wp-mail-smtp' );
|
157 |
+
else :
|
158 |
+
esc_html_e( 'Gmail mailer will automatically force From Email to be the email address that you selected above.', 'wp-mail-smtp' );
|
159 |
+
endif;
|
160 |
+
?>
|
161 |
</p>
|
162 |
<?php else : ?>
|
163 |
<p class="desc">
|
328 |
|
329 |
</div>
|
330 |
|
331 |
+
<?php
|
332 |
+
$settings_content = apply_filters( 'wp_mail_smtp_admin_settings_tab_display', ob_get_clean() );
|
333 |
+
echo $settings_content; // phpcs:ignore
|
334 |
+
?>
|
335 |
+
|
336 |
<?php $this->display_save_btn(); ?>
|
337 |
|
338 |
</form>
|
566 |
}
|
567 |
}
|
568 |
|
569 |
+
$data = apply_filters( 'wp_mail_smtp_settings_tab_process_post', $data );
|
570 |
+
|
571 |
// New gmail clients data will be added from new $data.
|
572 |
$to_save = Options::array_merge_recursive( $old_opt, $data );
|
573 |
|
src/Admin/Pages/TestTab.php
CHANGED
@@ -4,7 +4,7 @@ namespace WPMailSMTP\Admin\Pages;
|
|
4 |
|
5 |
use WPMailSMTP\Conflicts;
|
6 |
use WPMailSMTP\Debug;
|
7 |
-
use WPMailSMTP\
|
8 |
use WPMailSMTP\Options;
|
9 |
use WPMailSMTP\WP;
|
10 |
use WPMailSMTP\Admin\PageAbstract;
|
@@ -393,8 +393,8 @@ Lead Developer, WP Mail SMTP';
|
|
393 |
*
|
394 |
* @since 1.0.0
|
395 |
*
|
396 |
-
* @param
|
397 |
-
* @param string
|
398 |
*
|
399 |
* @return string
|
400 |
*/
|
4 |
|
5 |
use WPMailSMTP\Conflicts;
|
6 |
use WPMailSMTP\Debug;
|
7 |
+
use WPMailSMTP\MailCatcherInterface;
|
8 |
use WPMailSMTP\Options;
|
9 |
use WPMailSMTP\WP;
|
10 |
use WPMailSMTP\Admin\PageAbstract;
|
393 |
*
|
394 |
* @since 1.0.0
|
395 |
*
|
396 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
397 |
+
* @param string $smtp_debug The SMTP debug message.
|
398 |
*
|
399 |
* @return string
|
400 |
*/
|
src/Core.php
CHANGED
@@ -59,6 +59,10 @@ class Core {
|
|
59 |
if ( $this->is_not_loadable() ) {
|
60 |
add_action( 'admin_notices', 'wp_mail_smtp_insecure_php_version_notice' );
|
61 |
|
|
|
|
|
|
|
|
|
62 |
return;
|
63 |
}
|
64 |
|
@@ -95,8 +99,13 @@ class Core {
|
|
95 |
*/
|
96 |
public function hooks() {
|
97 |
|
|
|
|
|
|
|
|
|
|
|
98 |
// Action Scheduler requires a special early loading procedure.
|
99 |
-
add_action( 'plugins_loaded', array( $this, 'load_action_scheduler' ), -10 );
|
100 |
|
101 |
// Activation hook.
|
102 |
register_activation_hook( WPMS_PLUGIN_FILE, array( $this, 'activate' ) );
|
@@ -148,6 +157,11 @@ class Core {
|
|
148 |
if ( current_user_can( 'manage_options' ) ) {
|
149 |
add_action( 'admin_notices', array( '\WPMailSMTP\WP', 'display_admin_notices' ) );
|
150 |
add_action( 'admin_notices', array( $this, 'display_general_notices' ) );
|
|
|
|
|
|
|
|
|
|
|
151 |
}
|
152 |
}
|
153 |
|
@@ -455,7 +469,6 @@ class Core {
|
|
455 |
}
|
456 |
|
457 |
if ( wp_mail_smtp()->get_admin()->is_error_delivery_notice_enabled() ) {
|
458 |
-
|
459 |
$notice = Debug::get_last();
|
460 |
|
461 |
if ( ! empty( $notice ) ) {
|
@@ -556,7 +569,7 @@ class Core {
|
|
556 |
*
|
557 |
* @since 1.0.0
|
558 |
*
|
559 |
-
* @return
|
560 |
*/
|
561 |
public function replace_phpmailer() {
|
562 |
|
@@ -573,11 +586,11 @@ class Core {
|
|
573 |
*
|
574 |
* @param null $obj PhpMailer object to override with own implementation.
|
575 |
*
|
576 |
-
* @return
|
577 |
*/
|
578 |
protected function replace_w_fake_phpmailer( &$obj = null ) {
|
579 |
|
580 |
-
$obj =
|
581 |
|
582 |
return $obj;
|
583 |
}
|
@@ -725,7 +738,7 @@ class Core {
|
|
725 |
/**
|
726 |
* Require the action scheduler in an early plugins_loaded hook (-10).
|
727 |
*
|
728 |
-
* @see
|
729 |
*
|
730 |
* @since 2.1.0
|
731 |
*/
|
@@ -733,4 +746,99 @@ class Core {
|
|
733 |
|
734 |
require_once $this->plugin_path . '/vendor/woocommerce/action-scheduler/action-scheduler.php';
|
735 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
736 |
}
|
59 |
if ( $this->is_not_loadable() ) {
|
60 |
add_action( 'admin_notices', 'wp_mail_smtp_insecure_php_version_notice' );
|
61 |
|
62 |
+
if ( WP::use_global_plugin_settings() ) {
|
63 |
+
add_action( 'network_admin_notices', 'wp_mail_smtp_insecure_php_version_notice' );
|
64 |
+
}
|
65 |
+
|
66 |
return;
|
67 |
}
|
68 |
|
99 |
*/
|
100 |
public function hooks() {
|
101 |
|
102 |
+
// Force from_email_force to always return true if current mailer is Gmail.
|
103 |
+
if ( ( new Options() )->get( 'mail', 'mailer' ) === 'gmail' ) {
|
104 |
+
add_filter( 'wp_mail_smtp_options_get', [ $this, 'gmail_mailer_get_from_email_force' ], 1, 3 );
|
105 |
+
}
|
106 |
+
|
107 |
// Action Scheduler requires a special early loading procedure.
|
108 |
+
add_action( 'plugins_loaded', array( $this, 'load_action_scheduler' ), - 10 );
|
109 |
|
110 |
// Activation hook.
|
111 |
register_activation_hook( WPMS_PLUGIN_FILE, array( $this, 'activate' ) );
|
157 |
if ( current_user_can( 'manage_options' ) ) {
|
158 |
add_action( 'admin_notices', array( '\WPMailSMTP\WP', 'display_admin_notices' ) );
|
159 |
add_action( 'admin_notices', array( $this, 'display_general_notices' ) );
|
160 |
+
|
161 |
+
if ( WP::use_global_plugin_settings() ) {
|
162 |
+
add_action( 'network_admin_notices', array( '\WPMailSMTP\WP', 'display_admin_notices' ) );
|
163 |
+
add_action( 'network_admin_notices', array( $this, 'display_general_notices' ) );
|
164 |
+
}
|
165 |
}
|
166 |
}
|
167 |
|
469 |
}
|
470 |
|
471 |
if ( wp_mail_smtp()->get_admin()->is_error_delivery_notice_enabled() ) {
|
|
|
472 |
$notice = Debug::get_last();
|
473 |
|
474 |
if ( ! empty( $notice ) ) {
|
569 |
*
|
570 |
* @since 1.0.0
|
571 |
*
|
572 |
+
* @return MailCatcherInterface
|
573 |
*/
|
574 |
public function replace_phpmailer() {
|
575 |
|
586 |
*
|
587 |
* @param null $obj PhpMailer object to override with own implementation.
|
588 |
*
|
589 |
+
* @return MailCatcherInterface
|
590 |
*/
|
591 |
protected function replace_w_fake_phpmailer( &$obj = null ) {
|
592 |
|
593 |
+
$obj = $this->generate_mail_catcher( true );
|
594 |
|
595 |
return $obj;
|
596 |
}
|
738 |
/**
|
739 |
* Require the action scheduler in an early plugins_loaded hook (-10).
|
740 |
*
|
741 |
+
* @see https://actionscheduler.org/usage/#load-order
|
742 |
*
|
743 |
* @since 2.1.0
|
744 |
*/
|
746 |
|
747 |
require_once $this->plugin_path . '/vendor/woocommerce/action-scheduler/action-scheduler.php';
|
748 |
}
|
749 |
+
|
750 |
+
/**
|
751 |
+
* Get the list of all custom DB tables that should be present in the DB.
|
752 |
+
*
|
753 |
+
* @since 2.1.2
|
754 |
+
*
|
755 |
+
* @return array List of table names.
|
756 |
+
*/
|
757 |
+
public function get_custom_db_tables() {
|
758 |
+
|
759 |
+
$tables = [
|
760 |
+
\WPMailSMTP\Tasks\Meta::get_table_name(),
|
761 |
+
];
|
762 |
+
|
763 |
+
return apply_filters( 'wp_mail_smtp_core_get_custom_db_tables', $tables );
|
764 |
+
}
|
765 |
+
|
766 |
+
/**
|
767 |
+
* Generate the correct MailCatcher object based on the PHPMailer version used in WP.
|
768 |
+
*
|
769 |
+
* Also conditionally require the needed class files.
|
770 |
+
*
|
771 |
+
* @see https://make.wordpress.org/core/2020/07/01/external-library-updates-in-wordpress-5-5-call-for-testing/
|
772 |
+
*
|
773 |
+
* @since 2.2.0
|
774 |
+
*
|
775 |
+
* @param bool $exceptions True if external exceptions should be thrown.
|
776 |
+
*
|
777 |
+
* @return MailCatcherInterface
|
778 |
+
*/
|
779 |
+
public function generate_mail_catcher( $exceptions = null ) {
|
780 |
+
|
781 |
+
if ( version_compare( get_bloginfo( 'version' ), '5.5-alpha', '<' ) ) {
|
782 |
+
if ( ! class_exists( '\PHPMailer', false ) ) {
|
783 |
+
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
784 |
+
}
|
785 |
+
|
786 |
+
$mail_catcher = new MailCatcher( $exceptions );
|
787 |
+
} else {
|
788 |
+
if ( ! class_exists( '\PHPMailer\PHPMailer\PHPMailer', false ) ) {
|
789 |
+
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
|
790 |
+
}
|
791 |
+
|
792 |
+
if ( ! class_exists( '\PHPMailer\PHPMailer\Exception', false ) ) {
|
793 |
+
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
|
794 |
+
}
|
795 |
+
|
796 |
+
if ( ! class_exists( '\PHPMailer\PHPMailer\SMTP', false ) ) {
|
797 |
+
require_once ABSPATH . WPINC . '/PHPMailer/SMTP.php';
|
798 |
+
}
|
799 |
+
|
800 |
+
$mail_catcher = new MailCatcherV6( $exceptions );
|
801 |
+
}
|
802 |
+
|
803 |
+
return $mail_catcher;
|
804 |
+
}
|
805 |
+
|
806 |
+
/**
|
807 |
+
* Check if the passed object is a valid PHPMailer object.
|
808 |
+
*
|
809 |
+
* @since 2.2.0
|
810 |
+
*
|
811 |
+
* @param object $phpmailer A potential PHPMailer object to be tested.
|
812 |
+
*
|
813 |
+
* @return bool
|
814 |
+
*/
|
815 |
+
public function is_valid_phpmailer( $phpmailer ) {
|
816 |
+
|
817 |
+
return $phpmailer instanceof MailCatcherInterface ||
|
818 |
+
$phpmailer instanceof \PHPMailer ||
|
819 |
+
$phpmailer instanceof \PHPMailer\PHPMailer\PHPMailer;
|
820 |
+
}
|
821 |
+
|
822 |
+
/**
|
823 |
+
* Force the `mail.from_email_force` plugin option to always return true if the current saved mailer is Gmail.
|
824 |
+
* Alters the plugin options retrieving via the Options::get method.
|
825 |
+
*
|
826 |
+
* The gmail mailer check is performed when this filter is added.
|
827 |
+
*
|
828 |
+
* @since 2.2.0
|
829 |
+
*
|
830 |
+
* @param mixed $value The value of the plugin option that is being retrieved via Options::get method.
|
831 |
+
* @param string $group The group of the plugin option that is being retrieved via Options::get method.
|
832 |
+
* @param string $key The key of the plugin option that is being retrieved via Options::get method.
|
833 |
+
*
|
834 |
+
* @return mixed
|
835 |
+
*/
|
836 |
+
public function gmail_mailer_get_from_email_force( $value, $group, $key ) {
|
837 |
+
|
838 |
+
if ( $group === 'mail' && $key === 'from_email_force' ) {
|
839 |
+
$value = true;
|
840 |
+
}
|
841 |
+
|
842 |
+
return $value;
|
843 |
+
}
|
844 |
}
|
src/MailCatcher.php
CHANGED
@@ -13,7 +13,7 @@ if ( ! class_exists( 'PHPMailer', false ) ) {
|
|
13 |
*
|
14 |
* @since 1.0.0
|
15 |
*/
|
16 |
-
class MailCatcher extends \PHPMailer {
|
17 |
|
18 |
/**
|
19 |
* Callback Action function name.
|
@@ -77,6 +77,9 @@ class MailCatcher extends \PHPMailer {
|
|
77 |
$mail_mailer === 'pepipost'
|
78 |
) {
|
79 |
try {
|
|
|
|
|
|
|
80 |
// Prepare all the headers.
|
81 |
if ( ! $this->preSend() ) {
|
82 |
return false;
|
@@ -151,4 +154,16 @@ class MailCatcher extends \PHPMailer {
|
|
151 |
|
152 |
return $this->CustomHeader;
|
153 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
13 |
*
|
14 |
* @since 1.0.0
|
15 |
*/
|
16 |
+
class MailCatcher extends \PHPMailer implements MailCatcherInterface {
|
17 |
|
18 |
/**
|
19 |
* Callback Action function name.
|
77 |
$mail_mailer === 'pepipost'
|
78 |
) {
|
79 |
try {
|
80 |
+
// Allow to hook early to catch any early failed emails.
|
81 |
+
do_action( 'wp_mail_smtp_mailcatcher_smtp_pre_send_before', $this );
|
82 |
+
|
83 |
// Prepare all the headers.
|
84 |
if ( ! $this->preSend() ) {
|
85 |
return false;
|
154 |
|
155 |
return $this->CustomHeader;
|
156 |
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Get the PHPMailer line ending.
|
160 |
+
*
|
161 |
+
* @since 2.2.0
|
162 |
+
*
|
163 |
+
* @return string
|
164 |
+
*/
|
165 |
+
public function get_line_ending() {
|
166 |
+
|
167 |
+
return $this->LE; // phpcs:ignore
|
168 |
+
}
|
169 |
}
|
src/MailCatcherInterface.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Interface MailCatcherInterface.
|
7 |
+
*
|
8 |
+
* @since 2.2.0
|
9 |
+
*/
|
10 |
+
interface MailCatcherInterface {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Modify the default send() behaviour.
|
14 |
+
* For those mailers, that relies on PHPMailer class - call it directly.
|
15 |
+
* For others - init the correct provider and process it.
|
16 |
+
*
|
17 |
+
* @since 2.2.0
|
18 |
+
*
|
19 |
+
* @throws \phpmailerException|\PHPMailer\PHPMailer\Exception When sending via PhpMailer fails for some reason.
|
20 |
+
*
|
21 |
+
* @return bool
|
22 |
+
*/
|
23 |
+
public function send();
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Get the PHPMailer line ending.
|
27 |
+
*
|
28 |
+
* @since 2.2.0
|
29 |
+
*
|
30 |
+
* @return string
|
31 |
+
*/
|
32 |
+
public function get_line_ending();
|
33 |
+
}
|
src/MailCatcherV6.php
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class MailCatcher replaces the \PHPMailer\PHPMailer\PHPMailer introduced in WP 5.5 and
|
7 |
+
* modifies the email sending logic. Thus, we can use other mailers API to do what we need, or stop emails completely.
|
8 |
+
*
|
9 |
+
* @since 2.2.0
|
10 |
+
*/
|
11 |
+
class MailCatcherV6 extends \PHPMailer\PHPMailer\PHPMailer implements MailCatcherInterface {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Callback Action function name.
|
15 |
+
*
|
16 |
+
* The function that handles the result of the send email action.
|
17 |
+
* It is called out by send() for each email sent.
|
18 |
+
*
|
19 |
+
* @since 2.2.0
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
public $action_function = '\WPMailSMTP\Processor::send_callback';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Modify the default send() behaviour.
|
27 |
+
* For those mailers, that relies on PHPMailer class - call it directly.
|
28 |
+
* For others - init the correct provider and process it.
|
29 |
+
*
|
30 |
+
* @since 2.2.0
|
31 |
+
*
|
32 |
+
* @throws \PHPMailer\PHPMailer\Exception When sending via PhpMailer fails for some reason.
|
33 |
+
*
|
34 |
+
* @return bool
|
35 |
+
*/
|
36 |
+
public function send() { // phpcs:ignore
|
37 |
+
|
38 |
+
$options = new Options();
|
39 |
+
$mail_mailer = sanitize_key( $options->get( 'mail', 'mailer' ) );
|
40 |
+
|
41 |
+
$is_emailing_blocked = false;
|
42 |
+
|
43 |
+
if ( wp_mail_smtp()->is_blocked() ) {
|
44 |
+
$is_emailing_blocked = true;
|
45 |
+
}
|
46 |
+
|
47 |
+
// Always allow a test email - check for the specific header.
|
48 |
+
foreach ( (array) $this->getCustomHeaders() as $header ) {
|
49 |
+
if (
|
50 |
+
! empty( $header[0] ) &&
|
51 |
+
! empty( $header[1] ) &&
|
52 |
+
$header[0] === 'X-Mailer-Type' &&
|
53 |
+
trim( $header[1] ) === 'WPMailSMTP/Admin/Test'
|
54 |
+
) {
|
55 |
+
$is_emailing_blocked = false;
|
56 |
+
}
|
57 |
+
};
|
58 |
+
|
59 |
+
// Do not send emails if admin desired that.
|
60 |
+
if ( $is_emailing_blocked ) {
|
61 |
+
return false;
|
62 |
+
}
|
63 |
+
|
64 |
+
// Define a custom header, that will be used to identify the plugin and the mailer.
|
65 |
+
$this->XMailer = 'WPMailSMTP/Mailer/' . $mail_mailer . ' ' . WPMS_PLUGIN_VER; // phpcs:ignore
|
66 |
+
|
67 |
+
// Use the default PHPMailer, as we inject our settings there for certain providers.
|
68 |
+
if (
|
69 |
+
$mail_mailer === 'mail' ||
|
70 |
+
$mail_mailer === 'smtp' ||
|
71 |
+
$mail_mailer === 'pepipost'
|
72 |
+
) {
|
73 |
+
try {
|
74 |
+
// Allow to hook early to catch any early failed emails.
|
75 |
+
do_action( 'wp_mail_smtp_mailcatcher_smtp_pre_send_before', $this );
|
76 |
+
|
77 |
+
// Prepare all the headers.
|
78 |
+
if ( ! $this->preSend() ) {
|
79 |
+
return false;
|
80 |
+
}
|
81 |
+
|
82 |
+
// Allow to hook after all the preparation before the actual sending.
|
83 |
+
do_action( 'wp_mail_smtp_mailcatcher_smtp_send_before', $this );
|
84 |
+
|
85 |
+
return $this->postSend();
|
86 |
+
} catch ( \PHPMailer\PHPMailer\Exception $e ) {
|
87 |
+
$this->mailHeader = ''; // phpcs:ignore
|
88 |
+
$this->setError( $e->getMessage() );
|
89 |
+
|
90 |
+
// Set the debug error, but not for default PHP mailer.
|
91 |
+
if ( $mail_mailer !== 'mail' ) {
|
92 |
+
Debug::set(
|
93 |
+
'Mailer: ' . esc_html( wp_mail_smtp()->get_providers()->get_options( $mail_mailer )->get_title() ) . PHP_EOL .
|
94 |
+
$e->getMessage()
|
95 |
+
);
|
96 |
+
}
|
97 |
+
|
98 |
+
if ( $this->exceptions ) {
|
99 |
+
throw $e;
|
100 |
+
}
|
101 |
+
|
102 |
+
return false;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
// We need this so that the PHPMailer class will correctly prepare all the headers.
|
107 |
+
$this->Mailer = 'mail'; // phpcs:ignore
|
108 |
+
|
109 |
+
// Prepare everything (including the message) for sending.
|
110 |
+
if ( ! $this->preSend() ) {
|
111 |
+
return false;
|
112 |
+
}
|
113 |
+
|
114 |
+
$mailer = wp_mail_smtp()->get_providers()->get_mailer( $mail_mailer, $this );
|
115 |
+
|
116 |
+
if ( ! $mailer ) {
|
117 |
+
return false;
|
118 |
+
}
|
119 |
+
|
120 |
+
if ( ! $mailer->is_php_compatible() ) {
|
121 |
+
return false;
|
122 |
+
}
|
123 |
+
|
124 |
+
/*
|
125 |
+
* Send the actual email.
|
126 |
+
* We reuse everything, that was preprocessed for usage in PHPMailer.
|
127 |
+
*/
|
128 |
+
$mailer->send();
|
129 |
+
|
130 |
+
$is_sent = $mailer->is_email_sent();
|
131 |
+
|
132 |
+
// Allow to perform any actions with the data.
|
133 |
+
do_action( 'wp_mail_smtp_mailcatcher_send_after', $mailer, $this );
|
134 |
+
|
135 |
+
return $is_sent;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Get the PHPMailer line ending.
|
140 |
+
*
|
141 |
+
* @since 2.2.0
|
142 |
+
*
|
143 |
+
* @return string
|
144 |
+
*/
|
145 |
+
public function get_line_ending() {
|
146 |
+
|
147 |
+
return static::$LE; // phpcs:ignore
|
148 |
+
}
|
149 |
+
}
|
src/Options.php
CHANGED
@@ -170,9 +170,11 @@ class Options {
|
|
170 |
* Retrieve all options of the plugin.
|
171 |
*
|
172 |
* @since 1.0.0
|
|
|
173 |
*/
|
174 |
protected function populate_options() {
|
175 |
-
|
|
|
176 |
}
|
177 |
|
178 |
/**
|
170 |
* Retrieve all options of the plugin.
|
171 |
*
|
172 |
* @since 1.0.0
|
173 |
+
* @since 2.2.0 Added the filter.
|
174 |
*/
|
175 |
protected function populate_options() {
|
176 |
+
|
177 |
+
$this->_options = apply_filters( 'wp_mail_smtp_populate_options', get_option( self::META_KEY, [] ) );
|
178 |
}
|
179 |
|
180 |
/**
|
src/Processor.php
CHANGED
@@ -146,28 +146,19 @@ class Processor {
|
|
146 |
$forced = $options->get( 'mail', 'from_email_force' );
|
147 |
$from_email = $options->get( 'mail', 'from_email' );
|
148 |
|
149 |
-
if ( ! empty( $reply_to ) ) {
|
150 |
return false;
|
151 |
}
|
152 |
|
153 |
-
if (
|
154 |
$forced = true;
|
155 |
-
|
156 |
-
|
157 |
-
case 'gmail':
|
158 |
-
$sender = wp_mail_smtp()->get_providers()->get_auth( 'gmail' )->get_user_info();
|
159 |
-
break;
|
160 |
-
|
161 |
-
case 'outlook':
|
162 |
-
$sender = $options->get( 'outlook', 'user_details' );
|
163 |
-
break;
|
164 |
-
}
|
165 |
-
|
166 |
$from_email = ! empty( $sender['email'] ) ? $sender['email'] : '';
|
|
|
167 |
}
|
168 |
|
169 |
if (
|
170 |
-
empty( $this->wp_mail_from ) ||
|
171 |
$from_email === $this->wp_mail_from ||
|
172 |
! $forced
|
173 |
) {
|
@@ -213,7 +204,7 @@ class Processor {
|
|
213 |
* @since 1.3.0 Forcing email rewrite if option is selected.
|
214 |
* @since 1.7.0 Default email may be empty, so pay attention to that as well.
|
215 |
*
|
216 |
-
* @param string $wp_email
|
217 |
*
|
218 |
* @return string
|
219 |
*/
|
@@ -222,11 +213,11 @@ class Processor {
|
|
222 |
$options = new Options();
|
223 |
$forced = $options->get( 'mail', 'from_email_force' );
|
224 |
$from_email = $options->get( 'mail', 'from_email' );
|
225 |
-
$def_email =
|
226 |
|
227 |
// Save the "original" set WP email from address for later use.
|
228 |
if ( $wp_email !== $def_email ) {
|
229 |
-
$this->wp_mail_from = $wp_email;
|
230 |
}
|
231 |
|
232 |
// Return FROM EMAIL if forced in settings.
|
@@ -308,7 +299,7 @@ class Processor {
|
|
308 |
*
|
309 |
* @since 1.9.0
|
310 |
*
|
311 |
-
* @return
|
312 |
*/
|
313 |
public function get_phpmailer() {
|
314 |
|
@@ -316,8 +307,7 @@ class Processor {
|
|
316 |
|
317 |
// Make sure the PHPMailer class has been instantiated.
|
318 |
if ( ! is_object( $phpmailer ) || ! is_a( $phpmailer, 'PHPMailer' ) ) {
|
319 |
-
|
320 |
-
$phpmailer = new MailCatcher( true ); // phpcs:ignore
|
321 |
}
|
322 |
|
323 |
return $phpmailer;
|
@@ -330,7 +320,7 @@ class Processor {
|
|
330 |
*
|
331 |
* @since 2.1.1
|
332 |
*
|
333 |
-
* @param
|
334 |
*/
|
335 |
private function set_default_reply_to( $phpmailer ) {
|
336 |
|
146 |
$forced = $options->get( 'mail', 'from_email_force' );
|
147 |
$from_email = $options->get( 'mail', 'from_email' );
|
148 |
|
149 |
+
if ( ! empty( $reply_to ) || empty( $this->wp_mail_from ) ) {
|
150 |
return false;
|
151 |
}
|
152 |
|
153 |
+
if ( $mailer === 'gmail' ) {
|
154 |
$forced = true;
|
155 |
+
} elseif ( $mailer === 'outlook' ) {
|
156 |
+
$sender = $options->get( 'outlook', 'user_details' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
$from_email = ! empty( $sender['email'] ) ? $sender['email'] : '';
|
158 |
+
$forced = true;
|
159 |
}
|
160 |
|
161 |
if (
|
|
|
162 |
$from_email === $this->wp_mail_from ||
|
163 |
! $forced
|
164 |
) {
|
204 |
* @since 1.3.0 Forcing email rewrite if option is selected.
|
205 |
* @since 1.7.0 Default email may be empty, so pay attention to that as well.
|
206 |
*
|
207 |
+
* @param string $wp_email The email address passed by the filter.
|
208 |
*
|
209 |
* @return string
|
210 |
*/
|
213 |
$options = new Options();
|
214 |
$forced = $options->get( 'mail', 'from_email_force' );
|
215 |
$from_email = $options->get( 'mail', 'from_email' );
|
216 |
+
$def_email = WP::get_default_email();
|
217 |
|
218 |
// Save the "original" set WP email from address for later use.
|
219 |
if ( $wp_email !== $def_email ) {
|
220 |
+
$this->wp_mail_from = filter_var( $wp_email, FILTER_VALIDATE_EMAIL );
|
221 |
}
|
222 |
|
223 |
// Return FROM EMAIL if forced in settings.
|
299 |
*
|
300 |
* @since 1.9.0
|
301 |
*
|
302 |
+
* @return MailCatcherInterface
|
303 |
*/
|
304 |
public function get_phpmailer() {
|
305 |
|
307 |
|
308 |
// Make sure the PHPMailer class has been instantiated.
|
309 |
if ( ! is_object( $phpmailer ) || ! is_a( $phpmailer, 'PHPMailer' ) ) {
|
310 |
+
$phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:ignore
|
|
|
311 |
}
|
312 |
|
313 |
return $phpmailer;
|
320 |
*
|
321 |
* @since 2.1.1
|
322 |
*
|
323 |
+
* @param MailCatcherInterface $phpmailer The PHPMailer object.
|
324 |
*/
|
325 |
private function set_default_reply_to( $phpmailer ) {
|
326 |
|
src/Providers/Gmail/Auth.php
CHANGED
@@ -1,283 +1,331 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Providers\Gmail;
|
4 |
-
|
5 |
-
use WPMailSMTP\Admin\Area;
|
6 |
-
use WPMailSMTP\Debug;
|
7 |
-
use WPMailSMTP\Options as PluginOptions;
|
8 |
-
use WPMailSMTP\Providers\AuthAbstract;
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Class Auth to request access and refresh tokens.
|
12 |
-
*
|
13 |
-
* @since 1.0.0
|
14 |
-
*/
|
15 |
-
class Auth extends AuthAbstract {
|
16 |
-
|
17 |
-
/**
|
18 |
-
*
|
19 |
-
*
|
20 |
-
* @since
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
}
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
$
|
87 |
-
|
88 |
-
$client
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
)
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
}
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Providers\Gmail;
|
4 |
+
|
5 |
+
use WPMailSMTP\Admin\Area;
|
6 |
+
use WPMailSMTP\Debug;
|
7 |
+
use WPMailSMTP\Options as PluginOptions;
|
8 |
+
use WPMailSMTP\Providers\AuthAbstract;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Class Auth to request access and refresh tokens.
|
12 |
+
*
|
13 |
+
* @since 1.0.0
|
14 |
+
*/
|
15 |
+
class Auth extends AuthAbstract {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* List of all possible "from email" email addresses (aliases).
|
19 |
+
*
|
20 |
+
* @since 2.2.0
|
21 |
+
*
|
22 |
+
* @var null|array
|
23 |
+
*/
|
24 |
+
private $aliases = null;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Auth constructor.
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
*/
|
31 |
+
public function __construct() {
|
32 |
+
|
33 |
+
$options = new PluginOptions();
|
34 |
+
$this->mailer_slug = $options->get( 'mail', 'mailer' );
|
35 |
+
|
36 |
+
if ( $this->mailer_slug !== Options::SLUG ) {
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
|
40 |
+
$this->options = $options->get_group( $this->mailer_slug );
|
41 |
+
|
42 |
+
if ( $this->is_clients_saved() ) {
|
43 |
+
|
44 |
+
$this->include_vendor_lib();
|
45 |
+
|
46 |
+
$this->client = $this->get_client();
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Get the url, that users will be redirected back to finish the OAuth process.
|
52 |
+
*
|
53 |
+
* @since 1.5.2 Returned to the old, pre-1.5, structure of the link to preserve BC.
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
public static function get_plugin_auth_url() {
|
58 |
+
|
59 |
+
return apply_filters(
|
60 |
+
'wp_mail_smtp_gmail_get_plugin_auth_url',
|
61 |
+
add_query_arg(
|
62 |
+
array(
|
63 |
+
'page' => Area::SLUG,
|
64 |
+
'tab' => 'auth',
|
65 |
+
),
|
66 |
+
admin_url( 'options-general.php' )
|
67 |
+
)
|
68 |
+
);
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Init and get the Google Client object.
|
73 |
+
*
|
74 |
+
* @since 1.0.0
|
75 |
+
* @since 1.5.0 Add ability to apply custom options to the client via a filter.
|
76 |
+
*
|
77 |
+
* @return \Google_Client
|
78 |
+
*/
|
79 |
+
public function get_client() {
|
80 |
+
|
81 |
+
// Doesn't load client twice + gives ability to overwrite.
|
82 |
+
if ( ! empty( $this->client ) ) {
|
83 |
+
return $this->client;
|
84 |
+
}
|
85 |
+
|
86 |
+
$this->include_vendor_lib();
|
87 |
+
|
88 |
+
$client = new \Google_Client(
|
89 |
+
array(
|
90 |
+
'client_id' => $this->options['client_id'],
|
91 |
+
'client_secret' => $this->options['client_secret'],
|
92 |
+
'redirect_uris' => array(
|
93 |
+
self::get_plugin_auth_url(),
|
94 |
+
),
|
95 |
+
)
|
96 |
+
);
|
97 |
+
$client->setApplicationName( 'WP Mail SMTP v' . WPMS_PLUGIN_VER );
|
98 |
+
$client->setAccessType( 'offline' );
|
99 |
+
$client->setApprovalPrompt( 'force' );
|
100 |
+
$client->setIncludeGrantedScopes( true );
|
101 |
+
// We request only the sending capability, as it's what we only need to do.
|
102 |
+
$client->setScopes( array( \Google_Service_Gmail::MAIL_GOOGLE_COM ) );
|
103 |
+
$client->setRedirectUri( self::get_plugin_auth_url() );
|
104 |
+
|
105 |
+
// Apply custom options to the client.
|
106 |
+
$client = apply_filters( 'wp_mail_smtp_providers_gmail_auth_get_client_custom_options', $client );
|
107 |
+
|
108 |
+
if (
|
109 |
+
$this->is_auth_required() &&
|
110 |
+
! empty( $this->options['auth_code'] )
|
111 |
+
) {
|
112 |
+
try {
|
113 |
+
$creds = $client->fetchAccessTokenWithAuthCode( $this->options['auth_code'] );
|
114 |
+
} catch ( \Exception $e ) {
|
115 |
+
$creds['error'] = $e->getMessage();
|
116 |
+
Debug::set(
|
117 |
+
'Mailer: Gmail' . "\r\n" .
|
118 |
+
$creds['error']
|
119 |
+
);
|
120 |
+
}
|
121 |
+
|
122 |
+
// Bail if we have an error.
|
123 |
+
if ( ! empty( $creds['error'] ) ) {
|
124 |
+
return $client;
|
125 |
+
}
|
126 |
+
|
127 |
+
$this->update_access_token( $client->getAccessToken() );
|
128 |
+
$this->update_refresh_token( $client->getRefreshToken() );
|
129 |
+
}
|
130 |
+
|
131 |
+
if ( ! empty( $this->options['access_token'] ) ) {
|
132 |
+
$client->setAccessToken( $this->options['access_token'] );
|
133 |
+
}
|
134 |
+
|
135 |
+
// Refresh the token if it's expired.
|
136 |
+
if ( $client->isAccessTokenExpired() ) {
|
137 |
+
$refresh = $client->getRefreshToken();
|
138 |
+
if ( empty( $refresh ) && isset( $this->options['refresh_token'] ) ) {
|
139 |
+
$refresh = $this->options['refresh_token'];
|
140 |
+
}
|
141 |
+
|
142 |
+
if ( ! empty( $refresh ) ) {
|
143 |
+
try {
|
144 |
+
$creds = $client->fetchAccessTokenWithRefreshToken( $refresh );
|
145 |
+
} catch ( \Exception $e ) {
|
146 |
+
$creds['error'] = $e->getMessage();
|
147 |
+
Debug::set(
|
148 |
+
'Mailer: Gmail' . "\r\n" .
|
149 |
+
$e->getMessage()
|
150 |
+
);
|
151 |
+
}
|
152 |
+
|
153 |
+
// Bail if we have an error.
|
154 |
+
if ( ! empty( $creds['error'] ) ) {
|
155 |
+
return $client;
|
156 |
+
}
|
157 |
+
|
158 |
+
$this->update_access_token( $client->getAccessToken() );
|
159 |
+
$this->update_refresh_token( $client->getRefreshToken() );
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
+
return $client;
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Get the auth code from the $_GET and save it.
|
168 |
+
* Redirect user back to settings with an error message, if failed.
|
169 |
+
*
|
170 |
+
* @since 1.0.0
|
171 |
+
*/
|
172 |
+
public function process() {
|
173 |
+
|
174 |
+
if ( ! ( isset( $_GET['tab'] ) && $_GET['tab'] === 'auth' ) ) {
|
175 |
+
wp_safe_redirect( wp_mail_smtp()->get_admin()->get_admin_page_url() );
|
176 |
+
exit;
|
177 |
+
}
|
178 |
+
|
179 |
+
// We can't process without saved client_id/secret.
|
180 |
+
if ( ! $this->is_clients_saved() ) {
|
181 |
+
Debug::set(
|
182 |
+
esc_html__( 'There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved.', 'wp-mail-smtp' )
|
183 |
+
);
|
184 |
+
wp_safe_redirect(
|
185 |
+
add_query_arg(
|
186 |
+
'error',
|
187 |
+
'google_no_clients',
|
188 |
+
wp_mail_smtp()->get_admin()->get_admin_page_url()
|
189 |
+
)
|
190 |
+
);
|
191 |
+
exit;
|
192 |
+
}
|
193 |
+
|
194 |
+
$this->include_vendor_lib();
|
195 |
+
|
196 |
+
$code = '';
|
197 |
+
$scope = '';
|
198 |
+
$error = '';
|
199 |
+
|
200 |
+
if ( isset( $_GET['error'] ) ) {
|
201 |
+
$error = sanitize_key( $_GET['error'] );
|
202 |
+
}
|
203 |
+
|
204 |
+
// In case of any error: display a message to a user.
|
205 |
+
if ( ! empty( $error ) ) {
|
206 |
+
wp_safe_redirect(
|
207 |
+
add_query_arg(
|
208 |
+
'error',
|
209 |
+
'google_' . $error,
|
210 |
+
wp_mail_smtp()->get_admin()->get_admin_page_url()
|
211 |
+
)
|
212 |
+
);
|
213 |
+
exit;
|
214 |
+
}
|
215 |
+
|
216 |
+
if ( isset( $_GET['code'] ) ) {
|
217 |
+
$code = $_GET['code'];
|
218 |
+
}
|
219 |
+
if ( isset( $_GET['scope'] ) ) {
|
220 |
+
$scope = urldecode( $_GET['scope'] );
|
221 |
+
}
|
222 |
+
|
223 |
+
// Let's try to get the access token.
|
224 |
+
if (
|
225 |
+
! empty( $code ) &&
|
226 |
+
(
|
227 |
+
$scope === \Google_Service_Gmail::MAIL_GOOGLE_COM . ' ' . \Google_Service_Gmail::GMAIL_SEND ||
|
228 |
+
$scope === \Google_Service_Gmail::GMAIL_SEND . ' ' . \Google_Service_Gmail::MAIL_GOOGLE_COM ||
|
229 |
+
$scope === \Google_Service_Gmail::GMAIL_SEND ||
|
230 |
+
$scope === \Google_Service_Gmail::MAIL_GOOGLE_COM
|
231 |
+
)
|
232 |
+
) {
|
233 |
+
// Save the auth code. So \Google_Client can reuse it to retrieve the access token.
|
234 |
+
$this->update_auth_code( $code );
|
235 |
+
} else {
|
236 |
+
wp_safe_redirect(
|
237 |
+
add_query_arg(
|
238 |
+
'error',
|
239 |
+
'google_no_code_scope',
|
240 |
+
wp_mail_smtp()->get_admin()->get_admin_page_url()
|
241 |
+
)
|
242 |
+
);
|
243 |
+
exit;
|
244 |
+
}
|
245 |
+
|
246 |
+
wp_safe_redirect(
|
247 |
+
add_query_arg(
|
248 |
+
'success',
|
249 |
+
'google_site_linked',
|
250 |
+
wp_mail_smtp()->get_admin()->get_admin_page_url()
|
251 |
+
)
|
252 |
+
);
|
253 |
+
exit;
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* Get the auth URL used to proceed to Provider to request access to send emails.
|
258 |
+
*
|
259 |
+
* @since 1.0.0
|
260 |
+
*
|
261 |
+
* @return string
|
262 |
+
*/
|
263 |
+
public function get_auth_url() {
|
264 |
+
|
265 |
+
if (
|
266 |
+
! empty( $this->client ) &&
|
267 |
+
class_exists( 'Google_Client', false ) &&
|
268 |
+
$this->client instanceof \Google_Client
|
269 |
+
) {
|
270 |
+
return filter_var( $this->client->createAuthUrl(), FILTER_SANITIZE_URL );
|
271 |
+
}
|
272 |
+
|
273 |
+
return '#';
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Get user information (like email etc) that is associated with the current connection.
|
278 |
+
*
|
279 |
+
* @since 1.5.0
|
280 |
+
*
|
281 |
+
* @return array
|
282 |
+
*/
|
283 |
+
public function get_user_info() {
|
284 |
+
|
285 |
+
$gmail = new \Google_Service_Gmail( $this->get_client() );
|
286 |
+
|
287 |
+
try {
|
288 |
+
$email = $gmail->users->getProfile( 'me' )->getEmailAddress();
|
289 |
+
} catch ( \Exception $e ) {
|
290 |
+
$email = '';
|
291 |
+
}
|
292 |
+
|
293 |
+
return array( 'email' => $email );
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Get the registered email addresses that the user can use as the "from email".
|
298 |
+
*
|
299 |
+
* @since 2.2.0
|
300 |
+
*
|
301 |
+
* @return array The list of possible from email addresses.
|
302 |
+
*/
|
303 |
+
public function get_user_possible_send_from_addresses() {
|
304 |
+
|
305 |
+
if ( isset( $this->aliases ) ) {
|
306 |
+
return $this->aliases;
|
307 |
+
}
|
308 |
+
|
309 |
+
$gmail = new \Google_Service_Gmail( $this->get_client() );
|
310 |
+
|
311 |
+
try {
|
312 |
+
$response = $gmail->users_settings_sendAs->listUsersSettingsSendAs( 'me' ); // phpcs:ignore
|
313 |
+
|
314 |
+
// phpcs:disable
|
315 |
+
if ( isset( $response->sendAs ) ) {
|
316 |
+
$this->aliases = array_map(
|
317 |
+
function( $sendAsObject ) {
|
318 |
+
return $sendAsObject->sendAsEmail;
|
319 |
+
},
|
320 |
+
$response->sendAs
|
321 |
+
);
|
322 |
+
}
|
323 |
+
// phpcs:enable
|
324 |
+
|
325 |
+
} catch ( \Exception $exception ) {
|
326 |
+
$this->aliases = [];
|
327 |
+
}
|
328 |
+
|
329 |
+
return $this->aliases;
|
330 |
+
}
|
331 |
+
}
|
src/Providers/Gmail/Mailer.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
namespace WPMailSMTP\Providers\Gmail;
|
4 |
|
5 |
use WPMailSMTP\Debug;
|
6 |
-
use WPMailSMTP\
|
7 |
use WPMailSMTP\Providers\MailerAbstract;
|
8 |
|
9 |
/**
|
@@ -37,10 +37,11 @@ class Mailer extends MailerAbstract {
|
|
37 |
*
|
38 |
* @since 1.0.0
|
39 |
*
|
40 |
-
* @param
|
41 |
*/
|
42 |
public function __construct( $phpmailer ) {
|
43 |
-
|
|
|
44 |
|
45 |
if ( ! $this->is_php_compatible() ) {
|
46 |
return;
|
@@ -52,14 +53,12 @@ class Mailer extends MailerAbstract {
|
|
52 |
*
|
53 |
* @since 1.2.0
|
54 |
*
|
55 |
-
* @param
|
56 |
*/
|
57 |
public function process_phpmailer( $phpmailer ) {
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
! $phpmailer instanceof \PHPMailer
|
62 |
-
) {
|
63 |
return;
|
64 |
}
|
65 |
|
@@ -79,25 +78,23 @@ class Mailer extends MailerAbstract {
|
|
79 |
$auth = new Auth();
|
80 |
$message = new \Google_Service_Gmail_Message();
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
$this->phpmailer->Sender = $gmail_creds['email'];
|
93 |
}
|
94 |
|
95 |
try {
|
96 |
-
// Prepare a message for sending.
|
97 |
$this->phpmailer->preSend();
|
98 |
|
99 |
-
// Get the raw MIME email using MailCatcher data.
|
100 |
-
// We need here to make base64URL-safe string.
|
101 |
$base64 = str_replace(
|
102 |
[ '+', '/', '=' ],
|
103 |
[ '-', '_', '' ],
|
3 |
namespace WPMailSMTP\Providers\Gmail;
|
4 |
|
5 |
use WPMailSMTP\Debug;
|
6 |
+
use WPMailSMTP\MailCatcherInterface;
|
7 |
use WPMailSMTP\Providers\MailerAbstract;
|
8 |
|
9 |
/**
|
37 |
*
|
38 |
* @since 1.0.0
|
39 |
*
|
40 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
41 |
*/
|
42 |
public function __construct( $phpmailer ) {
|
43 |
+
|
44 |
+
parent::__construct( $phpmailer );
|
45 |
|
46 |
if ( ! $this->is_php_compatible() ) {
|
47 |
return;
|
53 |
*
|
54 |
* @since 1.2.0
|
55 |
*
|
56 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
57 |
*/
|
58 |
public function process_phpmailer( $phpmailer ) {
|
59 |
+
|
60 |
+
// Make sure that we have access to PHPMailer class methods.
|
61 |
+
if ( ! wp_mail_smtp()->is_valid_phpmailer( $phpmailer ) ) {
|
|
|
|
|
62 |
return;
|
63 |
}
|
64 |
|
78 |
$auth = new Auth();
|
79 |
$message = new \Google_Service_Gmail_Message();
|
80 |
|
81 |
+
// Set the authorized Gmail email address as the "from email" if the set email is not on the list of aliases.
|
82 |
+
$possible_from_emails = $auth->get_user_possible_send_from_addresses();
|
83 |
+
|
84 |
+
if ( ! in_array( $this->phpmailer->From, $possible_from_emails, true ) ) {
|
85 |
+
$user_info = $auth->get_user_info();
|
86 |
+
|
87 |
+
if ( ! empty( $user_info['email'] ) ) {
|
88 |
+
$this->phpmailer->From = $user_info['email'];
|
89 |
+
$this->phpmailer->Sender = $user_info['email'];
|
90 |
+
}
|
|
|
91 |
}
|
92 |
|
93 |
try {
|
94 |
+
// Prepare a message for sending if any changes happened above.
|
95 |
$this->phpmailer->preSend();
|
96 |
|
97 |
+
// Get the raw MIME email using MailCatcher data. We need to make base64URL-safe string.
|
|
|
98 |
$base64 = str_replace(
|
99 |
[ '+', '/', '=' ],
|
100 |
[ '-', '_', '' ],
|
src/Providers/Gmail/Options.php
CHANGED
@@ -1,234 +1,251 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Providers\Gmail;
|
4 |
-
|
5 |
-
use WPMailSMTP\Providers\OptionsAbstract;
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Class Option.
|
9 |
-
*
|
10 |
-
* @since 1.0.0
|
11 |
-
*/
|
12 |
-
class Options extends OptionsAbstract {
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Mailer slug.
|
16 |
-
*
|
17 |
-
* @since 1.5.0
|
18 |
-
*/
|
19 |
-
const SLUG = 'gmail';
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Gmail Options constructor.
|
23 |
-
*
|
24 |
-
* @since 1.0.0
|
25 |
-
*/
|
26 |
-
public function __construct() {
|
27 |
-
|
28 |
-
parent::__construct(
|
29 |
-
array(
|
30 |
-
'logo_url' => wp_mail_smtp()->assets_url . '/images/providers/google.svg',
|
31 |
-
'slug' => self::SLUG,
|
32 |
-
'title' => esc_html__( 'Gmail', 'wp-mail-smtp' ),
|
33 |
-
'description' => sprintf(
|
34 |
-
wp_kses( /* translators: %s - URL to our Gmail doc. */
|
35 |
-
__( '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 <a href="%s" target="_blank" rel="noopener noreferrer">Gmail documentation</a> to learn how to configure Gmail or G Suite.', 'wp-mail-smtp' ),
|
36 |
-
array(
|
37 |
-
'br' => array(),
|
38 |
-
'a' => array(
|
39 |
-
'href' => array(),
|
40 |
-
'rel' => array(),
|
41 |
-
'target' => array(),
|
42 |
-
),
|
43 |
-
)
|
44 |
-
),
|
45 |
-
'https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/'
|
46 |
-
),
|
47 |
-
'notices' => array(
|
48 |
-
'educational' => esc_html__( 'The Gmail mailer works well for sites that send low numbers of emails. However, Gmail\'s API has rate limitations and a number of additional restrictions that can lead to challenges during setup. If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option.', 'wp-mail-smtp' ),
|
49 |
-
),
|
50 |
-
'php' => '5.5',
|
51 |
-
)
|
52 |
-
);
|
53 |
-
}
|
54 |
-
|
55 |
-
/**
|
56 |
-
* @inheritdoc
|
57 |
-
*/
|
58 |
-
public function display_options() {
|
59 |
-
|
60 |
-
// Do not display options if PHP version is not correct.
|
61 |
-
if ( ! $this->is_php_correct() ) {
|
62 |
-
$this->display_php_warning();
|
63 |
-
|
64 |
-
return;
|
65 |
-
}
|
66 |
-
?>
|
67 |
-
|
68 |
-
<!-- Client ID -->
|
69 |
-
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_id"
|
70 |
-
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
71 |
-
<div class="wp-mail-smtp-setting-label">
|
72 |
-
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_id"><?php esc_html_e( 'Client ID', 'wp-mail-smtp' ); ?></label>
|
73 |
-
</div>
|
74 |
-
<div class="wp-mail-smtp-setting-field">
|
75 |
-
<input name="wp-mail-smtp[<?php echo esc_attr( $this->get_slug() ); ?>][client_id]" type="text"
|
76 |
-
value="<?php echo esc_attr( $this->options->get( $this->get_slug(), 'client_id' ) ); ?>"
|
77 |
-
<?php echo $this->options->is_const_defined( $this->get_slug(), 'client_id' ) ? 'disabled' : ''; ?>
|
78 |
-
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_id" spellcheck="false"
|
79 |
-
/>
|
80 |
-
</div>
|
81 |
-
</div>
|
82 |
-
|
83 |
-
<!-- Client Secret -->
|
84 |
-
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
85 |
-
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
86 |
-
<div class="wp-mail-smtp-setting-label">
|
87 |
-
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"><?php esc_html_e( 'Client Secret', 'wp-mail-smtp' ); ?></label>
|
88 |
-
</div>
|
89 |
-
<div class="wp-mail-smtp-setting-field">
|
90 |
-
<?php if ( $this->options->is_const_defined( $this->get_slug(), 'client_secret' ) ) : ?>
|
91 |
-
<input type="text" disabled value="****************************************"
|
92 |
-
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
93 |
-
/>
|
94 |
-
<?php $this->display_const_set_message( 'WPMS_GMAIL_CLIENT_SECRET' ); ?>
|
95 |
-
<?php else : ?>
|
96 |
-
<input type="password" spellcheck="false"
|
97 |
-
name="wp-mail-smtp[<?php echo esc_attr( $this->get_slug() ); ?>][client_secret]"
|
98 |
-
value="<?php echo esc_attr( $this->options->get( $this->get_slug(), 'client_secret' ) ); ?>"
|
99 |
-
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
100 |
-
/>
|
101 |
-
<?php endif; ?>
|
102 |
-
</div>
|
103 |
-
</div>
|
104 |
-
|
105 |
-
<!-- Authorized redirect URI -->
|
106 |
-
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"
|
107 |
-
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
108 |
-
<div class="wp-mail-smtp-setting-label">
|
109 |
-
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"><?php esc_html_e( 'Authorized redirect URI', 'wp-mail-smtp' ); ?></label>
|
110 |
-
</div>
|
111 |
-
<div class="wp-mail-smtp-setting-field">
|
112 |
-
<input type="text" readonly="readonly"
|
113 |
-
value="<?php echo esc_attr( Auth::get_plugin_auth_url() ); ?>"
|
114 |
-
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"
|
115 |
-
/>
|
116 |
-
<button type="button" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-light-grey wp-mail-smtp-setting-copy"
|
117 |
-
title="<?php esc_attr_e( 'Copy URL to clipboard', 'wp-mail-smtp' ); ?>"
|
118 |
-
data-source_id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect">
|
119 |
-
<span class="dashicons dashicons-admin-page"></span>
|
120 |
-
</button>
|
121 |
-
<p class="desc">
|
122 |
-
<?php esc_html_e( 'Please copy this URL into the "Authorized redirect URIs" field of your Google web application.', 'wp-mail-smtp' ); ?>
|
123 |
-
</p>
|
124 |
-
</div>
|
125 |
-
</div>
|
126 |
-
|
127 |
-
<!-- Auth users button -->
|
128 |
-
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-authorize"
|
129 |
-
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
130 |
-
<div class="wp-mail-smtp-setting-label">
|
131 |
-
<label><?php esc_html_e( 'Authorization', 'wp-mail-smtp' ); ?></label>
|
132 |
-
</div>
|
133 |
-
<div class="wp-mail-smtp-setting-field">
|
134 |
-
<?php $this->display_auth_setting_action(); ?>
|
135 |
-
</div>
|
136 |
-
</div>
|
137 |
-
|
138 |
-
<?php
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* Display either an "Allow..." or "Remove..." button.
|
143 |
-
*
|
144 |
-
* @since 1.3.0
|
145 |
-
*/
|
146 |
-
protected function display_auth_setting_action() {
|
147 |
-
|
148 |
-
// Do the processing on the fly, as having ajax here is too complicated.
|
149 |
-
$this->process_provider_remove();
|
150 |
-
|
151 |
-
$auth = new Auth();
|
152 |
-
?>
|
153 |
-
|
154 |
-
<?php if ( $auth->is_clients_saved() ) : ?>
|
155 |
-
|
156 |
-
<?php if ( $auth->is_auth_required() ) : ?>
|
157 |
-
|
158 |
-
<a href="<?php echo esc_url( $auth->get_auth_url() ); ?>" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-orange">
|
159 |
-
<?php esc_html_e( 'Allow plugin to send emails using your Google account', 'wp-mail-smtp' ); ?>
|
160 |
-
</a>
|
161 |
-
<p class="desc">
|
162 |
-
<?php esc_html_e( 'Click the button above to confirm authorization.', 'wp-mail-smtp' ); ?>
|
163 |
-
</p>
|
164 |
-
|
165 |
-
<?php else : ?>
|
166 |
-
|
167 |
-
<a href="<?php echo esc_url( wp_nonce_url( wp_mail_smtp()->get_admin()->get_admin_page_url(), 'gmail_remove', 'gmail_remove_nonce' ) ); ?>#wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-authorize" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-red js-wp-mail-smtp-provider-remove">
|
168 |
-
<?php esc_html_e( 'Remove Connection', 'wp-mail-smtp' ); ?>
|
169 |
-
</a>
|
170 |
-
<span class="connected-as">
|
171 |
-
<?php
|
172 |
-
$user = $auth->get_user_info();
|
173 |
-
|
174 |
-
if ( ! empty( $user['email'] ) ) {
|
175 |
-
printf(
|
176 |
-
/* translators: %s - email address, as received from Google API. */
|
177 |
-
esc_html__( 'Connected as %s', 'wp-mail-smtp' ),
|
178 |
-
'<code>' . esc_html( $user['email'] ) . '</code>'
|
179 |
-
);
|
180 |
-
}
|
181 |
-
?>
|
182 |
-
</span>
|
183 |
-
<p class="desc">
|
184 |
-
<?php
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Providers\Gmail;
|
4 |
+
|
5 |
+
use WPMailSMTP\Providers\OptionsAbstract;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class Option.
|
9 |
+
*
|
10 |
+
* @since 1.0.0
|
11 |
+
*/
|
12 |
+
class Options extends OptionsAbstract {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Mailer slug.
|
16 |
+
*
|
17 |
+
* @since 1.5.0
|
18 |
+
*/
|
19 |
+
const SLUG = 'gmail';
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Gmail Options constructor.
|
23 |
+
*
|
24 |
+
* @since 1.0.0
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
|
28 |
+
parent::__construct(
|
29 |
+
array(
|
30 |
+
'logo_url' => wp_mail_smtp()->assets_url . '/images/providers/google.svg',
|
31 |
+
'slug' => self::SLUG,
|
32 |
+
'title' => esc_html__( 'Gmail', 'wp-mail-smtp' ),
|
33 |
+
'description' => sprintf(
|
34 |
+
wp_kses( /* translators: %s - URL to our Gmail doc. */
|
35 |
+
__( '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 <a href="%s" target="_blank" rel="noopener noreferrer">Gmail documentation</a> to learn how to configure Gmail or G Suite.', 'wp-mail-smtp' ),
|
36 |
+
array(
|
37 |
+
'br' => array(),
|
38 |
+
'a' => array(
|
39 |
+
'href' => array(),
|
40 |
+
'rel' => array(),
|
41 |
+
'target' => array(),
|
42 |
+
),
|
43 |
+
)
|
44 |
+
),
|
45 |
+
'https://wpmailsmtp.com/docs/how-to-set-up-the-gmail-mailer-in-wp-mail-smtp/'
|
46 |
+
),
|
47 |
+
'notices' => array(
|
48 |
+
'educational' => esc_html__( 'The Gmail mailer works well for sites that send low numbers of emails. However, Gmail\'s API has rate limitations and a number of additional restrictions that can lead to challenges during setup. If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option.', 'wp-mail-smtp' ),
|
49 |
+
),
|
50 |
+
'php' => '5.5',
|
51 |
+
)
|
52 |
+
);
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @inheritdoc
|
57 |
+
*/
|
58 |
+
public function display_options() {
|
59 |
+
|
60 |
+
// Do not display options if PHP version is not correct.
|
61 |
+
if ( ! $this->is_php_correct() ) {
|
62 |
+
$this->display_php_warning();
|
63 |
+
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
?>
|
67 |
+
|
68 |
+
<!-- Client ID -->
|
69 |
+
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_id"
|
70 |
+
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
71 |
+
<div class="wp-mail-smtp-setting-label">
|
72 |
+
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_id"><?php esc_html_e( 'Client ID', 'wp-mail-smtp' ); ?></label>
|
73 |
+
</div>
|
74 |
+
<div class="wp-mail-smtp-setting-field">
|
75 |
+
<input name="wp-mail-smtp[<?php echo esc_attr( $this->get_slug() ); ?>][client_id]" type="text"
|
76 |
+
value="<?php echo esc_attr( $this->options->get( $this->get_slug(), 'client_id' ) ); ?>"
|
77 |
+
<?php echo $this->options->is_const_defined( $this->get_slug(), 'client_id' ) ? 'disabled' : ''; ?>
|
78 |
+
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_id" spellcheck="false"
|
79 |
+
/>
|
80 |
+
</div>
|
81 |
+
</div>
|
82 |
+
|
83 |
+
<!-- Client Secret -->
|
84 |
+
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
85 |
+
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
86 |
+
<div class="wp-mail-smtp-setting-label">
|
87 |
+
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"><?php esc_html_e( 'Client Secret', 'wp-mail-smtp' ); ?></label>
|
88 |
+
</div>
|
89 |
+
<div class="wp-mail-smtp-setting-field">
|
90 |
+
<?php if ( $this->options->is_const_defined( $this->get_slug(), 'client_secret' ) ) : ?>
|
91 |
+
<input type="text" disabled value="****************************************"
|
92 |
+
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
93 |
+
/>
|
94 |
+
<?php $this->display_const_set_message( 'WPMS_GMAIL_CLIENT_SECRET' ); ?>
|
95 |
+
<?php else : ?>
|
96 |
+
<input type="password" spellcheck="false"
|
97 |
+
name="wp-mail-smtp[<?php echo esc_attr( $this->get_slug() ); ?>][client_secret]"
|
98 |
+
value="<?php echo esc_attr( $this->options->get( $this->get_slug(), 'client_secret' ) ); ?>"
|
99 |
+
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_secret"
|
100 |
+
/>
|
101 |
+
<?php endif; ?>
|
102 |
+
</div>
|
103 |
+
</div>
|
104 |
+
|
105 |
+
<!-- Authorized redirect URI -->
|
106 |
+
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"
|
107 |
+
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
108 |
+
<div class="wp-mail-smtp-setting-label">
|
109 |
+
<label for="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"><?php esc_html_e( 'Authorized redirect URI', 'wp-mail-smtp' ); ?></label>
|
110 |
+
</div>
|
111 |
+
<div class="wp-mail-smtp-setting-field">
|
112 |
+
<input type="text" readonly="readonly"
|
113 |
+
value="<?php echo esc_attr( Auth::get_plugin_auth_url() ); ?>"
|
114 |
+
id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect"
|
115 |
+
/>
|
116 |
+
<button type="button" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-light-grey wp-mail-smtp-setting-copy"
|
117 |
+
title="<?php esc_attr_e( 'Copy URL to clipboard', 'wp-mail-smtp' ); ?>"
|
118 |
+
data-source_id="wp-mail-smtp-setting-<?php echo esc_attr( $this->get_slug() ); ?>-client_redirect">
|
119 |
+
<span class="dashicons dashicons-admin-page"></span>
|
120 |
+
</button>
|
121 |
+
<p class="desc">
|
122 |
+
<?php esc_html_e( 'Please copy this URL into the "Authorized redirect URIs" field of your Google web application.', 'wp-mail-smtp' ); ?>
|
123 |
+
</p>
|
124 |
+
</div>
|
125 |
+
</div>
|
126 |
+
|
127 |
+
<!-- Auth users button -->
|
128 |
+
<div id="wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-authorize"
|
129 |
+
class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-text wp-mail-smtp-clear">
|
130 |
+
<div class="wp-mail-smtp-setting-label">
|
131 |
+
<label><?php esc_html_e( 'Authorization', 'wp-mail-smtp' ); ?></label>
|
132 |
+
</div>
|
133 |
+
<div class="wp-mail-smtp-setting-field">
|
134 |
+
<?php $this->display_auth_setting_action(); ?>
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
|
138 |
+
<?php
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* Display either an "Allow..." or "Remove..." button.
|
143 |
+
*
|
144 |
+
* @since 1.3.0
|
145 |
+
*/
|
146 |
+
protected function display_auth_setting_action() {
|
147 |
+
|
148 |
+
// Do the processing on the fly, as having ajax here is too complicated.
|
149 |
+
$this->process_provider_remove();
|
150 |
+
|
151 |
+
$auth = new Auth();
|
152 |
+
?>
|
153 |
+
|
154 |
+
<?php if ( $auth->is_clients_saved() ) : ?>
|
155 |
+
|
156 |
+
<?php if ( $auth->is_auth_required() ) : ?>
|
157 |
+
|
158 |
+
<a href="<?php echo esc_url( $auth->get_auth_url() ); ?>" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-orange">
|
159 |
+
<?php esc_html_e( 'Allow plugin to send emails using your Google account', 'wp-mail-smtp' ); ?>
|
160 |
+
</a>
|
161 |
+
<p class="desc">
|
162 |
+
<?php esc_html_e( 'Click the button above to confirm authorization.', 'wp-mail-smtp' ); ?>
|
163 |
+
</p>
|
164 |
+
|
165 |
+
<?php else : ?>
|
166 |
+
|
167 |
+
<a href="<?php echo esc_url( wp_nonce_url( wp_mail_smtp()->get_admin()->get_admin_page_url(), 'gmail_remove', 'gmail_remove_nonce' ) ); ?>#wp-mail-smtp-setting-row-<?php echo esc_attr( $this->get_slug() ); ?>-authorize" class="wp-mail-smtp-btn wp-mail-smtp-btn-md wp-mail-smtp-btn-red js-wp-mail-smtp-provider-remove">
|
168 |
+
<?php esc_html_e( 'Remove Connection', 'wp-mail-smtp' ); ?>
|
169 |
+
</a>
|
170 |
+
<span class="connected-as">
|
171 |
+
<?php
|
172 |
+
$user = $auth->get_user_info();
|
173 |
+
|
174 |
+
if ( ! empty( $user['email'] ) ) {
|
175 |
+
printf(
|
176 |
+
/* translators: %s - email address, as received from Google API. */
|
177 |
+
esc_html__( 'Connected as %s', 'wp-mail-smtp' ),
|
178 |
+
'<code>' . esc_html( $user['email'] ) . '</code>'
|
179 |
+
);
|
180 |
+
}
|
181 |
+
?>
|
182 |
+
</span>
|
183 |
+
<p class="desc">
|
184 |
+
<?php
|
185 |
+
printf(
|
186 |
+
wp_kses( /* translators: %s - URL to Google Gmail alias documentation page. */
|
187 |
+
__( 'If you want to use a different From Email address you can set-up a Google email alias. <a href="%s" target="_blank" rel="noopener noreferrer">Follow these instructions</a> and then select the From Email at the top of this page.', 'wp-mail-smtp' ),
|
188 |
+
[
|
189 |
+
'a' => [
|
190 |
+
'href' => [],
|
191 |
+
'rel' => [],
|
192 |
+
'target' => [],
|
193 |
+
],
|
194 |
+
]
|
195 |
+
),
|
196 |
+
'https://support.google.com/a/answer/33327'
|
197 |
+
);
|
198 |
+
?>
|
199 |
+
</p>
|
200 |
+
<p class="desc">
|
201 |
+
<?php esc_html_e( 'Removing the connection will give you an ability to redo the connection or link to another Google account.', 'wp-mail-smtp' ); ?>
|
202 |
+
</p>
|
203 |
+
|
204 |
+
<?php endif; ?>
|
205 |
+
|
206 |
+
<?php else : ?>
|
207 |
+
|
208 |
+
<p class="inline-notice inline-error">
|
209 |
+
<?php esc_html_e( 'You need to save settings with Client ID and Client Secret before you can proceed.', 'wp-mail-smtp' ); ?>
|
210 |
+
</p>
|
211 |
+
|
212 |
+
<?php
|
213 |
+
endif;
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Remove Provider connection.
|
218 |
+
*
|
219 |
+
* @since 1.3.0
|
220 |
+
*/
|
221 |
+
public function process_provider_remove() {
|
222 |
+
|
223 |
+
if ( ! is_super_admin() ) {
|
224 |
+
return;
|
225 |
+
}
|
226 |
+
|
227 |
+
if (
|
228 |
+
! isset( $_GET['gmail_remove_nonce'] ) ||
|
229 |
+
! wp_verify_nonce( $_GET['gmail_remove_nonce'], 'gmail_remove' ) // phpcs:ignore
|
230 |
+
) {
|
231 |
+
return;
|
232 |
+
}
|
233 |
+
|
234 |
+
$options = new \WPMailSMTP\Options();
|
235 |
+
|
236 |
+
if ( $options->get( 'mail', 'mailer' ) !== $this->get_slug() ) {
|
237 |
+
return;
|
238 |
+
}
|
239 |
+
|
240 |
+
$old_opt = $options->get_all();
|
241 |
+
|
242 |
+
foreach ( $old_opt[ $this->get_slug() ] as $key => $value ) {
|
243 |
+
// Unset everything except Client ID and Secret.
|
244 |
+
if ( ! in_array( $key, array( 'client_id', 'client_secret' ), true ) ) {
|
245 |
+
unset( $old_opt[ $this->get_slug() ][ $key ] );
|
246 |
+
}
|
247 |
+
}
|
248 |
+
|
249 |
+
$options->set( $old_opt );
|
250 |
+
}
|
251 |
+
}
|
src/Providers/Loader.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
namespace WPMailSMTP\Providers;
|
4 |
|
5 |
use WPMailSMTP\Debug;
|
6 |
-
use WPMailSMTP\
|
7 |
use WPMailSMTP\Options;
|
8 |
|
9 |
/**
|
@@ -39,7 +39,7 @@ class Loader {
|
|
39 |
/**
|
40 |
* @since 1.0.0
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
private $phpmailer;
|
45 |
|
@@ -132,17 +132,14 @@ class Loader {
|
|
132 |
*
|
133 |
* @since 1.0.0
|
134 |
*
|
135 |
-
* @param string
|
136 |
-
* @param
|
137 |
*
|
138 |
* @return MailerAbstract|null
|
139 |
*/
|
140 |
public function get_mailer( $provider, $phpmailer ) {
|
141 |
|
142 |
-
if (
|
143 |
-
$phpmailer instanceof MailCatcher ||
|
144 |
-
$phpmailer instanceof \PHPMailer
|
145 |
-
) {
|
146 |
$this->phpmailer = $phpmailer;
|
147 |
}
|
148 |
|
3 |
namespace WPMailSMTP\Providers;
|
4 |
|
5 |
use WPMailSMTP\Debug;
|
6 |
+
use WPMailSMTP\MailCatcherInterface;
|
7 |
use WPMailSMTP\Options;
|
8 |
|
9 |
/**
|
39 |
/**
|
40 |
* @since 1.0.0
|
41 |
*
|
42 |
+
* @var MailCatcherInterface
|
43 |
*/
|
44 |
private $phpmailer;
|
45 |
|
132 |
*
|
133 |
* @since 1.0.0
|
134 |
*
|
135 |
+
* @param string $provider The provider name.
|
136 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
137 |
*
|
138 |
* @return MailerAbstract|null
|
139 |
*/
|
140 |
public function get_mailer( $provider, $phpmailer ) {
|
141 |
|
142 |
+
if ( wp_mail_smtp()->is_valid_phpmailer( $phpmailer ) ) {
|
|
|
|
|
|
|
143 |
$this->phpmailer = $phpmailer;
|
144 |
}
|
145 |
|
src/Providers/MailerAbstract.php
CHANGED
@@ -4,7 +4,7 @@ namespace WPMailSMTP\Providers;
|
|
4 |
|
5 |
use WPMailSMTP\Conflicts;
|
6 |
use WPMailSMTP\Debug;
|
7 |
-
use WPMailSMTP\
|
8 |
use WPMailSMTP\Options;
|
9 |
use WPMailSMTP\WP;
|
10 |
|
@@ -32,7 +32,7 @@ abstract class MailerAbstract implements MailerInterface {
|
|
32 |
/**
|
33 |
* @since 1.0.0
|
34 |
*
|
35 |
-
* @var
|
36 |
*/
|
37 |
protected $phpmailer;
|
38 |
/**
|
@@ -74,9 +74,9 @@ abstract class MailerAbstract implements MailerInterface {
|
|
74 |
*
|
75 |
* @since 1.0.0
|
76 |
*
|
77 |
-
* @param
|
78 |
*/
|
79 |
-
public function __construct(
|
80 |
|
81 |
$this->options = new Options();
|
82 |
$this->mailer = $this->options->get( 'mail', 'mailer' );
|
@@ -94,15 +94,12 @@ abstract class MailerAbstract implements MailerInterface {
|
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
*
|
97 |
-
* @param
|
98 |
*/
|
99 |
public function process_phpmailer( $phpmailer ) {
|
100 |
|
101 |
-
// Make sure that we have access to
|
102 |
-
if (
|
103 |
-
! $phpmailer instanceof MailCatcher &&
|
104 |
-
! $phpmailer instanceof \PHPMailer
|
105 |
-
) {
|
106 |
return;
|
107 |
}
|
108 |
|
4 |
|
5 |
use WPMailSMTP\Conflicts;
|
6 |
use WPMailSMTP\Debug;
|
7 |
+
use WPMailSMTP\MailCatcherInterface;
|
8 |
use WPMailSMTP\Options;
|
9 |
use WPMailSMTP\WP;
|
10 |
|
32 |
/**
|
33 |
* @since 1.0.0
|
34 |
*
|
35 |
+
* @var MailCatcherInterface
|
36 |
*/
|
37 |
protected $phpmailer;
|
38 |
/**
|
74 |
*
|
75 |
* @since 1.0.0
|
76 |
*
|
77 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
78 |
*/
|
79 |
+
public function __construct( MailCatcherInterface $phpmailer ) {
|
80 |
|
81 |
$this->options = new Options();
|
82 |
$this->mailer = $this->options->get( 'mail', 'mailer' );
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
*
|
97 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
98 |
*/
|
99 |
public function process_phpmailer( $phpmailer ) {
|
100 |
|
101 |
+
// Make sure that we have access to PHPMailer class methods.
|
102 |
+
if ( ! wp_mail_smtp()->is_valid_phpmailer( $phpmailer ) ) {
|
|
|
|
|
|
|
103 |
return;
|
104 |
}
|
105 |
|
src/Providers/MailerInterface.php
CHANGED
@@ -1,83 +1,86 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Providers;
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
*
|
24 |
-
*
|
25 |
-
*
|
26 |
-
*
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
*
|
35 |
-
*
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
*
|
44 |
-
*
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
*
|
53 |
-
*
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
*
|
62 |
-
*
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
*
|
71 |
-
*
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
*
|
80 |
-
*
|
81 |
-
|
82 |
-
|
83 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Providers;
|
4 |
+
|
5 |
+
use WPMailSMTP\MailCatcher;
|
6 |
+
use WPMailSMTP\MailCatcherV6;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Interface MailerInterface.
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
interface MailerInterface {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Send the email.
|
17 |
+
*
|
18 |
+
* @since 1.0.0
|
19 |
+
*/
|
20 |
+
public function send();
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Whether the email is sent or not.
|
24 |
+
* We basically check the response code from a request to provider.
|
25 |
+
* Might not be 100% correct, not guarantees that email is delivered.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
*
|
29 |
+
* @return bool
|
30 |
+
*/
|
31 |
+
public function is_email_sent();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Whether the mailer supports the current PHP version or not.
|
35 |
+
*
|
36 |
+
* @since 1.0.0
|
37 |
+
*
|
38 |
+
* @return bool
|
39 |
+
*/
|
40 |
+
public function is_php_compatible();
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Whether the mailer has all its settings correctly set up and saved.
|
44 |
+
*
|
45 |
+
* @since 1.4.0
|
46 |
+
*
|
47 |
+
* @return bool
|
48 |
+
*/
|
49 |
+
public function is_mailer_complete();
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get the email body.
|
53 |
+
*
|
54 |
+
* @since 1.0.0
|
55 |
+
*
|
56 |
+
* @return string|array
|
57 |
+
*/
|
58 |
+
public function get_body();
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get the email headers.
|
62 |
+
*
|
63 |
+
* @since 1.0.0
|
64 |
+
*
|
65 |
+
* @return array
|
66 |
+
*/
|
67 |
+
public function get_headers();
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Get an array of all debug information relevant to the mailer.
|
71 |
+
*
|
72 |
+
* @since 1.2.0
|
73 |
+
*
|
74 |
+
* @return array
|
75 |
+
*/
|
76 |
+
public function get_debug_info();
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Re-use the MailCatcher class methods and properties.
|
80 |
+
*
|
81 |
+
* @since 1.2.0
|
82 |
+
*
|
83 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
84 |
+
*/
|
85 |
+
public function process_phpmailer( $phpmailer );
|
86 |
+
}
|
src/Providers/Mailgun/Mailer.php
CHANGED
@@ -1,431 +1,466 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Providers\Mailgun;
|
4 |
-
|
5 |
-
use WPMailSMTP\
|
6 |
-
use WPMailSMTP\
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
*
|
11 |
-
*
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
*
|
18 |
-
*
|
19 |
-
*
|
20 |
-
*
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
*
|
27 |
-
*
|
28 |
-
*
|
29 |
-
*
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
*
|
36 |
-
*
|
37 |
-
*
|
38 |
-
*
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
*
|
45 |
-
*
|
46 |
-
*
|
47 |
-
*
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
*
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
$
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
*
|
191 |
-
*
|
192 |
-
*
|
193 |
-
*
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
$
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
*
|
211 |
-
*
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
*
|
227 |
-
*
|
228 |
-
*
|
229 |
-
*
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
$
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
*
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
'
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
$payload .=
|
277 |
-
$payload .=
|
278 |
-
$payload .= $
|
279 |
-
$payload .=
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
$payload .=
|
284 |
-
$payload .=
|
285 |
-
$payload .= $
|
286 |
-
$payload .=
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
$payload .=
|
294 |
-
$payload .=
|
295 |
-
$payload .= $attachment['
|
296 |
-
$payload .=
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
$
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
*
|
372 |
-
*
|
373 |
-
*
|
374 |
-
*
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Providers\Mailgun;
|
4 |
+
|
5 |
+
use WPMailSMTP\Debug;
|
6 |
+
use WPMailSMTP\Providers\MailerAbstract;
|
7 |
+
use WPMailSMTP\WP;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Class Mailer.
|
11 |
+
*
|
12 |
+
* @since 1.0.0
|
13 |
+
*/
|
14 |
+
class Mailer extends MailerAbstract {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Which response code from HTTP provider is considered to be successful?
|
18 |
+
*
|
19 |
+
* @since 1.0.0
|
20 |
+
*
|
21 |
+
* @var int
|
22 |
+
*/
|
23 |
+
protected $email_sent_code = 200;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* API endpoint used for sites from all regions.
|
27 |
+
*
|
28 |
+
* @since 1.4.0
|
29 |
+
*
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
const API_BASE_US = 'https://api.mailgun.net/v3/';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* API endpoint used for sites from EU region.
|
36 |
+
*
|
37 |
+
* @since 1.4.0
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
const API_BASE_EU = 'https://api.eu.mailgun.net/v3/';
|
42 |
+
|
43 |
+
/**
|
44 |
+
* URL to make an API request to.
|
45 |
+
*
|
46 |
+
* @since 1.0.0
|
47 |
+
*
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
protected $url = '';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @inheritdoc
|
54 |
+
*/
|
55 |
+
public function __construct( $phpmailer ) {
|
56 |
+
|
57 |
+
// Default value should be defined before the parent class contructor fires.
|
58 |
+
$this->url = self::API_BASE_US;
|
59 |
+
|
60 |
+
// We want to prefill everything from MailCatcher class, which extends PHPMailer.
|
61 |
+
parent::__construct( $phpmailer );
|
62 |
+
|
63 |
+
// We have a special API URL to query in case of EU region.
|
64 |
+
if ( 'EU' === $this->options->get( $this->mailer, 'region' ) ) {
|
65 |
+
$this->url = self::API_BASE_EU;
|
66 |
+
}
|
67 |
+
|
68 |
+
/*
|
69 |
+
* Append the url with a domain,
|
70 |
+
* to avoid passing the domain name as a query parameter with all requests.
|
71 |
+
*/
|
72 |
+
$this->url .= sanitize_text_field( $this->options->get( $this->mailer, 'domain' ) . '/messages' );
|
73 |
+
|
74 |
+
$this->set_header( 'Authorization', 'Basic ' . base64_encode( 'api:' . $this->options->get( $this->mailer, 'api_key' ) ) );
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @inheritdoc
|
79 |
+
*/
|
80 |
+
public function set_from( $email, $name = '' ) {
|
81 |
+
|
82 |
+
if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
|
83 |
+
return;
|
84 |
+
}
|
85 |
+
|
86 |
+
if ( ! empty( $name ) ) {
|
87 |
+
$this->set_body_param(
|
88 |
+
array(
|
89 |
+
'from' => $name . ' <' . $email . '>',
|
90 |
+
)
|
91 |
+
);
|
92 |
+
} else {
|
93 |
+
$this->set_body_param(
|
94 |
+
array(
|
95 |
+
'from' => $email,
|
96 |
+
)
|
97 |
+
);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @inheritdoc
|
103 |
+
*/
|
104 |
+
public function set_recipients( $recipients ) {
|
105 |
+
|
106 |
+
if ( empty( $recipients ) ) {
|
107 |
+
return;
|
108 |
+
}
|
109 |
+
|
110 |
+
$default = array( 'to', 'cc', 'bcc' );
|
111 |
+
|
112 |
+
foreach ( $recipients as $kind => $emails ) {
|
113 |
+
if (
|
114 |
+
! in_array( $kind, $default, true ) ||
|
115 |
+
empty( $emails ) ||
|
116 |
+
! is_array( $emails )
|
117 |
+
) {
|
118 |
+
continue;
|
119 |
+
}
|
120 |
+
|
121 |
+
$data = array();
|
122 |
+
|
123 |
+
foreach ( $emails as $email ) {
|
124 |
+
$addr = isset( $email[0] ) ? $email[0] : false;
|
125 |
+
$name = isset( $email[1] ) ? $email[1] : false;
|
126 |
+
|
127 |
+
if ( ! filter_var( $addr, FILTER_VALIDATE_EMAIL ) ) {
|
128 |
+
continue;
|
129 |
+
}
|
130 |
+
|
131 |
+
if ( ! empty( $name ) ) {
|
132 |
+
$data[] = $name . ' <' . $addr . '>';
|
133 |
+
} else {
|
134 |
+
$data[] = $addr;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
if ( ! empty( $data ) ) {
|
139 |
+
$this->set_body_param(
|
140 |
+
array(
|
141 |
+
$kind => implode( ', ', $data ),
|
142 |
+
)
|
143 |
+
);
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* @inheritdoc
|
150 |
+
*/
|
151 |
+
public function set_content( $content ) {
|
152 |
+
|
153 |
+
if ( is_array( $content ) ) {
|
154 |
+
|
155 |
+
$default = array( 'text', 'html' );
|
156 |
+
|
157 |
+
foreach ( $content as $type => $mail ) {
|
158 |
+
if (
|
159 |
+
! in_array( $type, $default, true ) ||
|
160 |
+
empty( $mail )
|
161 |
+
) {
|
162 |
+
continue;
|
163 |
+
}
|
164 |
+
|
165 |
+
$this->set_body_param(
|
166 |
+
array(
|
167 |
+
$type => $mail,
|
168 |
+
)
|
169 |
+
);
|
170 |
+
}
|
171 |
+
} else {
|
172 |
+
|
173 |
+
$type = 'html';
|
174 |
+
|
175 |
+
if ( $this->phpmailer->ContentType === 'text/plain' ) {
|
176 |
+
$type = 'text';
|
177 |
+
}
|
178 |
+
|
179 |
+
if ( ! empty( $content ) ) {
|
180 |
+
$this->set_body_param(
|
181 |
+
array(
|
182 |
+
$type => $content,
|
183 |
+
)
|
184 |
+
);
|
185 |
+
}
|
186 |
+
}
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Redefine the way custom headers are process for this mailer - they should be in body.
|
191 |
+
*
|
192 |
+
* @since 1.5.0
|
193 |
+
*
|
194 |
+
* @param array $headers
|
195 |
+
*/
|
196 |
+
public function set_headers( $headers ) {
|
197 |
+
|
198 |
+
foreach ( $headers as $header ) {
|
199 |
+
$name = isset( $header[0] ) ? $header[0] : false;
|
200 |
+
$value = isset( $header[1] ) ? $header[1] : false;
|
201 |
+
|
202 |
+
$this->set_body_header( $name, $value );
|
203 |
+
}
|
204 |
+
|
205 |
+
// Add custom PHPMailer-specific header.
|
206 |
+
$this->set_body_header( 'X-Mailer', 'WPMailSMTP/Mailer/' . $this->mailer . ' ' . WPMS_PLUGIN_VER );
|
207 |
+
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* This mailer supports email-related custom headers inside a body of the message with a special prefix "h:".
|
211 |
+
*
|
212 |
+
* @since 1.5.0
|
213 |
+
*/
|
214 |
+
public function set_body_header( $name, $value ) {
|
215 |
+
|
216 |
+
$name = sanitize_text_field( $name );
|
217 |
+
|
218 |
+
$this->set_body_param(
|
219 |
+
array(
|
220 |
+
'h:' . $name => WP::sanitize_value( $value ),
|
221 |
+
)
|
222 |
+
);
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* It's the last one, so we can modify the whole body.
|
227 |
+
*
|
228 |
+
* @since 1.0.0
|
229 |
+
*
|
230 |
+
* @param array $attachments
|
231 |
+
*/
|
232 |
+
public function set_attachments( $attachments ) {
|
233 |
+
|
234 |
+
if ( empty( $attachments ) ) {
|
235 |
+
return;
|
236 |
+
}
|
237 |
+
|
238 |
+
$payload = '';
|
239 |
+
$data = array();
|
240 |
+
|
241 |
+
foreach ( $attachments as $attachment ) {
|
242 |
+
$file = false;
|
243 |
+
|
244 |
+
/*
|
245 |
+
* We are not using WP_Filesystem API as we can't reliably work with it.
|
246 |
+
* It is not always available, same as credentials for FTP.
|
247 |
+
*/
|
248 |
+
try {
|
249 |
+
if ( is_file( $attachment[0] ) && is_readable( $attachment[0] ) ) {
|
250 |
+
$file = file_get_contents( $attachment[0] );
|
251 |
+
}
|
252 |
+
}
|
253 |
+
catch ( \Exception $e ) {
|
254 |
+
$file = false;
|
255 |
+
}
|
256 |
+
|
257 |
+
if ( $file === false ) {
|
258 |
+
continue;
|
259 |
+
}
|
260 |
+
|
261 |
+
$data[] = array(
|
262 |
+
'content' => $file,
|
263 |
+
'name' => $attachment[2],
|
264 |
+
);
|
265 |
+
}
|
266 |
+
|
267 |
+
if ( ! empty( $data ) ) {
|
268 |
+
|
269 |
+
// First, generate a boundary for the multipart message.
|
270 |
+
$boundary = base_convert( uniqid( 'boundary', true ), 10, 36 );
|
271 |
+
|
272 |
+
// Iterate through pre-built params and build a payload.
|
273 |
+
foreach ( $this->body as $key => $value ) {
|
274 |
+
if ( is_array( $value ) ) {
|
275 |
+
foreach ( $value as $child_key => $child_value ) {
|
276 |
+
$payload .= '--' . $boundary;
|
277 |
+
$payload .= "\r\n";
|
278 |
+
$payload .= 'Content-Disposition: form-data; name="' . $key . "\"\r\n\r\n";
|
279 |
+
$payload .= $child_value;
|
280 |
+
$payload .= "\r\n";
|
281 |
+
}
|
282 |
+
} else {
|
283 |
+
$payload .= '--' . $boundary;
|
284 |
+
$payload .= "\r\n";
|
285 |
+
$payload .= 'Content-Disposition: form-data; name="' . $key . '"' . "\r\n\r\n";
|
286 |
+
$payload .= $value;
|
287 |
+
$payload .= "\r\n";
|
288 |
+
}
|
289 |
+
}
|
290 |
+
|
291 |
+
// Now iterate through our attachments, and add them too.
|
292 |
+
foreach ( $data as $key => $attachment ) {
|
293 |
+
$payload .= '--' . $boundary;
|
294 |
+
$payload .= "\r\n";
|
295 |
+
$payload .= 'Content-Disposition: form-data; name="attachment[' . $key . ']"; filename="' . $attachment['name'] . '"' . "\r\n\r\n";
|
296 |
+
$payload .= $attachment['content'];
|
297 |
+
$payload .= "\r\n";
|
298 |
+
}
|
299 |
+
|
300 |
+
$payload .= '--' . $boundary . '--';
|
301 |
+
|
302 |
+
// Redefine the body the "dirty way".
|
303 |
+
$this->body = $payload;
|
304 |
+
|
305 |
+
$this->set_header( 'Content-Type', 'multipart/form-data; boundary=' . $boundary );
|
306 |
+
}
|
307 |
+
}
|
308 |
+
|
309 |
+
/**
|
310 |
+
* @inheritdoc
|
311 |
+
*/
|
312 |
+
public function set_reply_to( $reply_to ) {
|
313 |
+
|
314 |
+
if ( empty( $reply_to ) ) {
|
315 |
+
return;
|
316 |
+
}
|
317 |
+
|
318 |
+
$data = array();
|
319 |
+
|
320 |
+
foreach ( $reply_to as $key => $emails ) {
|
321 |
+
if (
|
322 |
+
empty( $emails ) ||
|
323 |
+
! is_array( $emails )
|
324 |
+
) {
|
325 |
+
continue;
|
326 |
+
}
|
327 |
+
|
328 |
+
$addr = isset( $emails[0] ) ? $emails[0] : false;
|
329 |
+
$name = isset( $emails[1] ) ? $emails[1] : false;
|
330 |
+
|
331 |
+
if ( ! filter_var( $addr, FILTER_VALIDATE_EMAIL ) ) {
|
332 |
+
continue;
|
333 |
+
}
|
334 |
+
|
335 |
+
if ( ! empty( $name ) ) {
|
336 |
+
$data[] = $name . ' <' . $addr . '>';
|
337 |
+
} else {
|
338 |
+
$data[] = $addr;
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
if ( ! empty( $data ) ) {
|
343 |
+
$this->set_body_param(
|
344 |
+
array(
|
345 |
+
'h:Reply-To' => implode( ',', $data ),
|
346 |
+
)
|
347 |
+
);
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* @inheritdoc
|
353 |
+
*/
|
354 |
+
public function set_return_path( $email ) {
|
355 |
+
|
356 |
+
if (
|
357 |
+
$this->options->get( 'mail', 'return_path' ) !== true ||
|
358 |
+
! filter_var( $email, FILTER_VALIDATE_EMAIL )
|
359 |
+
) {
|
360 |
+
return;
|
361 |
+
}
|
362 |
+
|
363 |
+
$this->set_body_param(
|
364 |
+
array(
|
365 |
+
'sender' => $email,
|
366 |
+
)
|
367 |
+
);
|
368 |
+
}
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Whether the email is sent or not.
|
372 |
+
* We basically check the response code from a request to provider.
|
373 |
+
* Might not be 100% correct, not guarantees that email is delivered.
|
374 |
+
*
|
375 |
+
* In Mailgun's case it looks like we have to check if the response body has the message ID.
|
376 |
+
* All successful API responses should have `id` key in the response body.
|
377 |
+
*
|
378 |
+
* @since 2.2.0
|
379 |
+
*
|
380 |
+
* @return bool
|
381 |
+
*/
|
382 |
+
public function is_email_sent() {
|
383 |
+
|
384 |
+
$is_sent = parent::is_email_sent();
|
385 |
+
|
386 |
+
if (
|
387 |
+
$is_sent &&
|
388 |
+
isset( $this->response['body'] ) &&
|
389 |
+
! array_key_exists( 'id', (array) $this->response['body'] )
|
390 |
+
) {
|
391 |
+
$message = 'Mailer: Mailgun' . PHP_EOL .
|
392 |
+
esc_html__( 'Mailgun API request was successful, but it could not queue the email for delivery.', 'wp-mail-smtp' ) . PHP_EOL .
|
393 |
+
esc_html__( 'This could point to an incorrect Domain Name in the plugin settings.', 'wp-mail-smtp' ) . PHP_EOL .
|
394 |
+
esc_html__( 'Please check the WP Mail SMTP plugin settings and make sure the Mailgun Domain Name setting is correct.', 'wp-mail-smtp' );
|
395 |
+
|
396 |
+
Debug::set( $message );
|
397 |
+
|
398 |
+
return false;
|
399 |
+
}
|
400 |
+
|
401 |
+
return $is_sent;
|
402 |
+
}
|
403 |
+
|
404 |
+
/**
|
405 |
+
* Get a Mailgun-specific response with a helpful error.
|
406 |
+
*
|
407 |
+
* @since 1.2.0
|
408 |
+
*
|
409 |
+
* @return string
|
410 |
+
*/
|
411 |
+
protected function get_response_error() {
|
412 |
+
|
413 |
+
$body = (array) wp_remote_retrieve_body( $this->response );
|
414 |
+
|
415 |
+
$error_text = array();
|
416 |
+
|
417 |
+
if ( ! empty( $body['message'] ) ) {
|
418 |
+
if ( is_string( $body['message'] ) ) {
|
419 |
+
$error_text[] = $body['message'];
|
420 |
+
} else {
|
421 |
+
$error_text[] = \json_encode( $body['message'] );
|
422 |
+
}
|
423 |
+
} elseif ( ! empty( $body[0] ) ) {
|
424 |
+
if ( is_string( $body[0] ) ) {
|
425 |
+
$error_text[] = $body[0];
|
426 |
+
} else {
|
427 |
+
$error_text[] = \json_encode( $body[0] );
|
428 |
+
}
|
429 |
+
}
|
430 |
+
|
431 |
+
return implode( '<br>', array_map( 'esc_textarea', $error_text ) );
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* @inheritdoc
|
436 |
+
*/
|
437 |
+
public function get_debug_info() {
|
438 |
+
|
439 |
+
$mg_text = array();
|
440 |
+
|
441 |
+
$options = new \WPMailSMTP\Options();
|
442 |
+
$mailgun = $options->get_group( 'mailgun' );
|
443 |
+
|
444 |
+
$mg_text[] = '<strong>Api Key / Domain:</strong> ' . ( ! empty( $mailgun['api_key'] ) && ! empty( $mailgun['domain'] ) ? 'Yes' : 'No' );
|
445 |
+
|
446 |
+
return implode( '<br>', $mg_text );
|
447 |
+
}
|
448 |
+
|
449 |
+
/**
|
450 |
+
* @inheritdoc
|
451 |
+
*/
|
452 |
+
public function is_mailer_complete() {
|
453 |
+
|
454 |
+
$options = $this->options->get_group( $this->mailer );
|
455 |
+
|
456 |
+
// API key is the only required option.
|
457 |
+
if (
|
458 |
+
! empty( $options['api_key'] ) &&
|
459 |
+
! empty( $options['domain'] )
|
460 |
+
) {
|
461 |
+
return true;
|
462 |
+
}
|
463 |
+
|
464 |
+
return false;
|
465 |
+
}
|
466 |
+
}
|
src/Providers/PepipostAPI/Mailer.php
CHANGED
@@ -2,14 +2,16 @@
|
|
2 |
|
3 |
namespace WPMailSMTP\Providers\PepipostAPI;
|
4 |
|
|
|
|
|
5 |
use WPMailSMTP\Providers\MailerAbstract;
|
6 |
use WPMailSMTP\WP;
|
7 |
|
8 |
/**
|
9 |
-
*
|
10 |
-
* In the future we may rewrite the class to use the native Pepipost API.
|
11 |
*
|
12 |
-
* @since 1.8.0
|
|
|
13 |
*/
|
14 |
class Mailer extends MailerAbstract {
|
15 |
|
@@ -26,24 +28,26 @@ class Mailer extends MailerAbstract {
|
|
26 |
* URL to make an API request to.
|
27 |
*
|
28 |
* @since 1.8.0
|
|
|
29 |
*
|
30 |
* @var string
|
31 |
*/
|
32 |
-
protected $url = 'https://
|
33 |
|
34 |
/**
|
35 |
* Mailer constructor.
|
36 |
*
|
37 |
* @since 1.8.0
|
|
|
38 |
*
|
39 |
-
* @param
|
40 |
*/
|
41 |
public function __construct( $phpmailer ) {
|
42 |
|
43 |
-
// We want to prefill everything from
|
44 |
parent::__construct( $phpmailer );
|
45 |
|
46 |
-
$this->set_header( '
|
47 |
$this->set_header( 'content-type', 'application/json' );
|
48 |
}
|
49 |
|
@@ -67,6 +71,7 @@ class Mailer extends MailerAbstract {
|
|
67 |
* Set the FROM header of the email.
|
68 |
*
|
69 |
* @since 1.8.0
|
|
|
70 |
*
|
71 |
* @param string $email From mail.
|
72 |
* @param string $name From name.
|
@@ -84,9 +89,9 @@ class Mailer extends MailerAbstract {
|
|
84 |
}
|
85 |
|
86 |
$this->set_body_param(
|
87 |
-
|
88 |
'from' => $from,
|
89 |
-
|
90 |
);
|
91 |
}
|
92 |
|
@@ -94,6 +99,7 @@ class Mailer extends MailerAbstract {
|
|
94 |
* Set the names/emails of people who will receive the email.
|
95 |
*
|
96 |
* @since 1.8.0
|
|
|
97 |
*
|
98 |
* @param array $recipients List of recipients: cc/bcc/to.
|
99 |
*/
|
@@ -103,62 +109,29 @@ class Mailer extends MailerAbstract {
|
|
103 |
return;
|
104 |
}
|
105 |
|
106 |
-
|
107 |
-
$default = array( 'to', 'cc', 'bcc' );
|
108 |
-
$data = array();
|
109 |
|
110 |
-
|
111 |
-
|
112 |
-
! in_array( $type, $default, true ) ||
|
113 |
-
empty( $emails ) ||
|
114 |
-
! is_array( $emails )
|
115 |
-
) {
|
116 |
-
continue;
|
117 |
-
}
|
118 |
-
|
119 |
-
$data[ $type ] = array();
|
120 |
-
|
121 |
-
// Iterate over all emails for each type.
|
122 |
-
// There might be multiple cc/to/bcc emails.
|
123 |
-
foreach ( $emails as $email ) {
|
124 |
-
$holder = array();
|
125 |
-
$addr = isset( $email[0] ) ? $email[0] : false;
|
126 |
-
$name = isset( $email[1] ) ? $email[1] : false;
|
127 |
-
|
128 |
-
if ( ! filter_var( $addr, FILTER_VALIDATE_EMAIL ) ) {
|
129 |
-
continue;
|
130 |
-
}
|
131 |
-
|
132 |
-
$holder['email'] = $addr;
|
133 |
-
if ( ! empty( $name ) ) {
|
134 |
-
$holder['name'] = $name;
|
135 |
-
}
|
136 |
-
|
137 |
-
array_push( $data[ $type ], $holder );
|
138 |
-
}
|
139 |
}
|
140 |
|
141 |
-
if ( ! empty( $
|
142 |
-
$this->
|
143 |
-
|
144 |
-
'personalizations' => array( $data ),
|
145 |
-
)
|
146 |
-
);
|
147 |
|
148 |
-
|
149 |
-
|
150 |
-
$bcc['mail_settings']['bcc']['email'] = $data['bcc'][0]['email'];
|
151 |
-
$this->set_body_param(
|
152 |
-
$bcc
|
153 |
-
);
|
154 |
-
}
|
155 |
}
|
|
|
|
|
156 |
}
|
157 |
|
158 |
/**
|
159 |
* Set the email content.
|
|
|
160 |
*
|
161 |
* @since 1.8.0
|
|
|
162 |
*
|
163 |
* @param array|string $content Email content.
|
164 |
*/
|
@@ -168,117 +141,100 @@ class Mailer extends MailerAbstract {
|
|
168 |
return;
|
169 |
}
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
$default = array( 'text', 'html' );
|
174 |
-
$data = array();
|
175 |
-
|
176 |
-
foreach ( $content as $type => $body ) {
|
177 |
-
if (
|
178 |
-
! in_array( $type, $default, true ) ||
|
179 |
-
empty( $body )
|
180 |
-
) {
|
181 |
-
continue;
|
182 |
-
}
|
183 |
-
|
184 |
-
$content_type = 'text/plain';
|
185 |
-
$content_value = $body;
|
186 |
|
187 |
-
|
188 |
-
|
189 |
-
} else {
|
190 |
-
$content_value = nl2br( $content_value );
|
191 |
-
}
|
192 |
|
193 |
-
|
194 |
-
|
195 |
-
'value' => $content_value,
|
196 |
-
);
|
197 |
}
|
198 |
-
|
199 |
-
$this->set_body_param(
|
200 |
-
array(
|
201 |
-
'content' => $data,
|
202 |
-
)
|
203 |
-
);
|
204 |
} else {
|
205 |
-
$data['type'] = 'text/html';
|
206 |
-
$data['value'] = $content;
|
207 |
|
208 |
-
if (
|
209 |
-
$
|
210 |
-
|
|
|
211 |
}
|
212 |
-
|
213 |
-
$this->set_body_param(
|
214 |
-
array(
|
215 |
-
'content' => array( $data ),
|
216 |
-
)
|
217 |
-
);
|
218 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
}
|
220 |
|
221 |
/**
|
222 |
-
* Redefine the way custom headers are processed for this mailer - they should be in body.
|
223 |
*
|
224 |
* @since 1.8.0
|
|
|
225 |
*
|
226 |
-
* @param array $headers
|
227 |
*/
|
228 |
public function set_headers( $headers ) {
|
229 |
|
|
|
|
|
230 |
foreach ( $headers as $header ) {
|
231 |
$name = isset( $header[0] ) ? $header[0] : false;
|
232 |
$value = isset( $header[1] ) ? $header[1] : false;
|
233 |
|
234 |
-
$
|
235 |
}
|
236 |
|
237 |
// Add custom PHPMailer-specific header.
|
238 |
-
$
|
|
|
|
|
|
|
|
|
239 |
}
|
240 |
|
241 |
/**
|
242 |
-
*
|
|
|
243 |
*
|
244 |
* @since 1.8.0
|
|
|
245 |
*
|
246 |
-
* @param
|
247 |
-
* @param string $value
|
248 |
*/
|
249 |
-
public function
|
250 |
|
251 |
-
|
252 |
-
if ( empty( $name ) ) {
|
253 |
return;
|
254 |
}
|
255 |
|
256 |
-
$
|
257 |
-
|
258 |
-
$headers[ $name ] = WP::sanitize_value( $value );
|
259 |
|
260 |
-
$
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
|
|
|
|
265 |
}
|
266 |
|
267 |
/**
|
268 |
-
*
|
269 |
-
* Doesn't handle exceeding the limits etc, as this is done and reported by SendGrid API.
|
270 |
*
|
271 |
-
* @since
|
|
|
|
|
272 |
*
|
273 |
-
* @
|
274 |
*/
|
275 |
-
|
276 |
-
|
277 |
-
if ( empty( $attachments ) ) {
|
278 |
-
return;
|
279 |
-
}
|
280 |
|
281 |
-
$data =
|
282 |
|
283 |
foreach ( $attachments as $attachment ) {
|
284 |
$file = false;
|
@@ -291,8 +247,7 @@ class Mailer extends MailerAbstract {
|
|
291 |
if ( is_file( $attachment[0] ) && is_readable( $attachment[0] ) ) {
|
292 |
$file = file_get_contents( $attachment[0] ); // phpcs:ignore
|
293 |
}
|
294 |
-
}
|
295 |
-
catch ( \Exception $e ) {
|
296 |
$file = false;
|
297 |
}
|
298 |
|
@@ -300,27 +255,21 @@ class Mailer extends MailerAbstract {
|
|
300 |
continue;
|
301 |
}
|
302 |
|
303 |
-
$data[] =
|
304 |
-
'content'
|
305 |
-
'
|
306 |
-
|
307 |
-
'disposition' => $attachment[6],
|
308 |
-
);
|
309 |
}
|
310 |
|
311 |
-
|
312 |
-
$this->set_body_param(
|
313 |
-
array(
|
314 |
-
'attachments' => $data,
|
315 |
-
)
|
316 |
-
);
|
317 |
-
}
|
318 |
}
|
319 |
|
320 |
/**
|
321 |
* Set the reply-to property of the email.
|
|
|
322 |
*
|
323 |
* @since 1.8.0
|
|
|
324 |
*
|
325 |
* @param array $reply_to Name/email for reply-to feature.
|
326 |
*/
|
@@ -330,54 +279,44 @@ class Mailer extends MailerAbstract {
|
|
330 |
return;
|
331 |
}
|
332 |
|
333 |
-
$
|
334 |
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
! is_array( $emails )
|
339 |
-
) {
|
340 |
-
continue;
|
341 |
-
}
|
342 |
-
|
343 |
-
$addr = isset( $emails[0] ) ? $emails[0] : false;
|
344 |
-
$name = isset( $emails[1] ) ? $emails[1] : false;
|
345 |
|
346 |
-
|
347 |
-
continue;
|
348 |
-
}
|
349 |
|
350 |
-
|
351 |
-
|
352 |
-
$data['name'] = $name;
|
353 |
-
}
|
354 |
}
|
355 |
|
356 |
-
if ( ! empty( $
|
357 |
$this->set_body_param(
|
358 |
-
|
359 |
-
'reply_to' => $
|
360 |
-
|
361 |
);
|
362 |
}
|
363 |
}
|
364 |
|
365 |
/**
|
366 |
-
* Pepipost doesn't support sender or return_path params.
|
367 |
* So we do nothing.
|
368 |
*
|
369 |
* @since 1.8.0
|
370 |
*
|
371 |
-
* @param string $from_email
|
372 |
*/
|
373 |
public function set_return_path( $from_email ) {}
|
374 |
|
375 |
/**
|
376 |
* Get a Pepipost-specific response with a helpful error.
|
377 |
*
|
378 |
-
* @see https://developers.pepipost.com/
|
379 |
*
|
380 |
* @since 1.8.0
|
|
|
381 |
*
|
382 |
* @return string
|
383 |
*/
|
@@ -385,27 +324,26 @@ class Mailer extends MailerAbstract {
|
|
385 |
|
386 |
$body = (array) wp_remote_retrieve_body( $this->response );
|
387 |
|
388 |
-
$
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
}
|
405 |
}
|
406 |
}
|
407 |
|
408 |
-
return
|
409 |
}
|
410 |
|
411 |
/**
|
@@ -440,4 +378,98 @@ class Mailer extends MailerAbstract {
|
|
440 |
|
441 |
return false;
|
442 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
}
|
2 |
|
3 |
namespace WPMailSMTP\Providers\PepipostAPI;
|
4 |
|
5 |
+
use WPMailSMTP\MailCatcherInterface;
|
6 |
+
use WPMailSMTP\Options as PluginOptions;
|
7 |
use WPMailSMTP\Providers\MailerAbstract;
|
8 |
use WPMailSMTP\WP;
|
9 |
|
10 |
/**
|
11 |
+
* Pepipost API mailer.
|
|
|
12 |
*
|
13 |
+
* @since 1.8.0 Pepipost - SendGrid migration API.
|
14 |
+
* @since 2.2.0 Rewrote this class to use native Pepipost API.
|
15 |
*/
|
16 |
class Mailer extends MailerAbstract {
|
17 |
|
28 |
* URL to make an API request to.
|
29 |
*
|
30 |
* @since 1.8.0
|
31 |
+
* @since 2.2.0 Changed the API url to Pepipost API v5.
|
32 |
*
|
33 |
* @var string
|
34 |
*/
|
35 |
+
protected $url = 'https://api.pepipost.com/v5/mail/send';
|
36 |
|
37 |
/**
|
38 |
* Mailer constructor.
|
39 |
*
|
40 |
* @since 1.8.0
|
41 |
+
* @since 2.2.0 Changed the API key header (API v5 changes).
|
42 |
*
|
43 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher instance.
|
44 |
*/
|
45 |
public function __construct( $phpmailer ) {
|
46 |
|
47 |
+
// We want to prefill everything from MailCatcher class, which extends PHPMailer.
|
48 |
parent::__construct( $phpmailer );
|
49 |
|
50 |
+
$this->set_header( 'api_key', $this->options->get( $this->mailer, 'api_key' ) );
|
51 |
$this->set_header( 'content-type', 'application/json' );
|
52 |
}
|
53 |
|
71 |
* Set the FROM header of the email.
|
72 |
*
|
73 |
* @since 1.8.0
|
74 |
+
* @since 2.2.0 Changed the attribute names (API v5 changes).
|
75 |
*
|
76 |
* @param string $email From mail.
|
77 |
* @param string $name From name.
|
89 |
}
|
90 |
|
91 |
$this->set_body_param(
|
92 |
+
[
|
93 |
'from' => $from,
|
94 |
+
]
|
95 |
);
|
96 |
}
|
97 |
|
99 |
* Set the names/emails of people who will receive the email.
|
100 |
*
|
101 |
* @since 1.8.0
|
102 |
+
* @since 2.2.0 change the attribute names (API v5 changes).
|
103 |
*
|
104 |
* @param array $recipients List of recipients: cc/bcc/to.
|
105 |
*/
|
109 |
return;
|
110 |
}
|
111 |
|
112 |
+
$data = [];
|
|
|
|
|
113 |
|
114 |
+
if ( ! empty( $recipients['to'] ) ) {
|
115 |
+
$data['to'] = $this->prepare_list_of_to_emails( $recipients['to'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
+
if ( ! empty( $recipients['cc'] ) ) {
|
119 |
+
$data['cc'] = $this->prepare_list_of_emails( $recipients['cc'] );
|
120 |
+
}
|
|
|
|
|
|
|
121 |
|
122 |
+
if ( ! empty( $recipients['bcc'] ) ) {
|
123 |
+
$data['bcc'] = $this->prepare_list_of_emails( $recipients['bcc'] );
|
|
|
|
|
|
|
|
|
|
|
124 |
}
|
125 |
+
|
126 |
+
$this->set_body_personalizations( $data );
|
127 |
}
|
128 |
|
129 |
/**
|
130 |
* Set the email content.
|
131 |
+
* Pepipost API only supports HTML emails, so we have to replace new lines in plain text emails with <br>.
|
132 |
*
|
133 |
* @since 1.8.0
|
134 |
+
* @since 2.2.0 Change the way the content is prepared (API v5 changes).
|
135 |
*
|
136 |
* @param array|string $content Email content.
|
137 |
*/
|
141 |
return;
|
142 |
}
|
143 |
|
144 |
+
$html = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
+
if ( ! is_array( $content ) ) {
|
147 |
+
$html = $content;
|
|
|
|
|
|
|
148 |
|
149 |
+
if ( $this->phpmailer->ContentType === 'text/plain' ) {
|
150 |
+
$html = nl2br( $html );
|
|
|
|
|
151 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
} else {
|
|
|
|
|
153 |
|
154 |
+
if ( ! empty( $content['html'] ) ) {
|
155 |
+
$html = $content['html'];
|
156 |
+
} elseif ( ! empty( $content['text'] ) ) {
|
157 |
+
$html = nl2br( $content['text'] );
|
158 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
}
|
160 |
+
|
161 |
+
$this->set_body_param(
|
162 |
+
[
|
163 |
+
'content' => [
|
164 |
+
[
|
165 |
+
'type' => 'html',
|
166 |
+
'value' => $html,
|
167 |
+
],
|
168 |
+
],
|
169 |
+
]
|
170 |
+
);
|
171 |
}
|
172 |
|
173 |
/**
|
174 |
+
* Redefine the way custom headers are processed for this mailer - they should be in body (personalizations).
|
175 |
*
|
176 |
* @since 1.8.0
|
177 |
+
* @since 2.2.0 Change the way the headers are processed (API v5 changes).
|
178 |
*
|
179 |
+
* @param array $headers The email headers to be applied.
|
180 |
*/
|
181 |
public function set_headers( $headers ) {
|
182 |
|
183 |
+
$valid_headers = [];
|
184 |
+
|
185 |
foreach ( $headers as $header ) {
|
186 |
$name = isset( $header[0] ) ? $header[0] : false;
|
187 |
$value = isset( $header[1] ) ? $header[1] : false;
|
188 |
|
189 |
+
$valid_headers[ $name ] = WP::sanitize_value( $value );
|
190 |
}
|
191 |
|
192 |
// Add custom PHPMailer-specific header.
|
193 |
+
$valid_headers['X-Mailer'] = WP::sanitize_value( 'WPMailSMTP/Mailer/' . $this->mailer . ' ' . WPMS_PLUGIN_VER );
|
194 |
+
|
195 |
+
if ( ! empty( $valid_headers ) ) {
|
196 |
+
$this->set_body_personalizations( [ 'headers' => $valid_headers ] );
|
197 |
+
}
|
198 |
}
|
199 |
|
200 |
/**
|
201 |
+
* Pepipost API accepts an array of files content in body, so we will include all files and send.
|
202 |
+
* Doesn't handle exceeding the limits etc, as this will be reported by the API response.
|
203 |
*
|
204 |
* @since 1.8.0
|
205 |
+
* @since 2.2.0 Change the way the attachments are processed (API v5 changes).
|
206 |
*
|
207 |
+
* @param array $attachments The list of attachments data.
|
|
|
208 |
*/
|
209 |
+
public function set_attachments( $attachments ) {
|
210 |
|
211 |
+
if ( empty( $attachments ) ) {
|
|
|
212 |
return;
|
213 |
}
|
214 |
|
215 |
+
$data = $this->prepare_attachments( $attachments );
|
|
|
|
|
216 |
|
217 |
+
if ( ! empty( $data ) ) {
|
218 |
+
$this->set_body_param(
|
219 |
+
[
|
220 |
+
'attachments' => $data,
|
221 |
+
]
|
222 |
+
);
|
223 |
+
}
|
224 |
}
|
225 |
|
226 |
/**
|
227 |
+
* Prepare the attachments data for Pepipost API.
|
|
|
228 |
*
|
229 |
+
* @since 2.2.0
|
230 |
+
*
|
231 |
+
* @param array $attachments Array of attachments.
|
232 |
*
|
233 |
+
* @return array
|
234 |
*/
|
235 |
+
protected function prepare_attachments( $attachments ) {
|
|
|
|
|
|
|
|
|
236 |
|
237 |
+
$data = [];
|
238 |
|
239 |
foreach ( $attachments as $attachment ) {
|
240 |
$file = false;
|
247 |
if ( is_file( $attachment[0] ) && is_readable( $attachment[0] ) ) {
|
248 |
$file = file_get_contents( $attachment[0] ); // phpcs:ignore
|
249 |
}
|
250 |
+
} catch ( \Exception $e ) {
|
|
|
251 |
$file = false;
|
252 |
}
|
253 |
|
255 |
continue;
|
256 |
}
|
257 |
|
258 |
+
$data[] = [
|
259 |
+
'content' => base64_encode( $file ), // phpcs:ignore
|
260 |
+
'name' => $attachment[2],
|
261 |
+
];
|
|
|
|
|
262 |
}
|
263 |
|
264 |
+
return $data;
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
}
|
266 |
|
267 |
/**
|
268 |
* Set the reply-to property of the email.
|
269 |
+
* Pepipost API only supports one reply_to email, so we take the first one and discard the rest.
|
270 |
*
|
271 |
* @since 1.8.0
|
272 |
+
* @since 2.2.0 Change the way the reply_to is processed (API v5 changes).
|
273 |
*
|
274 |
* @param array $reply_to Name/email for reply-to feature.
|
275 |
*/
|
279 |
return;
|
280 |
}
|
281 |
|
282 |
+
$email_array = array_shift( $reply_to );
|
283 |
|
284 |
+
if ( empty( $email_array[0] ) ) {
|
285 |
+
return;
|
286 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
|
288 |
+
$email = $email_array[0];
|
|
|
|
|
289 |
|
290 |
+
if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
|
291 |
+
return;
|
|
|
|
|
292 |
}
|
293 |
|
294 |
+
if ( ! empty( $email ) ) {
|
295 |
$this->set_body_param(
|
296 |
+
[
|
297 |
+
'reply_to' => $email,
|
298 |
+
]
|
299 |
);
|
300 |
}
|
301 |
}
|
302 |
|
303 |
/**
|
304 |
+
* Pepipost API doesn't support sender or return_path params.
|
305 |
* So we do nothing.
|
306 |
*
|
307 |
* @since 1.8.0
|
308 |
*
|
309 |
+
* @param string $from_email The from email address.
|
310 |
*/
|
311 |
public function set_return_path( $from_email ) {}
|
312 |
|
313 |
/**
|
314 |
* Get a Pepipost-specific response with a helpful error.
|
315 |
*
|
316 |
+
* @see https://developers.pepipost.com/email-api/email-api/sendemail#responses
|
317 |
*
|
318 |
* @since 1.8.0
|
319 |
+
* @since 2.2.0 Change the way the response error message is processed (API v5 changes).
|
320 |
*
|
321 |
* @return string
|
322 |
*/
|
324 |
|
325 |
$body = (array) wp_remote_retrieve_body( $this->response );
|
326 |
|
327 |
+
$error = ! empty( $body['error'] ) ? $body['error'] : '';
|
328 |
+
$info = ! empty( $body['info'] ) ? $body['info'] : '';
|
329 |
+
$message = '';
|
330 |
+
|
331 |
+
if ( is_string( $error ) ) {
|
332 |
+
$message = $error . ( ( ! empty( $info ) ) ? ' - ' . $info : '' );
|
333 |
+
} elseif ( is_array( $error ) ) {
|
334 |
+
$message = '';
|
335 |
+
|
336 |
+
foreach ( $error as $item ) {
|
337 |
+
$message .= sprintf(
|
338 |
+
'%1$s (%2$s - %3$s)',
|
339 |
+
! empty( $item->description ) ? $item->description : esc_html__( 'General error', 'wp-mail-smtp' ),
|
340 |
+
! empty( $item->message ) ? $item->message : esc_html__( 'Error', 'wp-mail-smtp' ),
|
341 |
+
! empty( $item->field ) ? $item->field : ''
|
342 |
+
) . PHP_EOL;
|
|
|
343 |
}
|
344 |
}
|
345 |
|
346 |
+
return $message;
|
347 |
}
|
348 |
|
349 |
/**
|
378 |
|
379 |
return false;
|
380 |
}
|
381 |
+
|
382 |
+
/**
|
383 |
+
* A special set method for Pepipost API "personalizations" attribute.
|
384 |
+
* We are sending one email at a time, so we should set just the first
|
385 |
+
* personalization item.
|
386 |
+
*
|
387 |
+
* Mainly used in set_headers and set_recipients.
|
388 |
+
*
|
389 |
+
* @see https://developers.pepipost.com/email-api/email-api/sendemail
|
390 |
+
*
|
391 |
+
* @since 2.2.0
|
392 |
+
*
|
393 |
+
* @param array $data The personalizations array of data (array of arrays).
|
394 |
+
*/
|
395 |
+
private function set_body_personalizations( $data ) {
|
396 |
+
|
397 |
+
if ( empty( $data ) ) {
|
398 |
+
return;
|
399 |
+
}
|
400 |
+
|
401 |
+
if ( ! empty( $this->body['personalizations'][0] ) ) {
|
402 |
+
$this->body['personalizations'][0] = PluginOptions::array_merge_recursive(
|
403 |
+
$this->body['personalizations'][0],
|
404 |
+
$data
|
405 |
+
);
|
406 |
+
} else {
|
407 |
+
$this->set_body_param(
|
408 |
+
[
|
409 |
+
'personalizations' => [
|
410 |
+
$data,
|
411 |
+
],
|
412 |
+
]
|
413 |
+
);
|
414 |
+
}
|
415 |
+
}
|
416 |
+
|
417 |
+
/**
|
418 |
+
* Prepare list of emails by filtering valid emails first.
|
419 |
+
*
|
420 |
+
* @since 2.2.0
|
421 |
+
*
|
422 |
+
* @param array $items A 2D array of email and name pair items (0 = email, 1 = name).
|
423 |
+
*
|
424 |
+
* @return array 2D array with 'email' keys.
|
425 |
+
*/
|
426 |
+
private function prepare_list_of_emails( $items ) {
|
427 |
+
|
428 |
+
$valid_emails = array_filter(
|
429 |
+
array_column( $items, 0 ),
|
430 |
+
function ( $email ) {
|
431 |
+
return filter_var( $email, FILTER_VALIDATE_EMAIL );
|
432 |
+
}
|
433 |
+
);
|
434 |
+
|
435 |
+
return array_map(
|
436 |
+
function( $email ) {
|
437 |
+
return [ 'email' => $email ];
|
438 |
+
},
|
439 |
+
$valid_emails
|
440 |
+
);
|
441 |
+
}
|
442 |
+
|
443 |
+
/**
|
444 |
+
* Prepare list of TO emails by filtering valid emails first
|
445 |
+
* and returning array of arrays (email, name).
|
446 |
+
*
|
447 |
+
* @since 2.2.0
|
448 |
+
*
|
449 |
+
* @param array $items A 2D array of email and name pair items (0 = email, 1 = name).
|
450 |
+
*
|
451 |
+
* @return array 2D array with 'email' and optional 'name' attributes.
|
452 |
+
*/
|
453 |
+
private function prepare_list_of_to_emails( $items ) {
|
454 |
+
|
455 |
+
$data = [];
|
456 |
+
|
457 |
+
foreach ( $items as $item ) {
|
458 |
+
$email = filter_var( $item[0], FILTER_VALIDATE_EMAIL );
|
459 |
+
|
460 |
+
if ( empty( $email ) ) {
|
461 |
+
continue;
|
462 |
+
}
|
463 |
+
|
464 |
+
$pair['email'] = $email;
|
465 |
+
|
466 |
+
if ( ! empty( $item[1] ) ) {
|
467 |
+
$pair['name'] = $item[1];
|
468 |
+
}
|
469 |
+
|
470 |
+
$data[] = $pair;
|
471 |
+
}
|
472 |
+
|
473 |
+
return $data;
|
474 |
+
}
|
475 |
}
|
src/Providers/SMTPcom/Mailer.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
namespace WPMailSMTP\Providers\SMTPcom;
|
4 |
|
|
|
5 |
use WPMailSMTP\Providers\MailerAbstract;
|
6 |
use WPMailSMTP\WP;
|
7 |
|
@@ -37,11 +38,11 @@ class Mailer extends MailerAbstract {
|
|
37 |
*
|
38 |
* @since 2.0.0
|
39 |
*
|
40 |
-
* @param
|
41 |
*/
|
42 |
public function __construct( $phpmailer ) {
|
43 |
|
44 |
-
// We want to prefill everything from
|
45 |
parent::__construct( $phpmailer );
|
46 |
|
47 |
// Set mailer specific headers.
|
2 |
|
3 |
namespace WPMailSMTP\Providers\SMTPcom;
|
4 |
|
5 |
+
use WPMailSMTP\MailCatcherInterface;
|
6 |
use WPMailSMTP\Providers\MailerAbstract;
|
7 |
use WPMailSMTP\WP;
|
8 |
|
38 |
*
|
39 |
* @since 2.0.0
|
40 |
*
|
41 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
42 |
*/
|
43 |
public function __construct( $phpmailer ) {
|
44 |
|
45 |
+
// We want to prefill everything from MailCatcher class, which extends PHPMailer.
|
46 |
parent::__construct( $phpmailer );
|
47 |
|
48 |
// Set mailer specific headers.
|
src/Providers/Sendgrid/Mailer.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
namespace WPMailSMTP\Providers\Sendgrid;
|
4 |
|
|
|
5 |
use WPMailSMTP\Providers\MailerAbstract;
|
6 |
use WPMailSMTP\WP;
|
7 |
|
@@ -35,11 +36,11 @@ class Mailer extends MailerAbstract {
|
|
35 |
*
|
36 |
* @since 1.0.0
|
37 |
*
|
38 |
-
* @param
|
39 |
*/
|
40 |
public function __construct( $phpmailer ) {
|
41 |
|
42 |
-
// We want to prefill everything from
|
43 |
parent::__construct( $phpmailer );
|
44 |
|
45 |
$this->set_header( 'Authorization', 'Bearer ' . $this->options->get( $this->mailer, 'api_key' ) );
|
2 |
|
3 |
namespace WPMailSMTP\Providers\Sendgrid;
|
4 |
|
5 |
+
use WPMailSMTP\MailCatcherInterface;
|
6 |
use WPMailSMTP\Providers\MailerAbstract;
|
7 |
use WPMailSMTP\WP;
|
8 |
|
36 |
*
|
37 |
* @since 1.0.0
|
38 |
*
|
39 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
40 |
*/
|
41 |
public function __construct( $phpmailer ) {
|
42 |
|
43 |
+
// We want to prefill everything from MailCatcher class, which extends PHPMailer.
|
44 |
parent::__construct( $phpmailer );
|
45 |
|
46 |
$this->set_header( 'Authorization', 'Bearer ' . $this->options->get( $this->mailer, 'api_key' ) );
|
src/Providers/Sendinblue/Mailer.php
CHANGED
@@ -1,393 +1,391 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WPMailSMTP\Providers\Sendinblue;
|
4 |
-
|
5 |
-
use WPMailSMTP\Debug;
|
6 |
-
use WPMailSMTP\
|
7 |
-
use WPMailSMTP\
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
*
|
12 |
-
*
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
*
|
19 |
-
*
|
20 |
-
*
|
21 |
-
*
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
*
|
28 |
-
*
|
29 |
-
*
|
30 |
-
*
|
31 |
-
*
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
*
|
38 |
-
*
|
39 |
-
*
|
40 |
-
*
|
41 |
-
*
|
42 |
-
*
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
*
|
51 |
-
*
|
52 |
-
*
|
53 |
-
*
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
*
|
67 |
-
*
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
*
|
79 |
-
*
|
80 |
-
*
|
81 |
-
*
|
82 |
-
* @param string $
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
'
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
*
|
99 |
-
*
|
100 |
-
*
|
101 |
-
*
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
$
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
//
|
127 |
-
|
128 |
-
|
129 |
-
$
|
130 |
-
$
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
*
|
153 |
-
*
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
*
|
163 |
-
*
|
164 |
-
*
|
165 |
-
*
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
*
|
194 |
-
*
|
195 |
-
*
|
196 |
-
*
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
*
|
205 |
-
*
|
206 |
-
*
|
207 |
-
*
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
$
|
220 |
-
$
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
*
|
242 |
-
*
|
243 |
-
*
|
244 |
-
*
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
*
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
'
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
*
|
286 |
-
*
|
287 |
-
*
|
288 |
-
*
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
*
|
298 |
-
*
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
catch ( \SendinBlue\Client\ApiException $e ) {
|
310 |
-
$error = json_decode( $e->getResponseBody() );
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
);
|
316 |
-
}
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
*
|
330 |
-
*
|
331 |
-
*
|
332 |
-
*
|
333 |
-
* @
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
*
|
344 |
-
*
|
345 |
-
* @
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
$
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
* @
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
* @
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
}
|
393 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPMailSMTP\Providers\Sendinblue;
|
4 |
+
|
5 |
+
use WPMailSMTP\Debug;
|
6 |
+
use WPMailSMTP\MailCatcherInterface;
|
7 |
+
use WPMailSMTP\Providers\MailerAbstract;
|
8 |
+
use WPMailSMTP\WP;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Class Mailer.
|
12 |
+
*
|
13 |
+
* @since 1.6.0
|
14 |
+
*/
|
15 |
+
class Mailer extends MailerAbstract {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Which response code from HTTP provider is considered to be successful?
|
19 |
+
*
|
20 |
+
* @since 1.6.0
|
21 |
+
*
|
22 |
+
* @var int
|
23 |
+
*/
|
24 |
+
protected $email_sent_code = 201;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* URL to make an API request to.
|
28 |
+
* Not actually used, because we use a lib to make requests.
|
29 |
+
*
|
30 |
+
* @since 1.6.0
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $url = 'https://api.sendinblue.com/v3';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* The list of allowed attachment files extensions.
|
38 |
+
*
|
39 |
+
* @see https://developers.sendinblue.com/reference#sendTransacEmail_attachment__title
|
40 |
+
*
|
41 |
+
* @since 1.6.0
|
42 |
+
*
|
43 |
+
* @var array
|
44 |
+
*/
|
45 |
+
// @formatter:off
|
46 |
+
protected $allowed_attach_ext = array( 'xlsx', 'xls', 'ods', 'docx', 'docm', 'doc', 'csv', 'pdf', 'txt', 'gif', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'rtf', 'bmp', 'cgm', 'css', 'shtml', 'html', 'htm', 'zip', 'xml', 'ppt', 'pptx', 'tar', 'ez', 'ics', 'mobi', 'msg', 'pub', 'eps', 'odt', 'mp3', 'm4a', 'm4v', 'wma', 'ogg', 'flac', 'wav', 'aif', 'aifc', 'aiff', 'mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', 'wmv' );
|
47 |
+
// @formatter:on
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Mailer constructor.
|
51 |
+
*
|
52 |
+
* @since 1.6.0
|
53 |
+
*
|
54 |
+
* @param MailCatcherInterface $phpmailer The MailCatcher object.
|
55 |
+
*/
|
56 |
+
public function __construct( $phpmailer ) {
|
57 |
+
|
58 |
+
parent::__construct( $phpmailer );
|
59 |
+
|
60 |
+
if ( ! $this->is_php_compatible() ) {
|
61 |
+
return;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @inheritDoc
|
67 |
+
*
|
68 |
+
* @since 1.6.0
|
69 |
+
*/
|
70 |
+
public function set_header( $name, $value ) {
|
71 |
+
|
72 |
+
$name = sanitize_text_field( $name );
|
73 |
+
|
74 |
+
$this->body['headers'][ $name ] = WP::sanitize_value( $value );
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Set the From information for an email.
|
79 |
+
*
|
80 |
+
* @since 1.6.0
|
81 |
+
*
|
82 |
+
* @param string $email
|
83 |
+
* @param string $name
|
84 |
+
*/
|
85 |
+
public function set_from( $email, $name ) {
|
86 |
+
|
87 |
+
if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
|
88 |
+
return;
|
89 |
+
}
|
90 |
+
|
91 |
+
$this->body['sender'] = array(
|
92 |
+
'email' => $email,
|
93 |
+
'name' => ! empty( $name ) ? WP::sanitize_value( $name ) : '',
|
94 |
+
);
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Set email recipients: to, cc, bcc.
|
99 |
+
*
|
100 |
+
* @since 1.6.0
|
101 |
+
*
|
102 |
+
* @param array $recipients
|
103 |
+
*/
|
104 |
+
public function set_recipients( $recipients ) {
|
105 |
+
|
106 |
+
if ( empty( $recipients ) ) {
|
107 |
+
return;
|
108 |
+
}
|
109 |
+
|
110 |
+
// Allow for now only these recipient types.
|
111 |
+
$default = array( 'to', 'cc', 'bcc' );
|
112 |
+
$data = array();
|
113 |
+
|
114 |
+
foreach ( $recipients as $type => $emails ) {
|
115 |
+
|
116 |
+
if (
|
117 |
+
! in_array( $type, $default, true ) ||
|
118 |
+
empty( $emails ) ||
|
119 |
+
! is_array( $emails )
|
120 |
+
) {
|
121 |
+
continue;
|
122 |
+
}
|
123 |
+
|
124 |
+
$data[ $type ] = array();
|
125 |
+
|
126 |
+
// Iterate over all emails for each type.
|
127 |
+
// There might be multiple cc/to/bcc emails.
|
128 |
+
foreach ( $emails as $email ) {
|
129 |
+
$holder = array();
|
130 |
+
$addr = isset( $email[0] ) ? $email[0] : false;
|
131 |
+
$name = isset( $email[1] ) ? $email[1] : false;
|
132 |
+
|
133 |
+
if ( ! filter_var( $addr, FILTER_VALIDATE_EMAIL ) ) {
|
134 |
+
continue;
|
135 |
+
}
|
136 |
+
|
137 |
+
$holder['email'] = $addr;
|
138 |
+
if ( ! empty( $name ) ) {
|
139 |
+
$holder['name'] = $name;
|
140 |
+
}
|
141 |
+
|
142 |
+
array_push( $data[ $type ], $holder );
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
foreach ( $data as $type => $type_recipients ) {
|
147 |
+
$this->body[ $type ] = $type_recipients;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* @inheritDoc
|
153 |
+
*
|
154 |
+
* @since 1.6.0
|
155 |
+
*/
|
156 |
+
public function set_subject( $subject ) {
|
157 |
+
|
158 |
+
$this->body['subject'] = $subject;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Set email content.
|
163 |
+
*
|
164 |
+
* @since 1.6.0
|
165 |
+
*
|
166 |
+
* @param string|array $content
|
167 |
+
*/
|
168 |
+
public function set_content( $content ) {
|
169 |
+
|
170 |
+
if ( empty( $content ) ) {
|
171 |
+
return;
|
172 |
+
}
|
173 |
+
|
174 |
+
if ( is_array( $content ) ) {
|
175 |
+
|
176 |
+
if ( ! empty( $content['text'] ) ) {
|
177 |
+
$this->body['textContent'] = $content['text'];
|
178 |
+
}
|
179 |
+
|
180 |
+
if ( ! empty( $content['html'] ) ) {
|
181 |
+
$this->body['htmlContent'] = $content['html'];
|
182 |
+
}
|
183 |
+
} else {
|
184 |
+
if ( $this->phpmailer->ContentType === 'text/plain' ) {
|
185 |
+
$this->body['textContent'] = $content;
|
186 |
+
} else {
|
187 |
+
$this->body['htmlContent'] = $content;
|
188 |
+
}
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Doesn't support this.
|
194 |
+
*
|
195 |
+
* @since 1.6.0
|
196 |
+
*
|
197 |
+
* @param string $email
|
198 |
+
*/
|
199 |
+
public function set_return_path( $email ) {
|
200 |
+
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* Set the Reply To headers if not set already.
|
205 |
+
*
|
206 |
+
* @since 1.6.0
|
207 |
+
*
|
208 |
+
* @param array $emails
|
209 |
+
*/
|
210 |
+
public function set_reply_to( $emails ) {
|
211 |
+
|
212 |
+
if ( empty( $emails ) ) {
|
213 |
+
return;
|
214 |
+
}
|
215 |
+
|
216 |
+
$data = array();
|
217 |
+
|
218 |
+
foreach ( $emails as $user ) {
|
219 |
+
$holder = array();
|
220 |
+
$addr = isset( $user[0] ) ? $user[0] : false;
|
221 |
+
$name = isset( $user[1] ) ? $user[1] : false;
|
222 |
+
|
223 |
+
if ( ! filter_var( $addr, FILTER_VALIDATE_EMAIL ) ) {
|
224 |
+
continue;
|
225 |
+
}
|
226 |
+
|
227 |
+
$holder['email'] = $addr;
|
228 |
+
if ( ! empty( $name ) ) {
|
229 |
+
$holder['name'] = $name;
|
230 |
+
}
|
231 |
+
|
232 |
+
$data[] = $holder;
|
233 |
+
}
|
234 |
+
|
235 |
+
if ( ! empty( $data ) ) {
|
236 |
+
$this->body['replyTo'] = $data[0];
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* Set attachments for an email.
|
242 |
+
*
|
243 |
+
* @since 1.6.0
|
244 |
+
*
|
245 |
+
* @param array $attachments
|
246 |
+
*/
|
247 |
+
public function set_attachments( $attachments ) {
|
248 |
+
|
249 |
+
if ( empty( $attachments ) ) {
|
250 |
+
return;
|
251 |
+
}
|
252 |
+
|
253 |
+
foreach ( $attachments as $attachment ) {
|
254 |
+
$file = false;
|
255 |
+
|
256 |
+
/*
|
257 |
+
* We are not using WP_Filesystem API as we can't reliably work with it.
|
258 |
+
* It is not always available, same as credentials for FTP.
|
259 |
+
*/
|
260 |
+
try {
|
261 |
+
if ( is_file( $attachment[0] ) && is_readable( $attachment[0] ) ) {
|
262 |
+
$ext = pathinfo( $attachment[0], PATHINFO_EXTENSION );
|
263 |
+
|
264 |
+
if ( in_array( $ext, $this->allowed_attach_ext, true ) ) {
|
265 |
+
$file = file_get_contents( $attachment[0] ); // phpcs:ignore
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}
|
269 |
+
catch ( \Exception $e ) {
|
270 |
+
$file = false;
|
271 |
+
}
|
272 |
+
|
273 |
+
if ( $file === false ) {
|
274 |
+
continue;
|
275 |
+
}
|
276 |
+
|
277 |
+
$this->body['attachment'][] = array(
|
278 |
+
'name' => $attachment[2],
|
279 |
+
'content' => base64_encode( $file ),
|
280 |
+
);
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* @inheritDoc
|
286 |
+
*
|
287 |
+
* @since 1.6.0
|
288 |
+
*
|
289 |
+
* @return \SendinBlue\Client\Model\SendSmtpEmail
|
290 |
+
*/
|
291 |
+
public function get_body() {
|
292 |
+
|
293 |
+
return new \SendinBlue\Client\Model\SendSmtpEmail( $this->body );
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Use a library to send emails.
|
298 |
+
*
|
299 |
+
* @since 1.6.0
|
300 |
+
*/
|
301 |
+
public function send() {
|
302 |
+
|
303 |
+
try {
|
304 |
+
$api = new Api();
|
305 |
+
|
306 |
+
$response = $api->get_smtp_client()->sendTransacEmail( $this->get_body() );
|
307 |
+
|
308 |
+
$this->process_response( $response );
|
309 |
+
} catch ( \SendinBlue\Client\ApiException $e ) {
|
310 |
+
$error = json_decode( $e->getResponseBody() );
|
311 |
+
|
312 |
+
if ( json_last_error() === JSON_ERROR_NONE && ! empty( $error ) ) {
|
313 |
+
$message = '[' . sanitize_key( $error->code ) . ']: ' . esc_html( $error->message );
|
314 |
+
} else {
|
315 |
+
$message = $e->getMessage();
|
316 |
+
}
|
317 |
+
|
318 |
+
Debug::set( 'Mailer: Sendinblue' . PHP_EOL . $message );
|
319 |
+
} catch ( \Exception $e ) {
|
320 |
+
Debug::set( 'Mailer: Sendinblue' . PHP_EOL . $e->getMessage() );
|
321 |
+
|
322 |
+
return;
|
323 |
+
}
|
324 |
+
}
|
325 |
+
|
326 |
+
/**
|
327 |
+
* Save response from the API to use it later.
|
328 |
+
* All the actually response processing is done in send() method,
|
329 |
+
* because SendinBlue throws exception if any error occurs.
|
330 |
+
*
|
331 |
+
* @since 1.6.0
|
332 |
+
*
|
333 |
+
* @param \SendinBlue\Client\Model\CreateSmtpEmail $response
|
334 |
+
*/
|
335 |
+
protected function process_response( $response ) {
|
336 |
+
|
337 |
+
$this->response = $response;
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* Check whether the email was sent.
|
342 |
+
*
|
343 |
+
* @since 1.6.0
|
344 |
+
*
|
345 |
+
* @return bool
|
346 |
+
*/
|
347 |
+
public function is_email_sent() {
|
348 |
+
|
349 |
+
$is_sent = false;
|
350 |
+
|
351 |
+
if ( $this->response instanceof \SendinBlue\Client\Model\CreateSmtpEmail ) {
|
352 |
+
$is_sent = $this->response->valid();
|
353 |
+
}
|
354 |
+
|
355 |
+
// Clear debug messages if email is successfully sent.
|
356 |
+
if ( $is_sent ) {
|
357 |
+
Debug::clear();
|
358 |
+
}
|
359 |
+
|
360 |
+
return $is_sent;
|
361 |
+
}
|
362 |
+
|
363 |
+
/**
|
364 |
+
* @inheritdoc
|
365 |
+
*
|
366 |
+
* @since 1.6.0
|
367 |
+
*/
|
368 |
+
public function get_debug_info() {
|
369 |
+
|
370 |
+
$mailjet_text[] = '<strong>API Key:</strong> ' . ( $this->is_mailer_complete() ? 'Yes' : 'No' );
|
371 |
+
|
372 |
+
return implode( '<br>', $mailjet_text );
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* @inheritdoc
|
377 |
+
*
|
378 |
+
* @since 1.6.0
|
379 |
+
*/
|
380 |
+
public function is_mailer_complete() {
|
381 |
+
|
382 |
+
$options = $this->options->get_group( $this->mailer );
|
383 |
+
|
384 |
+
// API key is the only required option.
|
385 |
+
if ( ! empty( $options['api_key'] ) ) {
|
386 |
+
return true;
|
387 |
+
}
|
388 |
+
|
389 |
+
return false;
|
390 |
+
}
|
391 |
+
}
|
|
|
|
src/SiteHealth.php
CHANGED
@@ -68,6 +68,11 @@ class SiteHealth {
|
|
68 |
'test' => array( $this, 'mailer_setup_complete_test' ),
|
69 |
);
|
70 |
|
|
|
|
|
|
|
|
|
|
|
71 |
return $tests;
|
72 |
}
|
73 |
|
@@ -84,24 +89,30 @@ class SiteHealth {
|
|
84 |
public function register_debug_information( $debug_info ) {
|
85 |
|
86 |
$debug_notices = Debug::get();
|
|
|
87 |
|
88 |
-
$debug_info[ self::DEBUG_INFO_SLUG ] =
|
89 |
'label' => $this->get_label(),
|
90 |
-
'fields' =>
|
91 |
-
'version' =>
|
92 |
'label' => esc_html__( 'Version', 'wp-mail-smtp' ),
|
93 |
'value' => WPMS_PLUGIN_VER,
|
94 |
-
|
95 |
-
'license_key_type' =>
|
96 |
'label' => esc_html__( 'License key type', 'wp-mail-smtp' ),
|
97 |
'value' => wp_mail_smtp()->get_license_type(),
|
98 |
-
|
99 |
-
'debug' =>
|
100 |
'label' => esc_html__( 'Debug', 'wp-mail-smtp' ),
|
101 |
'value' => ! empty( $debug_notices ) ? implode( '. ', $debug_notices ) : esc_html__( 'No debug notices found.', 'wp-mail-smtp' ),
|
102 |
-
|
103 |
-
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
return $debug_info;
|
107 |
}
|
@@ -177,4 +188,75 @@ class SiteHealth {
|
|
177 |
|
178 |
return $result;
|
179 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
}
|
68 |
'test' => array( $this, 'mailer_setup_complete_test' ),
|
69 |
);
|
70 |
|
71 |
+
$tests['direct']['wp_mail_smtp_db_tables_exist'] = array(
|
72 |
+
'label' => esc_html__( 'Do WP Mail SMTP DB tables exist?', 'wp-mail-smtp' ),
|
73 |
+
'test' => [ $this, 'db_tables_test' ],
|
74 |
+
);
|
75 |
+
|
76 |
return $tests;
|
77 |
}
|
78 |
|
89 |
public function register_debug_information( $debug_info ) {
|
90 |
|
91 |
$debug_notices = Debug::get();
|
92 |
+
$db_tables = $this->get_db_tables( 'existing' );
|
93 |
|
94 |
+
$debug_info[ self::DEBUG_INFO_SLUG ] = [
|
95 |
'label' => $this->get_label(),
|
96 |
+
'fields' => [
|
97 |
+
'version' => [
|
98 |
'label' => esc_html__( 'Version', 'wp-mail-smtp' ),
|
99 |
'value' => WPMS_PLUGIN_VER,
|
100 |
+
],
|
101 |
+
'license_key_type' => [
|
102 |
'label' => esc_html__( 'License key type', 'wp-mail-smtp' ),
|
103 |
'value' => wp_mail_smtp()->get_license_type(),
|
104 |
+
],
|
105 |
+
'debug' => [
|
106 |
'label' => esc_html__( 'Debug', 'wp-mail-smtp' ),
|
107 |
'value' => ! empty( $debug_notices ) ? implode( '. ', $debug_notices ) : esc_html__( 'No debug notices found.', 'wp-mail-smtp' ),
|
108 |
+
],
|
109 |
+
'db_tables' => [
|
110 |
+
'label' => esc_html__( 'DB tables', 'wp-mail-smtp' ),
|
111 |
+
'value' => ! empty( $db_tables ) ?
|
112 |
+
implode( ', ', $db_tables ) : esc_html__( 'No DB tables found.', 'wp-mail-smtp' ),
|
113 |
+
],
|
114 |
+
],
|
115 |
+
];
|
116 |
|
117 |
return $debug_info;
|
118 |
}
|
188 |
|
189 |
return $result;
|
190 |
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Perform the test for checking if all custom plugin DB tables exist.
|
194 |
+
*
|
195 |
+
* @since 2.1.2
|
196 |
+
*
|
197 |
+
* @return array
|
198 |
+
*/
|
199 |
+
public function db_tables_test() {
|
200 |
+
|
201 |
+
$result = array(
|
202 |
+
'label' => esc_html__( 'WP Mail SMTP DB tables are created', 'wp-mail-smtp' ),
|
203 |
+
'status' => 'good',
|
204 |
+
'badge' => array(
|
205 |
+
'label' => $this->get_label(),
|
206 |
+
'color' => self::BADGE_COLOR,
|
207 |
+
),
|
208 |
+
'description' => esc_html__( 'WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database.', 'wp-mail-smtp' ),
|
209 |
+
'actions' => '',
|
210 |
+
'test' => 'wp_mail_smtp_db_tables_exist',
|
211 |
+
);
|
212 |
+
|
213 |
+
$missing_tables = $this->get_db_tables( 'missing' );
|
214 |
+
|
215 |
+
if ( ! empty( $missing_tables ) ) {
|
216 |
+
$result['label'] = esc_html__( 'WP Mail SMTP DB tables check has failed', 'wp-mail-smtp' );
|
217 |
+
$result['status'] = 'critical';
|
218 |
+
$result['badge']['color'] = 'red';
|
219 |
+
$result['description'] = sprintf(
|
220 |
+
'<p>%s</p><p>%s</p>',
|
221 |
+
sprintf( /* translators: %s - the list of missing tables separated by comma. */
|
222 |
+
esc_html( _n( 'Missing table: %s', 'Missing tables: %s', count( $missing_tables ), 'wp-mail-smtp' ) ),
|
223 |
+
esc_html( implode( ', ', $missing_tables ) )
|
224 |
+
),
|
225 |
+
esc_html__( 'WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it seems they are missing. Please try to re-install the WP Mail SMTP plugin. If this issue persists, please contact our support.', 'wp-mail-smtp' )
|
226 |
+
);
|
227 |
+
}
|
228 |
+
|
229 |
+
return $result;
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* Check DB:
|
234 |
+
* - if any required plugin DB table is missing,
|
235 |
+
* - which of the required plugin DB tables exist.
|
236 |
+
*
|
237 |
+
* @since 2.1.2
|
238 |
+
*
|
239 |
+
* @param string $check Which type of tables to return: 'missing' or 'existing'.
|
240 |
+
*
|
241 |
+
* @return array Missing or existing tables.
|
242 |
+
*/
|
243 |
+
private function get_db_tables( $check = 'missing' ) {
|
244 |
+
|
245 |
+
global $wpdb;
|
246 |
+
|
247 |
+
$tables = wp_mail_smtp()->get_custom_db_tables();
|
248 |
+
|
249 |
+
$missing_tables = [];
|
250 |
+
$existing_tables = [];
|
251 |
+
|
252 |
+
foreach ( $tables as $table ) {
|
253 |
+
if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table ) ) !== $table ) { // phpcs:ignore
|
254 |
+
$missing_tables[] = $table;
|
255 |
+
} else {
|
256 |
+
$existing_tables[] = $table;
|
257 |
+
}
|
258 |
+
}
|
259 |
+
|
260 |
+
return ( $check === 'existing' ) ? $existing_tables : $missing_tables;
|
261 |
+
}
|
262 |
}
|
src/Tasks/Task.php
CHANGED
@@ -195,7 +195,7 @@ class Task {
|
|
195 |
$this->meta_id = $task_meta->add(
|
196 |
[
|
197 |
'action' => $this->action,
|
198 |
-
'data' => $this->params,
|
199 |
]
|
200 |
);
|
201 |
|
195 |
$this->meta_id = $task_meta->add(
|
196 |
[
|
197 |
'action' => $this->action,
|
198 |
+
'data' => isset( $this->params ) ? $this->params : [],
|
199 |
]
|
200 |
);
|
201 |
|
src/WP.php
CHANGED
@@ -238,4 +238,63 @@ class WP {
|
|
238 |
|
239 |
return $filtered;
|
240 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
}
|
238 |
|
239 |
return $filtered;
|
240 |
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Get default email address.
|
244 |
+
*
|
245 |
+
* This is the same code as used in WP core for getting the default email address.
|
246 |
+
*
|
247 |
+
* @see https://github.com/WordPress/WordPress/blob/master/wp-includes/pluggable.php#L332
|
248 |
+
*
|
249 |
+
* @since 2.2.0
|
250 |
+
*
|
251 |
+
* @return string
|
252 |
+
*/
|
253 |
+
public static function get_default_email() {
|
254 |
+
|
255 |
+
$sitename = strtolower( $_SERVER['SERVER_NAME'] ); // phpcs:ignore
|
256 |
+
|
257 |
+
if ( 'www.' === substr( $sitename, 0, 4 ) ) {
|
258 |
+
$sitename = substr( $sitename, 4 );
|
259 |
+
}
|
260 |
+
|
261 |
+
return 'wordpress@' . $sitename;
|
262 |
+
}
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Wrapper for the WP `admin_url` method that should be used in the plugin.
|
266 |
+
*
|
267 |
+
* We can filter into it, to maybe call `network_admin_url` for multisite support.
|
268 |
+
*
|
269 |
+
* @since 2.2.0
|
270 |
+
*
|
271 |
+
* @param string $path Optional path relative to the admin URL.
|
272 |
+
* @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl().
|
273 |
+
* 'http' or 'https' can be passed to force those schemes.
|
274 |
+
*
|
275 |
+
* @return string Admin URL link with optional path appended.
|
276 |
+
*/
|
277 |
+
public static function admin_url( $path = '', $scheme = 'admin' ) {
|
278 |
+
|
279 |
+
return apply_filters( 'wp_mail_smtp_admin_url', \admin_url( $path, $scheme ), $path, $scheme );
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Check if the global plugin option in a multisite should be used.
|
284 |
+
* If the global plugin option "multisite" is set and true.
|
285 |
+
*
|
286 |
+
* @since 2.2.0
|
287 |
+
*
|
288 |
+
* @return bool
|
289 |
+
*/
|
290 |
+
public static function use_global_plugin_settings() {
|
291 |
+
|
292 |
+
if ( ! is_multisite() ) {
|
293 |
+
return false;
|
294 |
+
}
|
295 |
+
|
296 |
+
$main_site_options = get_blog_option( get_main_site_id(), Options::META_KEY, [] );
|
297 |
+
|
298 |
+
return ! empty( $main_site_options['general']['network_wide'] );
|
299 |
+
}
|
300 |
}
|
uninstall.php
CHANGED
@@ -12,17 +12,14 @@ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
|
12 |
|
13 |
// Load plugin file.
|
14 |
require_once 'wp_mail_smtp.php';
|
|
|
15 |
|
16 |
-
|
17 |
-
$settings = get_option( 'wp_mail_smtp', array() );
|
18 |
-
if ( empty( $settings['general']['uninstall'] ) ) {
|
19 |
-
return;
|
20 |
-
}
|
21 |
|
22 |
/*
|
23 |
* Remove Legacy options.
|
24 |
*/
|
25 |
-
$options =
|
26 |
'_amn_smtp_last_checked',
|
27 |
'pepipost_ssl',
|
28 |
'pepipost_port',
|
@@ -38,62 +35,145 @@ $options = array(
|
|
38 |
'mailer',
|
39 |
'mail_from_name',
|
40 |
'mail_from',
|
41 |
-
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
-
|
|
|
|
|
|
|
|
|
48 |
|
49 |
-
|
50 |
-
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wp\_mail\_smtp%'" );
|
51 |
|
52 |
-
|
53 |
-
$
|
54 |
|
55 |
-
//
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
60 |
|
61 |
-
/*
|
62 |
-
|
63 |
-
|
64 |
-
$
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
-
}
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
is_readable( wp_mail_smtp()->plugin_path . '/src/Pro/Pro.php' )
|
84 |
-
) {
|
85 |
-
// DB table.
|
86 |
-
$logs_table = \WPMailSMTP\Pro\Emails\Logs\Logs::get_table_name();
|
87 |
-
$wpdb->query( "DROP TABLE IF EXISTS $logs_table;" ); // phpcs:ignore WordPress.DB
|
88 |
-
}
|
89 |
|
90 |
-
/*
|
91 |
-
|
92 |
-
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
-
//
|
96 |
-
(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
|
98 |
-
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
// Load plugin file.
|
14 |
require_once 'wp_mail_smtp.php';
|
15 |
+
require_once dirname( __FILE__ ) . '/vendor/woocommerce/action-scheduler/action-scheduler.php';
|
16 |
|
17 |
+
global $wpdb;
|
|
|
|
|
|
|
|
|
18 |
|
19 |
/*
|
20 |
* Remove Legacy options.
|
21 |
*/
|
22 |
+
$options = [
|
23 |
'_amn_smtp_last_checked',
|
24 |
'pepipost_ssl',
|
25 |
'pepipost_port',
|
35 |
'mailer',
|
36 |
'mail_from_name',
|
37 |
'mail_from',
|
38 |
+
];
|
39 |
|
40 |
+
/**
|
41 |
+
* Remove AM announcement posts.
|
42 |
+
*/
|
43 |
+
$am_announcement_params = [
|
44 |
+
'post_type' => [ 'amn_smtp' ],
|
45 |
+
'post_status' => 'any',
|
46 |
+
'numberposts' => - 1,
|
47 |
+
'fields' => 'ids',
|
48 |
+
];
|
49 |
|
50 |
+
// WP MS uninstall process.
|
51 |
+
if ( is_multisite() ) {
|
52 |
+
$main_site_settings = get_blog_option( get_main_site_id(), 'wp_mail_smtp', [] );
|
53 |
+
$network_wide = ! empty( $main_site_settings['general']['network_wide'] );
|
54 |
+
$network_uninstall = ! empty( $main_site_settings['general']['uninstall'] );
|
55 |
|
56 |
+
$sites = get_sites();
|
|
|
57 |
|
58 |
+
foreach ( $sites as $site ) {
|
59 |
+
$settings = get_blog_option( $site->blog_id, 'wp_mail_smtp', [] );
|
60 |
|
61 |
+
// Confirm network site admin has decided to remove all data, otherwise skip.
|
62 |
+
if (
|
63 |
+
( $network_wide && ! $network_uninstall ) ||
|
64 |
+
( ! $network_wide && empty( $settings['general']['uninstall'] ) )
|
65 |
+
) {
|
66 |
+
continue;
|
67 |
+
}
|
68 |
|
69 |
+
/*
|
70 |
+
* Delete network site plugin options.
|
71 |
+
*/
|
72 |
+
foreach ( $options as $option ) {
|
73 |
+
delete_blog_option( $site->blog_id, $option );
|
74 |
+
}
|
75 |
+
|
76 |
+
// Switch to the current network site.
|
77 |
+
switch_to_blog( $site->blog_id );
|
78 |
+
|
79 |
+
// Delete plugin settings.
|
80 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wp\_mail\_smtp%'" ); // phpcs:ignore WordPress.DB
|
81 |
+
|
82 |
+
// Delete plugin user meta.
|
83 |
+
$wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
84 |
+
|
85 |
+
// Remove any transients we've left behind.
|
86 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
87 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
88 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_timeout\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
89 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_timeout\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
90 |
+
|
91 |
+
/*
|
92 |
+
* Delete network site product announcements.
|
93 |
+
*/
|
94 |
+
$announcements = get_posts( $am_announcement_params );
|
95 |
+
|
96 |
+
if ( ! empty( $announcements ) ) {
|
97 |
+
foreach ( $announcements as $announcement ) {
|
98 |
+
wp_delete_post( $announcement, true );
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
/*
|
103 |
+
* Delete network site Logs for Pro plugin only.
|
104 |
+
*/
|
105 |
+
if (
|
106 |
+
function_exists( 'wp_mail_smtp' ) &&
|
107 |
+
is_readable( wp_mail_smtp()->plugin_path . '/src/Pro/Pro.php' )
|
108 |
+
) {
|
109 |
+
$table = \WPMailSMTP\Pro\Emails\Logs\Logs::get_table_name();
|
110 |
+
$wpdb->query( "DROP TABLE IF EXISTS $table;" ); // phpcs:ignore WordPress.DB
|
111 |
+
}
|
112 |
+
|
113 |
+
/*
|
114 |
+
* Drop all Action Scheduler data and unschedule all plugin ActionScheduler actions.
|
115 |
+
*/
|
116 |
+
( new \WPMailSMTP\Tasks\Tasks() )->cancel_all();
|
117 |
+
|
118 |
+
$meta_table = \WPMailSMTP\Tasks\Meta::get_table_name();
|
119 |
+
$wpdb->query( "DROP TABLE IF EXISTS $meta_table;" ); // phpcs:ignore WordPress.DB
|
120 |
+
|
121 |
+
// Restore the current network site back to the original one.
|
122 |
+
restore_current_blog();
|
123 |
}
|
124 |
+
} else { // Non WP MS uninstall process (for normal WP installs).
|
125 |
|
126 |
+
// Confirm user has decided to remove all data, otherwise stop.
|
127 |
+
$settings = get_option( 'wp_mail_smtp', [] );
|
128 |
+
if ( empty( $settings['general']['uninstall'] ) ) {
|
129 |
+
return;
|
130 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
|
132 |
+
/*
|
133 |
+
* Delete plugin options.
|
134 |
+
*/
|
135 |
+
foreach ( $options as $option ) {
|
136 |
+
delete_option( $option );
|
137 |
+
}
|
138 |
+
|
139 |
+
// Delete plugin settings.
|
140 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'wp\_mail\_smtp%'" ); // phpcs:ignore WordPress.DB
|
141 |
+
|
142 |
+
// Delete plugin user meta.
|
143 |
+
$wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
144 |
|
145 |
+
// Remove any transients we've left behind.
|
146 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
147 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
148 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_timeout\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
149 |
+
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '\_site\_transient\_timeout\_wp\_mail\_smtp\_%'" ); // phpcs:ignore WordPress.DB
|
150 |
+
|
151 |
+
/*
|
152 |
+
* Remove product announcements.
|
153 |
+
*/
|
154 |
+
$announcements = get_posts( $am_announcement_params );
|
155 |
+
if ( ! empty( $announcements ) ) {
|
156 |
+
foreach ( $announcements as $announcement ) {
|
157 |
+
wp_delete_post( $announcement, true );
|
158 |
+
}
|
159 |
+
}
|
160 |
|
161 |
+
/*
|
162 |
+
* Logs for Pro plugin only.
|
163 |
+
*/
|
164 |
+
if (
|
165 |
+
function_exists( 'wp_mail_smtp' ) &&
|
166 |
+
is_readable( wp_mail_smtp()->plugin_path . '/src/Pro/Pro.php' )
|
167 |
+
) {
|
168 |
+
$table = \WPMailSMTP\Pro\Emails\Logs\Logs::get_table_name();
|
169 |
+
$wpdb->query( "DROP TABLE IF EXISTS $table;" ); // phpcs:ignore WordPress.DB
|
170 |
+
}
|
171 |
+
|
172 |
+
/*
|
173 |
+
* Drop all Action Scheduler data and unschedule all plugin ActionScheduler actions.
|
174 |
+
*/
|
175 |
+
( new \WPMailSMTP\Tasks\Tasks() )->cancel_all();
|
176 |
+
|
177 |
+
$meta_table = \WPMailSMTP\Tasks\Meta::get_table_name();
|
178 |
+
$wpdb->query( "DROP TABLE IF EXISTS $meta_table;" ); // phpcs:ignore WordPress.DB
|
179 |
+
}
|
vendor/google/auth/src/Credentials/UserRefreshCredentials.php
CHANGED
@@ -34,11 +34,6 @@ use Google\Auth\OAuth2;
|
|
34 |
*/
|
35 |
class UserRefreshCredentials extends CredentialsLoader implements GetQuotaProjectInterface
|
36 |
{
|
37 |
-
const CLOUD_SDK_CLIENT_ID =
|
38 |
-
'764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com';
|
39 |
-
|
40 |
-
const SUPPRESS_CLOUD_SDK_CREDS_WARNING_ENV = 'SUPPRESS_GCLOUD_CREDS_WARNING';
|
41 |
-
|
42 |
/**
|
43 |
* The OAuth2 instance used to conduct authorization.
|
44 |
*
|
@@ -97,24 +92,6 @@ class UserRefreshCredentials extends CredentialsLoader implements GetQuotaProjec
|
|
97 |
if (array_key_exists('quota_project', $jsonKey)) {
|
98 |
$this->quotaProject = (string) $jsonKey['quota_project'];
|
99 |
}
|
100 |
-
if ($jsonKey['client_id'] === self::CLOUD_SDK_CLIENT_ID
|
101 |
-
&& is_null($this->quotaProject)
|
102 |
-
&& getenv(self::SUPPRESS_CLOUD_SDK_CREDS_WARNING_ENV) !== 'true') {
|
103 |
-
trigger_error(
|
104 |
-
'Your application has authenticated using end user credentials '
|
105 |
-
. 'from Google Cloud SDK. We recommend that most server '
|
106 |
-
. 'applications use service accounts instead. If your '
|
107 |
-
. 'application continues to use end user credentials '
|
108 |
-
. 'from Cloud SDK, you might receive a "quota exceeded" '
|
109 |
-
. 'or "API not enabled" error. For more information about '
|
110 |
-
. 'service accounts, see '
|
111 |
-
. 'https://cloud.google.com/docs/authentication/. '
|
112 |
-
. 'To disable this warning, set '
|
113 |
-
. self::SUPPRESS_CLOUD_SDK_CREDS_WARNING_ENV
|
114 |
-
. ' environment variable to "true".',
|
115 |
-
E_USER_WARNING
|
116 |
-
);
|
117 |
-
}
|
118 |
}
|
119 |
|
120 |
/**
|
34 |
*/
|
35 |
class UserRefreshCredentials extends CredentialsLoader implements GetQuotaProjectInterface
|
36 |
{
|
|
|
|
|
|
|
|
|
|
|
37 |
/**
|
38 |
* The OAuth2 instance used to conduct authorization.
|
39 |
*
|
92 |
if (array_key_exists('quota_project', $jsonKey)) {
|
93 |
$this->quotaProject = (string) $jsonKey['quota_project'];
|
94 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
}
|
96 |
|
97 |
/**
|
vendor/google/auth/src/CredentialsLoader.php
CHANGED
@@ -20,6 +20,7 @@ namespace Google\Auth;
|
|
20 |
use Google\Auth\Credentials\InsecureCredentials;
|
21 |
use Google\Auth\Credentials\ServiceAccountCredentials;
|
22 |
use Google\Auth\Credentials\UserRefreshCredentials;
|
|
|
23 |
|
24 |
/**
|
25 |
* CredentialsLoader contains the behaviour used to locate and find default
|
@@ -54,6 +55,24 @@ abstract class CredentialsLoader implements FetchAuthTokenInterface
|
|
54 |
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
|
55 |
}
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
/**
|
58 |
* Load a JSON key from the path specified in the environment.
|
59 |
*
|
@@ -145,35 +164,30 @@ abstract class CredentialsLoader implements FetchAuthTokenInterface
|
|
145 |
callable $httpHandler = null,
|
146 |
callable $tokenCallback = null
|
147 |
) {
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
$
|
153 |
-
$
|
154 |
-
$
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
);
|
159 |
-
$client->getEmitter()->attach($subscriber);
|
160 |
-
return $client;
|
161 |
-
case '6':
|
162 |
-
$middleware = new Middleware\AuthTokenMiddleware(
|
163 |
-
$fetcher,
|
164 |
-
$httpHandler,
|
165 |
-
$tokenCallback
|
166 |
-
);
|
167 |
-
$stack = \GuzzleHttp\HandlerStack::create();
|
168 |
-
$stack->push($middleware);
|
169 |
-
|
170 |
-
return new \GuzzleHttp\Client([
|
171 |
-
'handler' => $stack,
|
172 |
-
'auth' => 'google_auth',
|
173 |
-
] + $httpClientOptions);
|
174 |
-
default:
|
175 |
-
throw new \Exception('Version not supported');
|
176 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
178 |
|
179 |
/**
|
20 |
use Google\Auth\Credentials\InsecureCredentials;
|
21 |
use Google\Auth\Credentials\ServiceAccountCredentials;
|
22 |
use Google\Auth\Credentials\UserRefreshCredentials;
|
23 |
+
use GuzzleHttp\ClientInterface;
|
24 |
|
25 |
/**
|
26 |
* CredentialsLoader contains the behaviour used to locate and find default
|
55 |
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
|
56 |
}
|
57 |
|
58 |
+
/**
|
59 |
+
* Returns the currently available major Guzzle version.
|
60 |
+
*
|
61 |
+
* @return int
|
62 |
+
*/
|
63 |
+
private static function getGuzzleMajorVersion()
|
64 |
+
{
|
65 |
+
if (defined('GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
|
66 |
+
return ClientInterface::MAJOR_VERSION;
|
67 |
+
}
|
68 |
+
|
69 |
+
if (defined('GuzzleHttp\ClientInterface::VERSION')) {
|
70 |
+
return (int) substr(ClientInterface::VERSION, 0, 1);
|
71 |
+
}
|
72 |
+
|
73 |
+
throw new \Exception('Version not supported');
|
74 |
+
}
|
75 |
+
|
76 |
/**
|
77 |
* Load a JSON key from the path specified in the environment.
|
78 |
*
|
164 |
callable $httpHandler = null,
|
165 |
callable $tokenCallback = null
|
166 |
) {
|
167 |
+
if (self::getGuzzleMajorVersion() === 5) {
|
168 |
+
$client = new \GuzzleHttp\Client($httpClientOptions);
|
169 |
+
$client->setDefaultOption('auth', 'google_auth');
|
170 |
+
$subscriber = new Subscriber\AuthTokenSubscriber(
|
171 |
+
$fetcher,
|
172 |
+
$httpHandler,
|
173 |
+
$tokenCallback
|
174 |
+
);
|
175 |
+
$client->getEmitter()->attach($subscriber);
|
176 |
+
return $client;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
178 |
+
|
179 |
+
$middleware = new Middleware\AuthTokenMiddleware(
|
180 |
+
$fetcher,
|
181 |
+
$httpHandler,
|
182 |
+
$tokenCallback
|
183 |
+
);
|
184 |
+
$stack = \GuzzleHttp\HandlerStack::create();
|
185 |
+
$stack->push($middleware);
|
186 |
+
|
187 |
+
return new \GuzzleHttp\Client([
|
188 |
+
'handler' => $stack,
|
189 |
+
'auth' => 'google_auth',
|
190 |
+
] + $httpClientOptions);
|
191 |
}
|
192 |
|
193 |
/**
|
vendor/google/auth/src/HttpHandler/Guzzle6HttpHandler.php
CHANGED
@@ -1,5 +1,19 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
namespace Google\Auth\HttpHandler;
|
4 |
|
5 |
use GuzzleHttp\ClientInterface;
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2015 Google Inc. All Rights Reserved.
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain a copy of the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
namespace Google\Auth\HttpHandler;
|
18 |
|
19 |
use GuzzleHttp\ClientInterface;
|
vendor/google/auth/src/HttpHandler/Guzzle7HttpHandler.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2020 Google LLC
|
4 |
+
*
|
5 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6 |
+
* you may not use this file except in compliance with the License.
|
7 |
+
* You may obtain a copy of the License at
|
8 |
+
*
|
9 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 |
+
* See the License for the specific language governing permissions and
|
15 |
+
* limitations under the License.
|
16 |
+
*/
|
17 |
+
namespace Google\Auth\HttpHandler;
|
18 |
+
|
19 |
+
class Guzzle7HttpHandler extends Guzzle6HttpHandler
|
20 |
+
{
|
21 |
+
}
|
vendor/google/auth/src/HttpHandler/HttpHandlerFactory.php
CHANGED
@@ -25,19 +25,27 @@ class HttpHandlerFactory
|
|
25 |
* Builds out a default http handler for the installed version of guzzle.
|
26 |
*
|
27 |
* @param ClientInterface $client
|
28 |
-
* @return Guzzle5HttpHandler|Guzzle6HttpHandler
|
29 |
* @throws \Exception
|
30 |
*/
|
31 |
public static function build(ClientInterface $client = null)
|
32 |
{
|
33 |
-
$version = ClientInterface::VERSION;
|
34 |
$client = $client ?: new Client();
|
35 |
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
return new Guzzle5HttpHandler($client);
|
39 |
-
case
|
40 |
return new Guzzle6HttpHandler($client);
|
|
|
|
|
41 |
default:
|
42 |
throw new \Exception('Version not supported');
|
43 |
}
|
25 |
* Builds out a default http handler for the installed version of guzzle.
|
26 |
*
|
27 |
* @param ClientInterface $client
|
28 |
+
* @return Guzzle5HttpHandler|Guzzle6HttpHandler|Guzzle7HttpHandler
|
29 |
* @throws \Exception
|
30 |
*/
|
31 |
public static function build(ClientInterface $client = null)
|
32 |
{
|
|
|
33 |
$client = $client ?: new Client();
|
34 |
|
35 |
+
$version = null;
|
36 |
+
if (defined('GuzzleHttp\ClientInterface::MAJOR_VERSION')) {
|
37 |
+
$version = ClientInterface::MAJOR_VERSION;
|
38 |
+
} elseif (defined('GuzzleHttp\ClientInterface::VERSION')) {
|
39 |
+
$version = (int) substr(ClientInterface::VERSION, 0, 1);
|
40 |
+
}
|
41 |
+
|
42 |
+
switch ($version) {
|
43 |
+
case 5:
|
44 |
return new Guzzle5HttpHandler($client);
|
45 |
+
case 6:
|
46 |
return new Guzzle6HttpHandler($client);
|
47 |
+
case 7:
|
48 |
+
return new Guzzle7HttpHandler($client);
|
49 |
default:
|
50 |
throw new \Exception('Version not supported');
|
51 |
}
|
vendor/guzzlehttp/guzzle/src/ClientInterface.php
CHANGED
@@ -15,7 +15,7 @@ interface ClientInterface
|
|
15 |
/**
|
16 |
* @deprecated Will be removed in Guzzle 7.0.0
|
17 |
*/
|
18 |
-
const VERSION = '6.5.
|
19 |
|
20 |
/**
|
21 |
* Send an HTTP request.
|
15 |
/**
|
16 |
* @deprecated Will be removed in Guzzle 7.0.0
|
17 |
*/
|
18 |
+
const VERSION = '6.5.5';
|
19 |
|
20 |
/**
|
21 |
* Send an HTTP request.
|
vendor/guzzlehttp/guzzle/src/Utils.php
CHANGED
@@ -81,9 +81,12 @@ final class Utils
|
|
81 |
}
|
82 |
|
83 |
/*
|
84 |
-
* The Idn class is marked as @internal.
|
85 |
-
* symfony/polyfill-intl-idn to avoid issues in the future.
|
86 |
*/
|
87 |
-
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
}
|
81 |
}
|
82 |
|
83 |
/*
|
84 |
+
* The Idn class is marked as @internal. Verify that class and method exists.
|
|
|
85 |
*/
|
86 |
+
if (method_exists(Idn::class, 'idn_to_ascii')) {
|
87 |
+
return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
|
88 |
+
}
|
89 |
+
|
90 |
+
throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
|
91 |
}
|
92 |
}
|
vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
return array(
|
4 |
'A' => 'a',
|
5 |
'B' => 'b',
|
6 |
'C' => 'c',
|
@@ -510,6 +510,138 @@ return array(
|
|
510 |
'Ⴥ' => 'ⴥ',
|
511 |
'Ⴧ' => 'ⴧ',
|
512 |
'Ⴭ' => 'ⴭ',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
513 |
'Ḁ' => 'ḁ',
|
514 |
'Ḃ' => 'ḃ',
|
515 |
'Ḅ' => 'ḅ',
|
@@ -993,8 +1125,24 @@ return array(
|
|
993 |
'Ɜ' => 'ɜ',
|
994 |
'Ɡ' => 'ɡ',
|
995 |
'Ɬ' => 'ɬ',
|
|
|
996 |
'Ʞ' => 'ʞ',
|
997 |
'Ʇ' => 'ʇ',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
998 |
'A' => 'a',
|
999 |
'B' => 'b',
|
1000 |
'C' => 'c',
|
@@ -1061,6 +1209,93 @@ return array(
|
|
1061 |
'𐐥' => '𐑍',
|
1062 |
'𐐦' => '𐑎',
|
1063 |
'𐐧' => '𐑏',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1064 |
'𑢠' => '𑣀',
|
1065 |
'𑢡' => '𑣁',
|
1066 |
'𑢢' => '𑣂',
|
@@ -1093,4 +1328,70 @@ return array(
|
|
1093 |
'𑢽' => '𑣝',
|
1094 |
'𑢾' => '𑣞',
|
1095 |
'𑢿' => '𑣟',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1096 |
);
|
1 |
<?php
|
2 |
|
3 |
+
return array (
|
4 |
'A' => 'a',
|
5 |
'B' => 'b',
|
6 |
'C' => 'c',
|
510 |
'Ⴥ' => 'ⴥ',
|
511 |
'Ⴧ' => 'ⴧ',
|
512 |
'Ⴭ' => 'ⴭ',
|
513 |
+
'Ꭰ' => 'ꭰ',
|
514 |
+
'Ꭱ' => 'ꭱ',
|
515 |
+
'Ꭲ' => 'ꭲ',
|
516 |
+
'Ꭳ' => 'ꭳ',
|
517 |
+
'Ꭴ' => 'ꭴ',
|
518 |
+
'Ꭵ' => 'ꭵ',
|
519 |
+
'Ꭶ' => 'ꭶ',
|
520 |
+
'Ꭷ' => 'ꭷ',
|
521 |
+
'Ꭸ' => 'ꭸ',
|
522 |
+
'Ꭹ' => 'ꭹ',
|
523 |
+
'Ꭺ' => 'ꭺ',
|
524 |
+
'Ꭻ' => 'ꭻ',
|
525 |
+
'Ꭼ' => 'ꭼ',
|
526 |
+
'Ꭽ' => 'ꭽ',
|
527 |
+
'Ꭾ' => 'ꭾ',
|
528 |
+
'Ꭿ' => 'ꭿ',
|
529 |
+
'Ꮀ' => 'ꮀ',
|
530 |
+
'Ꮁ' => 'ꮁ',
|
531 |
+
'Ꮂ' => 'ꮂ',
|
532 |
+
'Ꮃ' => 'ꮃ',
|
533 |
+
'Ꮄ' => 'ꮄ',
|
534 |
+
'Ꮅ' => 'ꮅ',
|
535 |
+
'Ꮆ' => 'ꮆ',
|
536 |
+
'Ꮇ' => 'ꮇ',
|
537 |
+
'Ꮈ' => 'ꮈ',
|
538 |
+
'Ꮉ' => 'ꮉ',
|
539 |
+
'Ꮊ' => 'ꮊ',
|
540 |
+
'Ꮋ' => 'ꮋ',
|
541 |
+
'Ꮌ' => 'ꮌ',
|
542 |
+
'Ꮍ' => 'ꮍ',
|
543 |
+
'Ꮎ' => 'ꮎ',
|
544 |
+
'Ꮏ' => 'ꮏ',
|
545 |
+
'Ꮐ' => 'ꮐ',
|
546 |
+
'Ꮑ' => 'ꮑ',
|
547 |
+
'Ꮒ' => 'ꮒ',
|
548 |
+
'Ꮓ' => 'ꮓ',
|
549 |
+
'Ꮔ' => 'ꮔ',
|
550 |
+
'Ꮕ' => 'ꮕ',
|
551 |
+
'Ꮖ' => 'ꮖ',
|
552 |
+
'Ꮗ' => 'ꮗ',
|
553 |
+
'Ꮘ' => 'ꮘ',
|
554 |
+
'Ꮙ' => 'ꮙ',
|
555 |
+
'Ꮚ' => 'ꮚ',
|
556 |
+
'Ꮛ' => 'ꮛ',
|
557 |
+
'Ꮜ' => 'ꮜ',
|
558 |
+
'Ꮝ' => 'ꮝ',
|
559 |
+
'Ꮞ' => 'ꮞ',
|
560 |
+
'Ꮟ' => 'ꮟ',
|
561 |
+
'Ꮠ' => 'ꮠ',
|
562 |
+
'Ꮡ' => 'ꮡ',
|
563 |
+
'Ꮢ' => 'ꮢ',
|
564 |
+
'Ꮣ' => 'ꮣ',
|
565 |
+
'Ꮤ' => 'ꮤ',
|
566 |
+
'Ꮥ' => 'ꮥ',
|
567 |
+
'Ꮦ' => 'ꮦ',
|
568 |
+
'Ꮧ' => 'ꮧ',
|
569 |
+
'Ꮨ' => 'ꮨ',
|
570 |
+
'Ꮩ' => 'ꮩ',
|
571 |
+
'Ꮪ' => 'ꮪ',
|
572 |
+
'Ꮫ' => 'ꮫ',
|
573 |
+
'Ꮬ' => 'ꮬ',
|
574 |
+
'Ꮭ' => 'ꮭ',
|
575 |
+
'Ꮮ' => 'ꮮ',
|
576 |
+
'Ꮯ' => 'ꮯ',
|
577 |
+
'Ꮰ' => 'ꮰ',
|
578 |
+
'Ꮱ' => 'ꮱ',
|
579 |
+
'Ꮲ' => 'ꮲ',
|
580 |
+
'Ꮳ' => 'ꮳ',
|
581 |
+
'Ꮴ' => 'ꮴ',
|
582 |
+
'Ꮵ' => 'ꮵ',
|
583 |
+
'Ꮶ' => 'ꮶ',
|
584 |
+
'Ꮷ' => 'ꮷ',
|
585 |
+
'Ꮸ' => 'ꮸ',
|
586 |
+
'Ꮹ' => 'ꮹ',
|
587 |
+
'Ꮺ' => 'ꮺ',
|
588 |
+
'Ꮻ' => 'ꮻ',
|
589 |
+
'Ꮼ' => 'ꮼ',
|
590 |
+
'Ꮽ' => 'ꮽ',
|
591 |
+
'Ꮾ' => 'ꮾ',
|
592 |
+
'Ꮿ' => 'ꮿ',
|
593 |
+
'Ᏸ' => 'ᏸ',
|
594 |
+
'Ᏹ' => 'ᏹ',
|
595 |
+
'Ᏺ' => 'ᏺ',
|
596 |
+
'Ᏻ' => 'ᏻ',
|
597 |
+
'Ᏼ' => 'ᏼ',
|
598 |
+
'Ᏽ' => 'ᏽ',
|
599 |
+
'Ა' => 'ა',
|
600 |
+
'Ბ' => 'ბ',
|
601 |
+
'Გ' => 'გ',
|
602 |
+
'Დ' => 'დ',
|
603 |
+
'Ე' => 'ე',
|
604 |
+
'Ვ' => 'ვ',
|
605 |
+
'Ზ' => 'ზ',
|
606 |
+
'Თ' => 'თ',
|
607 |
+
'Ი' => 'ი',
|
608 |
+
'Კ' => 'კ',
|
609 |
+
'Ლ' => 'ლ',
|
610 |
+
'Მ' => 'მ',
|
611 |
+
'Ნ' => 'ნ',
|
612 |
+
'Ო' => 'ო',
|
613 |
+
'Პ' => 'პ',
|
614 |
+
'Ჟ' => 'ჟ',
|
615 |
+
'Რ' => 'რ',
|
616 |
+
'Ს' => 'ს',
|
617 |
+
'Ტ' => 'ტ',
|
618 |
+
'Უ' => 'უ',
|
619 |
+
'Ფ' => 'ფ',
|
620 |
+
'Ქ' => 'ქ',
|
621 |
+
'Ღ' => 'ღ',
|
622 |
+
'Ყ' => 'ყ',
|
623 |
+
'Შ' => 'შ',
|
624 |
+
'Ჩ' => 'ჩ',
|
625 |
+
'Ც' => 'ც',
|
626 |
+
'Ძ' => 'ძ',
|
627 |
+
'Წ' => 'წ',
|
628 |
+
'Ჭ' => 'ჭ',
|
629 |
+
'Ხ' => 'ხ',
|
630 |
+
'Ჯ' => 'ჯ',
|
631 |
+
'Ჰ' => 'ჰ',
|
632 |
+
'Ჱ' => 'ჱ',
|
633 |
+
'Ჲ' => 'ჲ',
|
634 |
+
'Ჳ' => 'ჳ',
|
635 |
+
'Ჴ' => 'ჴ',
|
636 |
+
'Ჵ' => 'ჵ',
|
637 |
+
'Ჶ' => 'ჶ',
|
638 |
+
'Ჷ' => 'ჷ',
|
639 |
+
'Ჸ' => 'ჸ',
|
640 |
+
'Ჹ' => 'ჹ',
|
641 |
+
'Ჺ' => 'ჺ',
|
642 |
+
'Ჽ' => 'ჽ',
|
643 |
+
'Ჾ' => 'ჾ',
|
644 |
+
'Ჿ' => 'ჿ',
|
645 |
'Ḁ' => 'ḁ',
|
646 |
'Ḃ' => 'ḃ',
|
647 |
'Ḅ' => 'ḅ',
|
1125 |
'Ɜ' => 'ɜ',
|
1126 |
'Ɡ' => 'ɡ',
|
1127 |
'Ɬ' => 'ɬ',
|
1128 |
+
'Ɪ' => 'ɪ',
|
1129 |
'Ʞ' => 'ʞ',
|
1130 |
'Ʇ' => 'ʇ',
|
1131 |
+
'Ʝ' => 'ʝ',
|
1132 |
+
'Ꭓ' => 'ꭓ',
|
1133 |
+
'Ꞵ' => 'ꞵ',
|
1134 |
+
'Ꞷ' => 'ꞷ',
|
1135 |
+
'Ꞹ' => 'ꞹ',
|
1136 |
+
'Ꞻ' => 'ꞻ',
|
1137 |
+
'Ꞽ' => 'ꞽ',
|
1138 |
+
'Ꞿ' => 'ꞿ',
|
1139 |
+
'Ꟃ' => 'ꟃ',
|
1140 |
+
'Ꞔ' => 'ꞔ',
|
1141 |
+
'Ʂ' => 'ʂ',
|
1142 |
+
'Ᶎ' => 'ᶎ',
|
1143 |
+
'Ꟈ' => 'ꟈ',
|
1144 |
+
'Ꟊ' => 'ꟊ',
|
1145 |
+
'Ꟶ' => 'ꟶ',
|
1146 |
'A' => 'a',
|
1147 |
'B' => 'b',
|
1148 |
'C' => 'c',
|
1209 |
'𐐥' => '𐑍',
|
1210 |
'𐐦' => '𐑎',
|
1211 |
'𐐧' => '𐑏',
|
1212 |
+
'𐒰' => '𐓘',
|
1213 |
+
'𐒱' => '𐓙',
|
1214 |
+
'𐒲' => '𐓚',
|
1215 |
+
'𐒳' => '𐓛',
|
1216 |
+
'𐒴' => '𐓜',
|
1217 |
+
'𐒵' => '𐓝',
|
1218 |
+
'𐒶' => '𐓞',
|
1219 |
+
'𐒷' => '𐓟',
|
1220 |
+
'𐒸' => '𐓠',
|
1221 |
+
'𐒹' => '𐓡',
|
1222 |
+
'𐒺' => '𐓢',
|
1223 |
+
'𐒻' => '𐓣',
|
1224 |
+
'𐒼' => '𐓤',
|
1225 |
+
'𐒽' => '𐓥',
|
1226 |
+
'𐒾' => '𐓦',
|
1227 |
+
'𐒿' => '𐓧',
|
1228 |
+
'𐓀' => '𐓨',
|
1229 |
+
'𐓁' => '𐓩',
|
1230 |
+
'𐓂' => '𐓪',
|
1231 |
+
'𐓃' => '𐓫',
|
1232 |
+
'𐓄' => '𐓬',
|
1233 |
+
'𐓅' => '𐓭',
|
1234 |
+
'𐓆' => '𐓮',
|
1235 |
+
'𐓇' => '𐓯',
|
1236 |
+
'𐓈' => '𐓰',
|
1237 |
+
'𐓉' => '𐓱',
|
1238 |
+
'𐓊' => '𐓲',
|
1239 |
+
'𐓋' => '𐓳',
|
1240 |
+
'𐓌' => '𐓴',
|
1241 |
+
'𐓍' => '𐓵',
|
1242 |
+
'𐓎' => '𐓶',
|
1243 |
+
'𐓏' => '𐓷',
|
1244 |
+
'𐓐' => '𐓸',
|
1245 |
+
'𐓑' => '𐓹',
|
1246 |
+
'𐓒' => '𐓺',
|
1247 |
+
'𐓓' => '𐓻',
|
1248 |
+
'𐲀' => '𐳀',
|
1249 |
+
'𐲁' => '𐳁',
|
1250 |
+
'𐲂' => '𐳂',
|
1251 |
+
'𐲃' => '𐳃',
|
1252 |
+
'𐲄' => '𐳄',
|
1253 |
+
'𐲅' => '𐳅',
|
1254 |
+
'𐲆' => '𐳆',
|
1255 |
+
'𐲇' => '𐳇',
|
1256 |
+
'𐲈' => '𐳈',
|
1257 |
+
'𐲉' => '𐳉',
|
1258 |
+
'𐲊' => '𐳊',
|
1259 |
+
'𐲋' => '𐳋',
|
1260 |
+
'𐲌' => '𐳌',
|
1261 |
+
'𐲍' => '𐳍',
|
1262 |
+
'𐲎' => '𐳎',
|
1263 |
+
'𐲏' => '𐳏',
|
1264 |
+
'𐲐' => '𐳐',
|
1265 |
+
'𐲑' => '𐳑',
|
1266 |
+
'𐲒' => '𐳒',
|
1267 |
+
'𐲓' => '𐳓',
|
1268 |
+
'𐲔' => '𐳔',
|
1269 |
+
'𐲕' => '𐳕',
|
1270 |
+
'𐲖' => '𐳖',
|
1271 |
+
'𐲗' => '𐳗',
|
1272 |
+
'𐲘' => '𐳘',
|
1273 |
+
'𐲙' => '𐳙',
|
1274 |
+
'𐲚' => '𐳚',
|
1275 |
+
'𐲛' => '𐳛',
|
1276 |
+
'𐲜' => '𐳜',
|
1277 |
+
'𐲝' => '𐳝',
|
1278 |
+
'𐲞' => '𐳞',
|
1279 |
+
'𐲟' => '𐳟',
|
1280 |
+
'𐲠' => '𐳠',
|
1281 |
+
'𐲡' => '𐳡',
|
1282 |
+
'𐲢' => '𐳢',
|
1283 |
+
'𐲣' => '𐳣',
|
1284 |
+
'𐲤' => '𐳤',
|
1285 |
+
'𐲥' => '𐳥',
|
1286 |
+
'𐲦' => '𐳦',
|
1287 |
+
'𐲧' => '𐳧',
|
1288 |
+
'𐲨' => '𐳨',
|
1289 |
+
'𐲩' => '𐳩',
|
1290 |
+
'𐲪' => '𐳪',
|
1291 |
+
'𐲫' => '𐳫',
|
1292 |
+
'𐲬' => '𐳬',
|
1293 |
+
'𐲭' => '𐳭',
|
1294 |
+
'𐲮' => '𐳮',
|
1295 |
+
'𐲯' => '𐳯',
|
1296 |
+
'𐲰' => '𐳰',
|
1297 |
+
'𐲱' => '𐳱',
|
1298 |
+
'𐲲' => '𐳲',
|
1299 |
'𑢠' => '𑣀',
|
1300 |
'𑢡' => '𑣁',
|
1301 |
'𑢢' => '𑣂',
|
1328 |
'𑢽' => '𑣝',
|
1329 |
'𑢾' => '𑣞',
|
1330 |
'𑢿' => '𑣟',
|
1331 |
+
'𖹀' => '𖹠',
|
1332 |
+
'𖹁' => '𖹡',
|
1333 |
+
'𖹂' => '𖹢',
|
1334 |
+
'𖹃' => '𖹣',
|
1335 |
+
'𖹄' => '𖹤',
|
1336 |
+
'𖹅' => '𖹥',
|
1337 |
+
'𖹆' => '𖹦',
|
1338 |
+
'𖹇' => '𖹧',
|
1339 |
+
'𖹈' => '𖹨',
|
1340 |
+
'𖹉' => '𖹩',
|
1341 |
+
'𖹊' => '𖹪',
|
1342 |
+
'𖹋' => '𖹫',
|
1343 |
+
'𖹌' => '𖹬',
|
1344 |
+
'𖹍' => '𖹭',
|
1345 |
+
'𖹎' => '𖹮',
|
1346 |
+
'𖹏' => '𖹯',
|
1347 |
+
'𖹐' => '𖹰',
|
1348 |
+
'𖹑' => '𖹱',
|
1349 |
+
'𖹒' => '𖹲',
|
1350 |
+
'𖹓' => '𖹳',
|
1351 |
+
'𖹔' => '𖹴',
|
1352 |
+
'𖹕' => '𖹵',
|
1353 |
+
'𖹖' => '𖹶',
|
1354 |
+
'𖹗' => '𖹷',
|
1355 |
+
'𖹘' => '𖹸',
|
1356 |
+
'𖹙' => '𖹹',
|
1357 |
+
'𖹚' => '𖹺',
|
1358 |
+
'𖹛' => '𖹻',
|
1359 |
+
'𖹜' => '𖹼',
|
1360 |
+
'𖹝' => '𖹽',
|
1361 |
+
'𖹞' => '𖹾',
|
1362 |
+
'𖹟' => '𖹿',
|
1363 |
+
'𞤀' => '𞤢',
|
1364 |
+
'𞤁' => '𞤣',
|
1365 |
+
'𞤂' => '𞤤',
|
1366 |
+
'𞤃' => '𞤥',
|
1367 |
+
'𞤄' => '𞤦',
|
1368 |
+
'𞤅' => '𞤧',
|
1369 |
+
'𞤆' => '𞤨',
|
1370 |
+
'𞤇' => '𞤩',
|
1371 |
+
'𞤈' => '𞤪',
|
1372 |
+
'𞤉' => '𞤫',
|
1373 |
+
'𞤊' => '𞤬',
|
1374 |
+
'𞤋' => '𞤭',
|
1375 |
+
'𞤌' => '𞤮',
|
1376 |
+
'𞤍' => '𞤯',
|
1377 |
+
'𞤎' => '𞤰',
|
1378 |
+
'𞤏' => '𞤱',
|
1379 |
+
'𞤐' => '𞤲',
|
1380 |
+
'𞤑' => '𞤳',
|
1381 |
+
'𞤒' => '𞤴',
|
1382 |
+
'𞤓' => '𞤵',
|
1383 |
+
'𞤔' => '𞤶',
|
1384 |
+
'𞤕' => '𞤷',
|
1385 |
+
'𞤖' => '𞤸',
|
1386 |
+
'𞤗' => '𞤹',
|
1387 |
+
'𞤘' => '𞤺',
|
1388 |
+
'𞤙' => '𞤻',
|
1389 |
+
'𞤚' => '𞤼',
|
1390 |
+
'𞤛' => '𞤽',
|
1391 |
+
'𞤜' => '𞤾',
|
1392 |
+
'𞤝' => '𞤿',
|
1393 |
+
'𞤞' => '𞥀',
|
1394 |
+
'𞤟' => '𞥁',
|
1395 |
+
'𞤠' => '𞥂',
|
1396 |
+
'𞤡' => '𞥃',
|
1397 |
);
|
vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
return array(
|
4 |
'a' => 'A',
|
5 |
'b' => 'B',
|
6 |
'c' => 'C',
|
@@ -225,6 +225,7 @@ return array(
|
|
225 |
'ɦ' => 'Ɦ',
|
226 |
'ɨ' => 'Ɨ',
|
227 |
'ɩ' => 'Ɩ',
|
|
|
228 |
'ɫ' => 'Ɫ',
|
229 |
'ɬ' => 'Ɬ',
|
230 |
'ɯ' => 'Ɯ',
|
@@ -233,6 +234,7 @@ return array(
|
|
233 |
'ɵ' => 'Ɵ',
|
234 |
'ɽ' => 'Ɽ',
|
235 |
'ʀ' => 'Ʀ',
|
|
|
236 |
'ʃ' => 'Ʃ',
|
237 |
'ʇ' => 'Ʇ',
|
238 |
'ʈ' => 'Ʈ',
|
@@ -241,6 +243,7 @@ return array(
|
|
241 |
'ʋ' => 'Ʋ',
|
242 |
'ʌ' => 'Ʌ',
|
243 |
'ʒ' => 'Ʒ',
|
|
|
244 |
'ʞ' => 'Ʞ',
|
245 |
'ͅ' => 'Ι',
|
246 |
'ͱ' => 'Ͱ',
|
@@ -493,8 +496,70 @@ return array(
|
|
493 |
'ք' => 'Ք',
|
494 |
'օ' => 'Օ',
|
495 |
'ֆ' => 'Ֆ',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
496 |
'ᵹ' => 'Ᵹ',
|
497 |
'ᵽ' => 'Ᵽ',
|
|
|
498 |
'ḁ' => 'Ḁ',
|
499 |
'ḃ' => 'Ḃ',
|
500 |
'ḅ' => 'Ḅ',
|
@@ -993,6 +1058,7 @@ return array(
|
|
993 |
'ꞌ' => 'Ꞌ',
|
994 |
'ꞑ' => 'Ꞑ',
|
995 |
'ꞓ' => 'Ꞓ',
|
|
|
996 |
'ꞗ' => 'Ꞗ',
|
997 |
'ꞙ' => 'Ꞙ',
|
998 |
'ꞛ' => 'Ꞛ',
|
@@ -1003,6 +1069,97 @@ return array(
|
|
1003 |
'ꞥ' => 'Ꞥ',
|
1004 |
'ꞧ' => 'Ꞧ',
|
1005 |
'ꞩ' => 'Ꞩ',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1006 |
'a' => 'A',
|
1007 |
'b' => 'B',
|
1008 |
'c' => 'C',
|
@@ -1069,6 +1226,93 @@ return array(
|
|
1069 |
'𐑍' => '𐐥',
|
1070 |
'𐑎' => '𐐦',
|
1071 |
'𐑏' => '𐐧',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1072 |
'𑣀' => '𑢠',
|
1073 |
'𑣁' => '𑢡',
|
1074 |
'𑣂' => '𑢢',
|
@@ -1101,4 +1345,70 @@ return array(
|
|
1101 |
'𑣝' => '𑢽',
|
1102 |
'𑣞' => '𑢾',
|
1103 |
'𑣟' => '𑢿',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1104 |
);
|
1 |
<?php
|
2 |
|
3 |
+
return array (
|
4 |
'a' => 'A',
|
5 |
'b' => 'B',
|
6 |
'c' => 'C',
|
225 |
'ɦ' => 'Ɦ',
|
226 |
'ɨ' => 'Ɨ',
|
227 |
'ɩ' => 'Ɩ',
|
228 |
+
'ɪ' => 'Ɪ',
|
229 |
'ɫ' => 'Ɫ',
|
230 |
'ɬ' => 'Ɬ',
|
231 |
'ɯ' => 'Ɯ',
|
234 |
'ɵ' => 'Ɵ',
|
235 |
'ɽ' => 'Ɽ',
|
236 |
'ʀ' => 'Ʀ',
|
237 |
+
'ʂ' => 'Ʂ',
|
238 |
'ʃ' => 'Ʃ',
|
239 |
'ʇ' => 'Ʇ',
|
240 |
'ʈ' => 'Ʈ',
|
243 |
'ʋ' => 'Ʋ',
|
244 |
'ʌ' => 'Ʌ',
|
245 |
'ʒ' => 'Ʒ',
|
246 |
+
'ʝ' => 'Ʝ',
|
247 |
'ʞ' => 'Ʞ',
|
248 |
'ͅ' => 'Ι',
|
249 |
'ͱ' => 'Ͱ',
|
496 |
'ք' => 'Ք',
|
497 |
'օ' => 'Օ',
|
498 |
'ֆ' => 'Ֆ',
|
499 |
+
'ა' => 'Ა',
|
500 |
+
'ბ' => 'Ბ',
|
501 |
+
'გ' => 'Გ',
|
502 |
+
'დ' => 'Დ',
|
503 |
+
'ე' => 'Ე',
|
504 |
+
'ვ' => 'Ვ',
|
505 |
+
'ზ' => 'Ზ',
|
506 |
+
'თ' => 'Თ',
|
507 |
+
'ი' => 'Ი',
|
508 |
+
'კ' => 'Კ',
|
509 |
+
'ლ' => 'Ლ',
|
510 |
+
'მ' => 'Მ',
|
511 |
+
'ნ' => 'Ნ',
|
512 |
+
'ო' => 'Ო',
|
513 |
+
'პ' => 'Პ',
|
514 |
+
'ჟ' => 'Ჟ',
|
515 |
+
'რ' => 'Რ',
|
516 |
+
'ს' => 'Ს',
|
517 |
+
'ტ' => 'Ტ',
|
518 |
+
'უ' => 'Უ',
|
519 |
+
'ფ' => 'Ფ',
|
520 |
+
'ქ' => 'Ქ',
|
521 |
+
'ღ' => 'Ღ',
|
522 |
+
'ყ' => 'Ყ',
|
523 |
+
'შ' => 'Შ',
|
524 |
+
'ჩ' => 'Ჩ',
|
525 |
+
'ც' => 'Ც',
|
526 |
+
'ძ' => 'Ძ',
|
527 |
+
'წ' => 'Წ',
|
528 |
+
'ჭ' => 'Ჭ',
|
529 |
+
'ხ' => 'Ხ',
|
530 |
+
'ჯ' => 'Ჯ',
|
531 |
+
'ჰ' => 'Ჰ',
|
532 |
+
'ჱ' => 'Ჱ',
|
533 |
+
'ჲ' => 'Ჲ',
|
534 |
+
'ჳ' => 'Ჳ',
|
535 |
+
'ჴ' => 'Ჴ',
|
536 |
+
'ჵ' => 'Ჵ',
|
537 |
+
'ჶ' => 'Ჶ',
|
538 |
+
'ჷ' => 'Ჷ',
|
539 |
+
'ჸ' => 'Ჸ',
|
540 |
+
'ჹ' => 'Ჹ',
|
541 |
+
'ჺ' => 'Ჺ',
|
542 |
+
'ჽ' => 'Ჽ',
|
543 |
+
'ჾ' => 'Ჾ',
|
544 |
+
'ჿ' => 'Ჿ',
|
545 |
+
'ᏸ' => 'Ᏸ',
|
546 |
+
'ᏹ' => 'Ᏹ',
|
547 |
+
'ᏺ' => 'Ᏺ',
|
548 |
+
'ᏻ' => 'Ᏻ',
|
549 |
+
'ᏼ' => 'Ᏼ',
|
550 |
+
'ᏽ' => 'Ᏽ',
|
551 |
+
'ᲀ' => 'В',
|
552 |
+
'ᲁ' => 'Д',
|
553 |
+
'ᲂ' => 'О',
|
554 |
+
'ᲃ' => 'С',
|
555 |
+
'ᲄ' => 'Т',
|
556 |
+
'ᲅ' => 'Т',
|
557 |
+
'ᲆ' => 'Ъ',
|
558 |
+
'ᲇ' => 'Ѣ',
|
559 |
+
'ᲈ' => 'Ꙋ',
|
560 |
'ᵹ' => 'Ᵹ',
|
561 |
'ᵽ' => 'Ᵽ',
|
562 |
+
'ᶎ' => 'Ᶎ',
|
563 |
'ḁ' => 'Ḁ',
|
564 |
'ḃ' => 'Ḃ',
|
565 |
'ḅ' => 'Ḅ',
|
1058 |
'ꞌ' => 'Ꞌ',
|
1059 |
'ꞑ' => 'Ꞑ',
|
1060 |
'ꞓ' => 'Ꞓ',
|
1061 |
+
'ꞔ' => 'Ꞔ',
|
1062 |
'ꞗ' => 'Ꞗ',
|
1063 |
'ꞙ' => 'Ꞙ',
|
1064 |
'ꞛ' => 'Ꞛ',
|
1069 |
'ꞥ' => 'Ꞥ',
|
1070 |
'ꞧ' => 'Ꞧ',
|
1071 |
'ꞩ' => 'Ꞩ',
|
1072 |
+
'ꞵ' => 'Ꞵ',
|
1073 |
+
'ꞷ' => 'Ꞷ',
|
1074 |
+
'ꞹ' => 'Ꞹ',
|
1075 |
+
'ꞻ' => 'Ꞻ',
|
1076 |
+
'ꞽ' => 'Ꞽ',
|
1077 |
+
'ꞿ' => 'Ꞿ',
|
1078 |
+
'ꟃ' => 'Ꟃ',
|
1079 |
+
'ꟈ' => 'Ꟈ',
|
1080 |
+
'ꟊ' => 'Ꟊ',
|
1081 |
+
'ꟶ' => 'Ꟶ',
|
1082 |
+
'ꭓ' => 'Ꭓ',
|
1083 |
+
'ꭰ' => 'Ꭰ',
|
1084 |
+
'ꭱ' => 'Ꭱ',
|
1085 |
+
'ꭲ' => 'Ꭲ',
|
1086 |
+
'ꭳ' => 'Ꭳ',
|
1087 |
+
'ꭴ' => 'Ꭴ',
|
1088 |
+
'ꭵ' => 'Ꭵ',
|
1089 |
+
'ꭶ' => 'Ꭶ',
|
1090 |
+
'ꭷ' => 'Ꭷ',
|
1091 |
+
'ꭸ' => 'Ꭸ',
|
1092 |
+
'ꭹ' => 'Ꭹ',
|
1093 |
+
'ꭺ' => 'Ꭺ',
|
1094 |
+
'ꭻ' => 'Ꭻ',
|
1095 |
+
'ꭼ' => 'Ꭼ',
|
1096 |
+
'ꭽ' => 'Ꭽ',
|
1097 |
+
'ꭾ' => 'Ꭾ',
|
1098 |
+
'ꭿ' => 'Ꭿ',
|
1099 |
+
'ꮀ' => 'Ꮀ',
|
1100 |
+
'ꮁ' => 'Ꮁ',
|
1101 |
+
'ꮂ' => 'Ꮂ',
|
1102 |
+
'ꮃ' => 'Ꮃ',
|
1103 |
+
'ꮄ' => 'Ꮄ',
|
1104 |
+
'ꮅ' => 'Ꮅ',
|
1105 |
+
'ꮆ' => 'Ꮆ',
|
1106 |
+
'ꮇ' => 'Ꮇ',
|
1107 |
+
'ꮈ' => 'Ꮈ',
|
1108 |
+
'ꮉ' => 'Ꮉ',
|
1109 |
+
'ꮊ' => 'Ꮊ',
|
1110 |
+
'ꮋ' => 'Ꮋ',
|
1111 |
+
'ꮌ' => 'Ꮌ',
|
1112 |
+
'ꮍ' => 'Ꮍ',
|
1113 |
+
'ꮎ' => 'Ꮎ',
|
1114 |
+
'ꮏ' => 'Ꮏ',
|
1115 |
+
'ꮐ' => 'Ꮐ',
|
1116 |
+
'ꮑ' => 'Ꮑ',
|
1117 |
+
'ꮒ' => 'Ꮒ',
|
1118 |
+
'ꮓ' => 'Ꮓ',
|
1119 |
+
'ꮔ' => 'Ꮔ',
|
1120 |
+
'ꮕ' => 'Ꮕ',
|
1121 |
+
'ꮖ' => 'Ꮖ',
|
1122 |
+
'ꮗ' => 'Ꮗ',
|
1123 |
+
'ꮘ' => 'Ꮘ',
|
1124 |
+
'ꮙ' => 'Ꮙ',
|
1125 |
+
'ꮚ' => 'Ꮚ',
|
1126 |
+
'ꮛ' => 'Ꮛ',
|
1127 |
+
'ꮜ' => 'Ꮜ',
|
1128 |
+
'ꮝ' => 'Ꮝ',
|
1129 |
+
'ꮞ' => 'Ꮞ',
|
1130 |
+
'ꮟ' => 'Ꮟ',
|
1131 |
+
'ꮠ' => 'Ꮠ',
|
1132 |
+
'ꮡ' => 'Ꮡ',
|
1133 |
+
'ꮢ' => 'Ꮢ',
|
1134 |
+
'ꮣ' => 'Ꮣ',
|
1135 |
+
'ꮤ' => 'Ꮤ',
|
1136 |
+
'ꮥ' => 'Ꮥ',
|
1137 |
+
'ꮦ' => 'Ꮦ',
|
1138 |
+
'ꮧ' => 'Ꮧ',
|
1139 |
+
'ꮨ' => 'Ꮨ',
|
1140 |
+
'ꮩ' => 'Ꮩ',
|
1141 |
+
'ꮪ' => 'Ꮪ',
|
1142 |
+
'ꮫ' => 'Ꮫ',
|
1143 |
+
'ꮬ' => 'Ꮬ',
|
1144 |
+
'ꮭ' => 'Ꮭ',
|
1145 |
+
'ꮮ' => 'Ꮮ',
|
1146 |
+
'ꮯ' => 'Ꮯ',
|
1147 |
+
'ꮰ' => 'Ꮰ',
|
1148 |
+
'ꮱ' => 'Ꮱ',
|
1149 |
+
'ꮲ' => 'Ꮲ',
|
1150 |
+
'ꮳ' => 'Ꮳ',
|
1151 |
+
'ꮴ' => 'Ꮴ',
|
1152 |
+
'ꮵ' => 'Ꮵ',
|
1153 |
+
'ꮶ' => 'Ꮶ',
|
1154 |
+
'ꮷ' => 'Ꮷ',
|
1155 |
+
'ꮸ' => 'Ꮸ',
|
1156 |
+
'ꮹ' => 'Ꮹ',
|
1157 |
+
'ꮺ' => 'Ꮺ',
|
1158 |
+
'ꮻ' => 'Ꮻ',
|
1159 |
+
'ꮼ' => 'Ꮼ',
|
1160 |
+
'ꮽ' => 'Ꮽ',
|
1161 |
+
'ꮾ' => 'Ꮾ',
|
1162 |
+
'ꮿ' => 'Ꮿ',
|
1163 |
'a' => 'A',
|
1164 |
'b' => 'B',
|
1165 |
'c' => 'C',
|
1226 |
'𐑍' => '𐐥',
|
1227 |
'𐑎' => '𐐦',
|
1228 |
'𐑏' => '𐐧',
|
1229 |
+
'𐓘' => '𐒰',
|
1230 |
+
'𐓙' => '𐒱',
|
1231 |
+
'𐓚' => '𐒲',
|
1232 |
+
'𐓛' => '𐒳',
|
1233 |
+
'𐓜' => '𐒴',
|
1234 |
+
'𐓝' => '𐒵',
|
1235 |
+
'𐓞' => '𐒶',
|
1236 |
+
'𐓟' => '𐒷',
|
1237 |
+
'𐓠' => '𐒸',
|
1238 |
+
'𐓡' => '𐒹',
|
1239 |
+
'𐓢' => '𐒺',
|
1240 |
+
'𐓣' => '𐒻',
|
1241 |
+
'𐓤' => '𐒼',
|
1242 |
+
'𐓥' => '𐒽',
|
1243 |
+
'𐓦' => '𐒾',
|
1244 |
+
'𐓧' => '𐒿',
|
1245 |
+
'𐓨' => '𐓀',
|
1246 |
+
'𐓩' => '𐓁',
|
1247 |
+
'𐓪' => '𐓂',
|
1248 |
+
'𐓫' => '𐓃',
|
1249 |
+
'𐓬' => '𐓄',
|
1250 |
+
'𐓭' => '𐓅',
|
1251 |
+
'𐓮' => '𐓆',
|
1252 |
+
'𐓯' => '𐓇',
|
1253 |
+
'𐓰' => '𐓈',
|
1254 |
+
'𐓱' => '𐓉',
|
1255 |
+
'𐓲' => '𐓊',
|
1256 |
+
'𐓳' => '𐓋',
|
1257 |
+
'𐓴' => '𐓌',
|
1258 |
+
'𐓵' => '𐓍',
|
1259 |
+
'𐓶' => '𐓎',
|
1260 |
+
'𐓷' => '𐓏',
|
1261 |
+
'𐓸' => '𐓐',
|
1262 |
+
'𐓹' => '𐓑',
|
1263 |
+
'𐓺' => '𐓒',
|
1264 |
+
'𐓻' => '𐓓',
|
1265 |
+
'𐳀' => '𐲀',
|
1266 |
+
'𐳁' => '𐲁',
|
1267 |
+
'𐳂' => '𐲂',
|
1268 |
+
'𐳃' => '𐲃',
|
1269 |
+
'𐳄' => '𐲄',
|
1270 |
+
'𐳅' => '𐲅',
|
1271 |
+
'𐳆' => '𐲆',
|
1272 |
+
'𐳇' => '𐲇',
|
1273 |
+
'𐳈' => '𐲈',
|
1274 |
+
'𐳉' => '𐲉',
|
1275 |
+
'𐳊' => '𐲊',
|
1276 |
+
'𐳋' => '𐲋',
|
1277 |
+
'𐳌' => '𐲌',
|
1278 |
+
'𐳍' => '𐲍',
|
1279 |
+
'𐳎' => '𐲎',
|
1280 |
+
'𐳏' => '𐲏',
|
1281 |
+
'𐳐' => '𐲐',
|
1282 |
+
'𐳑' => '𐲑',
|
1283 |
+
'𐳒' => '𐲒',
|
1284 |
+
'𐳓' => '𐲓',
|
1285 |
+
'𐳔' => '𐲔',
|
1286 |
+
'𐳕' => '𐲕',
|
1287 |
+
'𐳖' => '𐲖',
|
1288 |
+
'𐳗' => '𐲗',
|
1289 |
+
'𐳘' => '𐲘',
|
1290 |
+
'𐳙' => '𐲙',
|
1291 |
+
'𐳚' => '𐲚',
|
1292 |
+
'𐳛' => '𐲛',
|
1293 |
+
'𐳜' => '𐲜',
|
1294 |
+
'𐳝' => '𐲝',
|
1295 |
+
'𐳞' => '𐲞',
|
1296 |
+
'𐳟' => '𐲟',
|
1297 |
+
'𐳠' => '𐲠',
|
1298 |
+
'𐳡' => '𐲡',
|
1299 |
+
'𐳢' => '𐲢',
|
1300 |
+
'𐳣' => '𐲣',
|
1301 |
+
'𐳤' => '𐲤',
|
1302 |
+
'𐳥' => '𐲥',
|
1303 |
+
'𐳦' => '𐲦',
|
1304 |
+
'𐳧' => '𐲧',
|
1305 |
+
'𐳨' => '𐲨',
|
1306 |
+
'𐳩' => '𐲩',
|
1307 |
+
'𐳪' => '𐲪',
|
1308 |
+
'𐳫' => '𐲫',
|
1309 |
+
'𐳬' => '𐲬',
|
1310 |
+
'𐳭' => '𐲭',
|
1311 |
+
'𐳮' => '𐲮',
|
1312 |
+
'𐳯' => '𐲯',
|
1313 |
+
'𐳰' => '𐲰',
|
1314 |
+
'𐳱' => '𐲱',
|
1315 |
+
'𐳲' => '𐲲',
|
1316 |
'𑣀' => '𑢠',
|
1317 |
'𑣁' => '𑢡',
|
1318 |
'𑣂' => '𑢢',
|
1345 |
'𑣝' => '𑢽',
|
1346 |
'𑣞' => '𑢾',
|
1347 |
'𑣟' => '𑢿',
|
1348 |
+
'𖹠' => '𖹀',
|
1349 |
+
'𖹡' => '𖹁',
|
1350 |
+
'𖹢' => '𖹂',
|
1351 |
+
'𖹣' => '𖹃',
|
1352 |
+
'𖹤' => '𖹄',
|
1353 |
+
'𖹥' => '𖹅',
|
1354 |
+
'𖹦' => '𖹆',
|
1355 |
+
'𖹧' => '𖹇',
|
1356 |
+
'𖹨' => '𖹈',
|
1357 |
+
'𖹩' => '𖹉',
|
1358 |
+
'𖹪' => '𖹊',
|
1359 |
+
'𖹫' => '𖹋',
|
1360 |
+
'𖹬' => '𖹌',
|
1361 |
+
'𖹭' => '𖹍',
|
1362 |
+
'𖹮' => '𖹎',
|
1363 |
+
'𖹯' => '𖹏',
|
1364 |
+
'𖹰' => '𖹐',
|
1365 |
+
'𖹱' => '𖹑',
|
1366 |
+
'𖹲' => '𖹒',
|
1367 |
+
'𖹳' => '𖹓',
|
1368 |
+
'𖹴' => '𖹔',
|
1369 |
+
'𖹵' => '𖹕',
|
1370 |
+
'𖹶' => '𖹖',
|
1371 |
+
'𖹷' => '𖹗',
|
1372 |
+
'𖹸' => '𖹘',
|
1373 |
+
'𖹹' => '𖹙',
|
1374 |
+
'𖹺' => '𖹚',
|
1375 |
+
'𖹻' => '𖹛',
|
1376 |
+
'𖹼' => '𖹜',
|
1377 |
+
'𖹽' => '𖹝',
|
1378 |
+
'𖹾' => '𖹞',
|
1379 |
+
'𖹿' => '𖹟',
|
1380 |
+
'𞤢' => '𞤀',
|
1381 |
+
'𞤣' => '𞤁',
|
1382 |
+
'𞤤' => '𞤂',
|
1383 |
+
'𞤥' => '𞤃',
|
1384 |
+
'𞤦' => '𞤄',
|
1385 |
+
'𞤧' => '𞤅',
|
1386 |
+
'𞤨' => '𞤆',
|
1387 |
+
'𞤩' => '𞤇',
|
1388 |
+
'𞤪' => '𞤈',
|
1389 |
+
'𞤫' => '𞤉',
|
1390 |
+
'𞤬' => '𞤊',
|
1391 |
+
'𞤭' => '𞤋',
|
1392 |
+
'𞤮' => '𞤌',
|
1393 |
+
'𞤯' => '𞤍',
|
1394 |
+
'𞤰' => '𞤎',
|
1395 |
+
'𞤱' => '𞤏',
|
1396 |
+
'𞤲' => '𞤐',
|
1397 |
+
'𞤳' => '𞤑',
|
1398 |
+
'𞤴' => '𞤒',
|
1399 |
+
'𞤵' => '𞤓',
|
1400 |
+
'𞤶' => '𞤔',
|
1401 |
+
'𞤷' => '𞤕',
|
1402 |
+
'𞤸' => '𞤖',
|
1403 |
+
'𞤹' => '𞤗',
|
1404 |
+
'𞤺' => '𞤘',
|
1405 |
+
'𞤻' => '𞤙',
|
1406 |
+
'𞤼' => '𞤚',
|
1407 |
+
'𞤽' => '𞤛',
|
1408 |
+
'𞤾' => '𞤜',
|
1409 |
+
'𞤿' => '𞤝',
|
1410 |
+
'𞥀' => '𞤞',
|
1411 |
+
'𞥁' => '𞤟',
|
1412 |
+
'𞥂' => '𞤠',
|
1413 |
+
'𞥃' => '𞤡',
|
1414 |
);
|
wp_mail_smtp.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Plugin Name: WP Mail SMTP
|
4 |
-
* Version: 2.
|
5 |
* Plugin URI: https://wpmailsmtp.com/
|
6 |
* Description: Reconfigures the <code>wp_mail()</code> function to use Gmail/Mailgun/SendGrid/SMTP instead of the default <code>mail()</code> and creates an options page to manage the settings.
|
7 |
* Author: WPForms
|
@@ -203,7 +203,7 @@ if ( ! function_exists( 'wp_mail_smtp_insecure_php_version_notice' ) ) {
|
|
203 |
}
|
204 |
|
205 |
if ( ! defined( 'WPMS_PLUGIN_VER' ) ) {
|
206 |
-
define( 'WPMS_PLUGIN_VER', '2.
|
207 |
}
|
208 |
if ( ! defined( 'WPMS_PHP_VER' ) ) {
|
209 |
define( 'WPMS_PHP_VER', '5.5.0' );
|
1 |
<?php
|
2 |
/**
|
3 |
* Plugin Name: WP Mail SMTP
|
4 |
+
* Version: 2.2.1
|
5 |
* Plugin URI: https://wpmailsmtp.com/
|
6 |
* Description: Reconfigures the <code>wp_mail()</code> function to use Gmail/Mailgun/SendGrid/SMTP instead of the default <code>mail()</code> and creates an options page to manage the settings.
|
7 |
* Author: WPForms
|
203 |
}
|
204 |
|
205 |
if ( ! defined( 'WPMS_PLUGIN_VER' ) ) {
|
206 |
+
define( 'WPMS_PLUGIN_VER', '2.2.1' );
|
207 |
}
|
208 |
if ( ! defined( 'WPMS_PHP_VER' ) ) {
|
209 |
define( 'WPMS_PHP_VER', '5.5.0' );
|