This commit is contained in:
Javier Casares 2026-06-09 12:55:04 +00:00
commit 6269b77f13
11 changed files with 741 additions and 469 deletions

View file

@ -1,49 +1,170 @@
== Changelog ==
= 2.1.5 =
_Release date: 2026-06-09_
**Added**
* Runtime check at initialization: if the parent SMTP (by ROBOTSTXT) plugin is missing or inactive, the plugin skips initialization and displays an admin notice instead of producing a fatal error.
**Fixed**
* Credentials never saving on first entry: credential validation now only blocks saving for definitive authentication failures (InvalidClientTokenId, SignatureDoesNotMatch, InvalidAccessKeyId). All other AWS errors — wrong region, missing IAM permission, SES not enabled in region, network timeouts — allow saving so the user is not locked out.
* Reply-to email field cannot be cleared: submitting an empty value now explicitly removes the stored address. The parent plugin preserves the existing value when empty is submitted; this filter corrects that behavior.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= 2.1.4 = = 2.1.4 =
* Updated minimum WordPress version to 5.7 (the actual code minimum, verified by static analysis). _Release date: 2026-06-09_
**Changed**
* Minimum WordPress version lowered from 6.5 to 5.7. The plugin code only uses APIs available since WordPress 5.7 (the `pre_wp_mail` filter), verified by static analysis with wp-compat. Note: on WordPress 5.76.4, the `Requires Plugins` dependency header is not enforced by the platform.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= 2.1.3 = = 2.1.3 =
* Fixed nonce handling in manual quota refresh to correctly handle false values returned by filter_input(). _Release date: 2026-06-09_
* Fixed admin notices display to skip non-array notice entries.
* Fixed input normalization for recipients, attachments, and headers to properly skip non-string values instead of attempting unsafe casts. **Fixed**
* Removed unused internal method (dead code cleanup).
* Updated compatibility: tested up to WordPress 7.1. * Nonce handling in manual quota refresh now correctly handles `false` values returned by `filter_input()`.
* Admin notices display now skips non-array notice entries.
* Input normalization for recipients, attachments, and headers now properly skips non-string values instead of attempting unsafe casts.
**Changed**
* Removed unused internal rate limit application method.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= 2.1.2 = = 2.1.2 =
* Fixed charset encoding issue that caused "expected parameter value, got null" error when sending emails through Amazon SES. _Release date: 2026-02-12_
* Added robust charset validation in header parsing to prevent empty or invalid charset values.
* Enhanced charset handling with fallback to UTF-8 when no valid charset is provided. **Fixed**
* Charset encoding issue that caused "expected parameter value, got null" error when sending emails through Amazon SES.
* Charset validation in header parsing now prevents empty or invalid charset values.
* Charset handling falls back to UTF-8 when no valid charset is provided.
**Compatibility**
* WordPress: 6.5 - 6.9
* PHP: 8.2 - 8.4
= 2.1.1 = = 2.1.1 =
* Added comprehensive Amazon SES debug context to test email error reports. _Release date: 2026-02-09_
* Debug information now includes: AWS region, masked access key, SDK version, endpoint URL, and UTC timestamp.
**Added**
* Comprehensive Amazon SES debug context to test email error reports: AWS region, masked access key, SDK version, endpoint URL, and UTC timestamp.
* Enhanced AWS error reporting with request IDs, HTTP status codes, and error codes for easier troubleshooting. * Enhanced AWS error reporting with request IDs, HTTP status codes, and error codes for easier troubleshooting.
* Improved security by masking access keys in error output (shows only first 4 and last 4 characters).
**Security**
* Access keys are now masked in error output, showing only the first and last 4 characters.
**Compatibility**
* WordPress: 6.5 - 6.9
* PHP: 8.2 - 8.4
= 2.1.0 = = 2.1.0 =
* Changed uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin. _Release date: 2026-02-09_
* This ensures Amazon SES credentials are preserved when only the add-on is removed, and properly cleaned when the core plugin is uninstalled.
* Simplified uninstall.php to delegate all cleanup responsibility to core SMTP plugin. **Changed**
* Uninstall behavior: the add-on no longer performs cleanup on its own uninstall. All data cleanup — including Amazon SES credentials — is now handled by the core SMTP plugin when it is uninstalled. This ensures credentials are preserved if only the add-on is removed.
**Compatibility**
* WordPress: 6.5 - 6.9
* PHP: 8.2 - 8.4
= 2.0.1 = = 2.0.1 =
* Version bump for maintenance release. _Release date: 2026-01-30_
**Changed**
* Maintenance release with minor internal fixes.
**Compatibility**
* WordPress: 6.5 - 6.9
* PHP: 8.2 - 8.4
= 2.0.0 = = 2.0.0 =
* Added Reply-To header support for emails sent via Amazon SES. _Release date: 2026-01-29_
* Improved error handling and validation.
* Enhanced compatibility with core SMTP plugin 2.0.0. **Added**
* Improved credential handling and encryption.
* Code quality improvements and documentation. * Reply-To header support for emails sent through Amazon SES.
* **BREAKING CHANGE**: Minimum PHP version increased to 8.2 (required by AWS SDK for PHP).
* Updated AWS SDK for PHP to latest version with security updates. **Changed**
* Minimum PHP version increased to 8.2. Required by the AWS SDK for PHP.
* Updated AWS SDK for PHP to version 3.369.20 with security patches.
**Compatibility**
* WordPress: 6.5 - 6.9
* PHP: 8.2 - 8.4
= 1.0.0 = = 1.0.0 =
* Initial release with Amazon SES credential management, region selection, and live validation inside the SMTP plugin settings. _Release date: 2026-01-27_
* Routes WordPress and SMTP test emails through Amazon SES whenever credentials are configured and verified.
**Highlights**
* Initial release.
**Added**
* Amazon SES credential management (IAM access key, secret key, region) inside the SMTP plugin settings.
* Live credential validation on save via the `GetAccount` API call.
* Region selector with automatic discovery of all SES-enabled AWS endpoints.
* Routes WordPress mail and SMTP test emails through Amazon SES whenever credentials are configured.
* AWS SDK for PHP v3 bundled as a Composer dependency.
**Compatibility**
* WordPress: 6.5 - 6.8
* PHP: 8.2 - 8.3

View file

@ -1210,6 +1210,15 @@ class Plugin {
} }
} }
// The parent plugin only updates reply_to_email when a valid address is submitted — it never
// clears the field. Explicitly clear it here when the user submits an empty value.
if ( array_key_exists( 'reply_to_email', $options ) ) {
$submitted_reply_to = is_string( $options['reply_to_email'] ) ? \sanitize_email( \trim( $options['reply_to_email'] ) ) : '';
if ( '' === $submitted_reply_to ) {
$clean['reply_to_email'] = '';
}
}
return $clean; return $clean;
} }
@ -1491,17 +1500,7 @@ class Plugin {
$message = \esc_html( (string) $message ); $message = \esc_html( (string) $message );
// Allow saving if the error is due to missing IAM permissions (not authorization to use SES itself). // Block only when credentials are definitively wrong (wrong access key or signature).
// The credentials may still work for sending emails which requires different permissions.
if ( 'AccessDeniedException' === $aws_error_code || 'UnauthorizedException' === $aws_error_code ) {
if ( \strpos( $message, 'not authorized to perform: ses:GetAccount' ) !== false ) {
// Permission error for GetAccount API - credentials might still work for sending.
// Return null (success) but we could add a notice here if needed.
return null;
}
}
// For authentication errors (invalid credentials), prevent saving.
if ( in_array( $aws_error_code, array( 'InvalidClientTokenId', 'SignatureDoesNotMatch', 'InvalidAccessKeyId' ), true ) ) { if ( in_array( $aws_error_code, array( 'InvalidClientTokenId', 'SignatureDoesNotMatch', 'InvalidAccessKeyId' ), true ) ) {
return new WP_Error( return new WP_Error(
'robotstxt_smtp_amazon_ses_invalid_credentials', 'robotstxt_smtp_amazon_ses_invalid_credentials',
@ -1513,26 +1512,10 @@ class Plugin {
); );
} }
// For other AWS errors, show warning but allow saving. // Any other AWS error (missing permission, wrong region, SES not enabled in region, etc.) —
return new WP_Error( // the credentials may still be valid for sending. Allow saving.
'robotstxt_smtp_amazon_ses_invalid_credentials',
\sprintf(
/* translators: %s: Error message from Amazon SES. */
\esc_html__( 'Could not verify Amazon SES credentials: %s', 'robotstxt-smtp-amazonses' ),
$message
)
);
} catch ( Throwable $exception ) { } catch ( Throwable $exception ) {
$message = \esc_html( $exception->getMessage() ); unset( $exception ); // Network error or timeout — cannot validate, allow saving.
return new WP_Error(
'robotstxt_smtp_amazon_ses_unexpected_error',
\sprintf(
/* translators: %s: Error message describing the unexpected failure. */
\esc_html__( 'An unexpected error occurred while validating Amazon SES credentials: %s', 'robotstxt-smtp-amazonses' ),
$message
)
);
} }
return null; return null;

View file

@ -1,7 +1,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES\n" "Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES\n"
"POT-Creation-Date: 2026-01-29 10:03+0100\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-"
"amazonses\n"
"POT-Creation-Date: 2026-06-09T10:41:00+00:00\n"
"PO-Revision-Date: 2026-01-29 09:30+0100\n" "PO-Revision-Date: 2026-01-29 09:30+0100\n"
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n" "Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
"Language-Team: Catalan\n" "Language-Team: Catalan\n"
@ -12,304 +14,358 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Manual\n" "X-Generator: Manual\n"
#: includes/class-plugin.php:151 #. Plugin Name of the plugin
msgid "Amazon SES could not send the email because no recipient was provided." #: robotstxt-smtp-amazonses.php
msgstr "Amazon SES no ha pogut enviar l'email perquè no s'ha proporcionat cap destinatari." msgid "SMTP (by ROBOTSTXT) Amazon SES"
msgstr "SMTP (by ROBOTSTXT) Amazon SES"
#: includes/class-plugin.php:224 #. Plugin URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses"
msgstr ""
#. Description of the plugin
#: robotstxt-smtp-amazonses.php
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin."
msgstr "Afegeix suport de configuració d'Amazon SES al plugin ROBOTSTXT SMTP."
#. Author of the plugin
#: robotstxt-smtp-amazonses.php
msgid "ROBOTSTXT"
msgstr "ROBOTSTXT"
#. Author URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://www.robotstxt.es/"
msgstr ""
#: class-robotstxt-updater.php:379
msgid "Security check failed"
msgstr "Ha fallat la comprovació de seguretat"
#: class-robotstxt-updater.php:384 includes/class-plugin.php:918
msgid "You do not have sufficient permissions to access this page."
msgstr "No tens permisos suficients per accedir a aquesta pàgina."
#: includes/class-plugin.php:149
msgid "Amazon SES could not send the email because no recipient was provided."
msgstr ""
"Amazon SES no ha pogut enviar l'email perquè no s'ha proporcionat cap "
"destinatari."
#. translators: %s: Error details describing the email preparation failure.
#: includes/class-plugin.php:231
#, php-format #, php-format
msgid "Amazon SES could not prepare the email: %s" msgid "Amazon SES could not prepare the email: %s"
msgstr "Amazon SES no ha pogut preparar l'email: %s" msgstr "Amazon SES no ha pogut preparar l'email: %s"
#: includes/class-plugin.php:265 #. translators: %s: Error message returned by Amazon SES.
#: includes/class-plugin.php:275
#, php-format #, php-format
msgid "Amazon SES could not send the email: %s" msgid "Amazon SES could not send the email: %s"
msgstr "Amazon SES no ha pogut enviar l'email: %s" msgstr "Amazon SES no ha pogut enviar l'email: %s"
#: includes/class-plugin.php:282 #. translators: %s: Error message describing the unexpected failure.
#: includes/class-plugin.php:295
#, php-format #, php-format
msgid "An unexpected error occurred while sending through Amazon SES: %s" msgid "An unexpected error occurred while sending through Amazon SES: %s"
msgstr "S'ha produït un error inesperat en enviar a través d'Amazon SES: %s" msgstr "S'ha produït un error inesperat en enviar a través d'Amazon SES: %s"
#: includes/class-plugin.php:330 #. translators: %s: Error details describing why the From header is invalid.
#: includes/class-plugin.php:357
#, php-format #, php-format
msgid "Amazon SES rejected the \"From\" address: %s" msgid "Amazon SES rejected the \"From\" address: %s"
msgstr "Amazon SES ha rebutjat l'adreça \"De\": %s" msgstr "Amazon SES ha rebutjat l'adreça \"De\": %s"
#: includes/class-plugin.php:351 #. translators: %s: Invalid recipient email address.
#: includes/class-plugin.php:378
#, php-format #, php-format
msgid "Amazon SES rejected the recipient address: %s" msgid "Amazon SES rejected the recipient address: %s"
msgstr "Amazon SES ha rebutjat l'adreça del destinatari: %s" msgstr "Amazon SES ha rebutjat l'adreça del destinatari: %s"
#: includes/class-plugin.php:373 #. translators: %s: Invalid CC email address.
#: includes/class-plugin.php:400
#, php-format #, php-format
msgid "Amazon SES rejected the CC address: %s" msgid "Amazon SES rejected the CC address: %s"
msgstr "Amazon SES ha rebutjat l'adreça CC: %s" msgstr "Amazon SES ha rebutjat l'adreça CC: %s"
#: includes/class-plugin.php:395 #. translators: %s: Invalid BCC email address.
#: includes/class-plugin.php:422
#, php-format #, php-format
msgid "Amazon SES rejected the BCC address: %s" msgid "Amazon SES rejected the BCC address: %s"
msgstr "Amazon SES ha rebutjat l'adreça CCO: %s" msgstr "Amazon SES ha rebutjat l'adreça CCO: %s"
#: includes/class-plugin.php:417 #. translators: %s: Invalid reply-to email address.
#: includes/class-plugin.php:444
#, php-format #, php-format
msgid "Amazon SES rejected the reply-to address: %s" msgid "Amazon SES rejected the reply-to address: %s"
msgstr "Amazon SES ha rebutjat l'adreça de resposta: %s" msgstr "Amazon SES ha rebutjat l'adreça de resposta: %s"
#: includes/class-plugin.php:446 #. translators: %s: Invalid reply-to email address from settings.
#: includes/class-plugin.php:473
#, php-format #, php-format
msgid "Amazon SES rejected the configured reply-to address: %s" msgid "Amazon SES rejected the configured reply-to address: %s"
msgstr "Amazon SES ha rebutjat l'adreça de resposta configurada: %s" msgstr "Amazon SES ha rebutjat l'adreça de resposta configurada: %s"
#: includes/class-plugin.php:497 #. translators: %s: Attachment path that could not be added.
#: includes/class-plugin.php:524
#, php-format #, php-format
msgid "Amazon SES could not include the attachment: %s" msgid "Amazon SES could not include the attachment: %s"
msgstr "Amazon SES no ha pogut incloure l'adjunt: %s" msgstr "Amazon SES no ha pogut incloure l'adjunt: %s"
#: includes/class-plugin.php:833 #: includes/class-plugin.php:910
msgid "Security check failed." msgid "Security check failed."
msgstr "Ha fallat la comprovació de seguretat." msgstr "Ha fallat la comprovació de seguretat."
#: includes/class-plugin.php:841 robotstxt-updater.php:367 #: includes/class-plugin.php:931
msgid "You do not have sufficient permissions to access this page."
msgstr "No tens permisos suficients per accedir a aquesta pàgina."
#: includes/class-plugin.php:854
msgid "Amazon SES quotas refreshed successfully." msgid "Amazon SES quotas refreshed successfully."
msgstr "Quotes d'Amazon SES actualitzades correctament." msgstr "Quotes d'Amazon SES actualitzades correctament."
#: includes/class-plugin.php:861 #: includes/class-plugin.php:938
msgid "Unable to fetch quotas from Amazon SES. Check debug log for details." msgid "Unable to fetch quotas from Amazon SES. Check debug log for details."
msgstr "No s'han pogut obtenir les quotes d'Amazon SES. Verifica el registre de depuració per a més detalls." msgstr ""
"No s'han pogut obtenir les quotes d'Amazon SES. Verifica el registre de "
"depuració per a més detalls."
#: includes/class-plugin.php:900 #: includes/class-plugin.php:977
msgid "Access Key ID" msgid "Access Key ID"
msgstr "ID de clau d'accés" msgstr "ID de clau d'accés"
#: includes/class-plugin.php:906 #: includes/class-plugin.php:983
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "Clau d'accés secreta" msgstr "Clau d'accés secreta"
#: includes/class-plugin.php:912 #: includes/class-plugin.php:989
msgid "Region" msgid "Region"
msgstr "Regió" msgstr "Regió"
#: includes/class-plugin.php:918 #: includes/class-plugin.php:1028
msgid "From Email"
msgstr "Email remitent"
#: includes/class-plugin.php:924
msgid "From Name"
msgstr "Nom remitent"
#: includes/class-plugin.php:930
msgid "Reply-To Email"
msgstr "Email de resposta"
#: includes/class-plugin.php:936
msgid "Reply-To Name"
msgstr "Nom de resposta"
#: includes/class-plugin.php:951
msgid "Leave empty to keep the stored access key." msgid "Leave empty to keep the stored access key."
msgstr "Deixar buit per mantenir la clau d'accés emmagatzemada." msgstr "Deixar buit per mantenir la clau d'accés emmagatzemada."
#: includes/class-plugin.php:962 #: includes/class-plugin.php:1039
msgid "Provide the IAM access key ID with permissions to send email through Amazon SES. Leave the field empty to retain the existing value." msgid ""
msgstr "Proporciona l'ID de clau d'accés IAM amb permisos per enviar email a través d'Amazon SES. Deixa el camp buit per mantenir el valor existent." "Provide the IAM access key ID with permissions to send email through Amazon "
"SES. Leave the field empty to retain the existing value."
msgstr ""
"Proporciona l'ID de clau d'accés IAM amb permisos per enviar email a través "
"d'Amazon SES. Deixa el camp buit per mantenir el valor existent."
#: includes/class-plugin.php:974 #: includes/class-plugin.php:1051
msgid "Leave empty to keep the stored secret access key." msgid "Leave empty to keep the stored secret access key."
msgstr "Deixar buit per mantenir la clau d'accés secreta emmagatzemada." msgstr "Deixar buit per mantenir la clau d'accés secreta emmagatzemada."
#: includes/class-plugin.php:985 #: includes/class-plugin.php:1062
msgid "Enter the secret access key associated with the IAM user. Leave the field empty to retain the existing value." msgid ""
msgstr "Introdueix la clau d'accés secreta associada amb l'usuari IAM. Deixa el camp buit per mantenir el valor existent." "Enter the secret access key associated with the IAM user. Leave the field "
"empty to retain the existing value."
msgstr ""
"Introdueix la clau d'accés secreta associada amb l'usuari IAM. Deixa el camp "
"buit per mantenir el valor existent."
#: includes/class-plugin.php:1000 #: includes/class-plugin.php:1077
msgid "Select a region" msgid "Select a region"
msgstr "Selecciona una regió" msgstr "Selecciona una regió"
#: includes/class-plugin.php:1005 #: includes/class-plugin.php:1082
msgid "Choose the AWS region where your Amazon SES account is hosted." msgid "Choose the AWS region where your Amazon SES account is hosted."
msgstr "Tria la regió d'AWS on està allotjat el teu compte d'Amazon SES." msgstr "Tria la regió d'AWS on està allotjat el teu compte d'Amazon SES."
#: includes/class-plugin.php:1082 #: includes/class-plugin.php:1160
msgid "The selected Amazon SES region is not available." msgid "The selected Amazon SES region is not available."
msgstr "La regió d'Amazon SES seleccionada no està disponible." msgstr "La regió d'Amazon SES seleccionada no està disponible."
#: includes/class-plugin.php:1102 #: includes/class-plugin.php:1176
msgid "Amazon SES credentials were not saved. Provide an access key, secret key, and region." msgid ""
msgstr "Les credencials d'Amazon SES no s'han desat. Proporciona una clau d'accés, clau secreta i regió." "Amazon SES credentials were not saved. Provide an access key, secret key, "
"and region."
msgstr ""
"Les credencials d'Amazon SES no s'han desat. Proporciona una clau d'accés, "
"clau secreta i regió."
#: includes/class-plugin.php:1126 #: includes/class-plugin.php:1200
msgid "Amazon SES credentials verified successfully." msgid "Amazon SES credentials verified successfully."
msgstr "Credencials d'Amazon SES verificades correctament." msgstr "Credencials d'Amazon SES verificades correctament."
#: includes/class-plugin.php:1281 #: includes/class-plugin.php:1411
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "EUA Est (Ohio)" msgstr "EUA Est (Ohio)"
#: includes/class-plugin.php:1282 #: includes/class-plugin.php:1412
msgid "US East (N. Virginia)" msgid "US East (N. Virginia)"
msgstr "EUA Est (N. Virgínia)" msgstr "EUA Est (N. Virgínia)"
#: includes/class-plugin.php:1283 #: includes/class-plugin.php:1413
msgid "US West (N. California)" msgid "US West (N. California)"
msgstr "EUA Oest (N. Califòrnia)" msgstr "EUA Oest (N. Califòrnia)"
#: includes/class-plugin.php:1284 #: includes/class-plugin.php:1414
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "EUA Oest (Oregon)" msgstr "EUA Oest (Oregon)"
#: includes/class-plugin.php:1285 #: includes/class-plugin.php:1415
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "Àfrica (Ciutat del Cap)" msgstr "Àfrica (Ciutat del Cap)"
#: includes/class-plugin.php:1286 #: includes/class-plugin.php:1416
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "Àsia Pacífic (Hyderabad)" msgstr "Àsia Pacífic (Hyderabad)"
#: includes/class-plugin.php:1287 #: includes/class-plugin.php:1417
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "Àsia Pacífic (Jakarta)" msgstr "Àsia Pacífic (Jakarta)"
#: includes/class-plugin.php:1288 #: includes/class-plugin.php:1418
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "Àsia Pacífic (Mumbai)" msgstr "Àsia Pacífic (Mumbai)"
#: includes/class-plugin.php:1289 #: includes/class-plugin.php:1419
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "Àsia Pacífic (Osaka)" msgstr "Àsia Pacífic (Osaka)"
#: includes/class-plugin.php:1290 #: includes/class-plugin.php:1420
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "Àsia Pacífic (Seül)" msgstr "Àsia Pacífic (Seül)"
#: includes/class-plugin.php:1291 #: includes/class-plugin.php:1421
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "Àsia Pacífic (Singapur)" msgstr "Àsia Pacífic (Singapur)"
#: includes/class-plugin.php:1292 #: includes/class-plugin.php:1422
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "Àsia Pacífic (Sydney)" msgstr "Àsia Pacífic (Sydney)"
#: includes/class-plugin.php:1293 #: includes/class-plugin.php:1423
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "Àsia Pacífic (Tòquio)" msgstr "Àsia Pacífic (Tòquio)"
#: includes/class-plugin.php:1294 #: includes/class-plugin.php:1424
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "Canadà (Central)" msgstr "Canadà (Central)"
#: includes/class-plugin.php:1295 #: includes/class-plugin.php:1425
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "Europa (Frankfurt)" msgstr "Europa (Frankfurt)"
#: includes/class-plugin.php:1296 #: includes/class-plugin.php:1426
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "Europa (Irlanda)" msgstr "Europa (Irlanda)"
#: includes/class-plugin.php:1297 #: includes/class-plugin.php:1427
msgid "Europe (London)" msgid "Europe (London)"
msgstr "Europa (Londres)" msgstr "Europa (Londres)"
#: includes/class-plugin.php:1298 #: includes/class-plugin.php:1428
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "Europa (Milà)" msgstr "Europa (Milà)"
#: includes/class-plugin.php:1299 #: includes/class-plugin.php:1429
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "Europa (París)" msgstr "Europa (París)"
#: includes/class-plugin.php:1300 #: includes/class-plugin.php:1430
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "Europa (Estocolm)" msgstr "Europa (Estocolm)"
#: includes/class-plugin.php:1301 #: includes/class-plugin.php:1431
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "Europa (Zuric)" msgstr "Europa (Zuric)"
#: includes/class-plugin.php:1302 #: includes/class-plugin.php:1432
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "Israel (Tel Aviv)" msgstr "Israel (Tel Aviv)"
#: includes/class-plugin.php:1303 #: includes/class-plugin.php:1433
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "Orient Mitjà (Bahrain)" msgstr "Orient Mitjà (Bahrain)"
#: includes/class-plugin.php:1304 #: includes/class-plugin.php:1434
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "Orient Mitjà (EAU)" msgstr "Orient Mitjà (EAU)"
#: includes/class-plugin.php:1305 #: includes/class-plugin.php:1435
msgid "South America (São Paulo)" msgid "South America (São Paulo)"
msgstr "Sud-amèrica (São Paulo)" msgstr "Sud-amèrica (São Paulo)"
#: includes/class-plugin.php:1306 #: includes/class-plugin.php:1436
msgid "AWS GovCloud (US-East)" msgid "AWS GovCloud (US-East)"
msgstr "AWS GovCloud (EUA-Est)" msgstr "AWS GovCloud (EUA-Est)"
#: includes/class-plugin.php:1307 #: includes/class-plugin.php:1437
msgid "AWS GovCloud (US-West)" msgid "AWS GovCloud (US-West)"
msgstr "AWS GovCloud (EUA-Oest)" msgstr "AWS GovCloud (EUA-Oest)"
#: includes/class-plugin.php:1322 #. translators: 1: AWS region display name. 2: AWS region code.
#: includes/class-plugin.php:1452
#, php-format #, php-format
msgid "%1$s (%2$s)" msgid "%1$s (%2$s)"
msgstr "%1$s (%2$s)" msgstr "%1$s (%2$s)"
#: includes/class-plugin.php:1338 #. translators: %s: AWS region code.
#: includes/class-plugin.php:1468
#, php-format #, php-format
msgid "Region %s" msgid "Region %s"
msgstr "Regió %s" msgstr "Regió %s"
#: includes/class-plugin.php:1389 #. translators: %s: Error message from Amazon SES.
#: includes/class-plugin.php:1509
#, php-format #, php-format
msgid "Invalid Amazon SES credentials: %s" msgid "Invalid Amazon SES credentials: %s"
msgstr "Credencials d'Amazon SES invàlides: %s" msgstr "Credencials d'Amazon SES invàlides: %s"
#: includes/class-plugin.php:1400 #: includes/class-plugin.php:1574 includes/class-plugin.php:1596
#, php-format
msgid "Could not verify Amazon SES credentials: %s"
msgstr "No s'han pogut verificar les credencials d'Amazon SES: %s"
#: includes/class-plugin.php:1411
#, php-format
msgid "An unexpected error occurred while validating Amazon SES credentials: %s"
msgstr "S'ha produït un error inesperat en validar les credencials d'Amazon SES: %s"
#: includes/class-plugin.php:1470 includes/class-plugin.php:1492
msgid "Amazon SES credentials are not configured." msgid "Amazon SES credentials are not configured."
msgstr "Les credencials d'Amazon SES no estan configurades." msgstr "Les credencials d'Amazon SES no estan configurades."
#: includes/class-plugin.php:1506 #: includes/class-plugin.php:1610
msgid "Amazon SES did not return quota data." msgid "Amazon SES did not return quota data."
msgstr "Amazon SES no ha retornat dades de quota." msgstr "Amazon SES no ha retornat dades de quota."
#: includes/class-plugin.php:1524 #: includes/class-plugin.php:1632
msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission." msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission."
msgstr "No es poden obtenir les quotes de SES: l'usuari IAM no té el permís ses:GetAccount." msgstr ""
"No es poden obtenir les quotes de SES: l'usuari IAM no té el permís ses:"
"GetAccount."
#: includes/class-plugin.php:1532 #. translators: %s: AWS error message
#: includes/class-plugin.php:1640
#, php-format #, php-format
msgid "Amazon SES API error: %s" msgid "Amazon SES API error: %s"
msgstr "Error d'API d'Amazon SES: %s" msgstr "Error d'API d'Amazon SES: %s"
#: includes/class-plugin.php:1541 #. translators: %s: Error message
#: includes/class-plugin.php:1649
#, php-format #, php-format
msgid "Failed to fetch SES quota: %s" msgid "Failed to fetch SES quota: %s"
msgstr "Ha fallat en obtenir la quota de SES: %s" msgstr "Ha fallat en obtenir la quota de SES: %s"
#: robotstxt-updater.php:362 #: robotstxt-smtp-amazonses.php:68
msgid "Security check failed" msgid ""
msgstr "Ha fallat la comprovació de seguretat" "SMTP (by ROBOTSTXT) Amazon SES requires the SMTP (by ROBOTSTXT) plugin to be "
"installed and active."
msgstr ""
"SMTP (by ROBOTSTXT) Amazon SES requereix que el connector SMTP (by ROBOTSTXT) "
"estigui instal·lat i actiu."
msgid "SMTP (by ROBOTSTXT) Amazon SES" #~ msgid "From Email"
msgstr "SMTP (by ROBOTSTXT) Amazon SES" #~ msgstr "Email remitent"
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin." #~ msgid "From Name"
msgstr "Afegeix suport de configuració d'Amazon SES al plugin ROBOTSTXT SMTP." #~ msgstr "Nom remitent"
msgid "ROBOTSTXT" #~ msgid "Reply-To Email"
msgstr "ROBOTSTXT" #~ msgstr "Email de resposta"
#~ msgid "Reply-To Name"
#~ msgstr "Nom de resposta"
#, php-format
#~ msgid "Could not verify Amazon SES credentials: %s"
#~ msgstr "No s'han pogut verificar les credencials d'Amazon SES: %s"
#, php-format
#~ msgid ""
#~ "An unexpected error occurred while validating Amazon SES credentials: %s"
#~ msgstr ""
#~ "S'ha produït un error inesperat en validar les credencials d'Amazon SES: "
#~ "%s"

View file

@ -1,7 +1,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES\n" "Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES\n"
"POT-Creation-Date: 2026-01-29 10:03+0100\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-"
"amazonses\n"
"POT-Creation-Date: 2026-06-09T10:41:00+00:00\n"
"PO-Revision-Date: 2026-01-29 09:30+0100\n" "PO-Revision-Date: 2026-01-29 09:30+0100\n"
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n" "Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
@ -12,304 +14,357 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Manual\n" "X-Generator: Manual\n"
#: includes/class-plugin.php:151 #. Plugin Name of the plugin
msgid "Amazon SES could not send the email because no recipient was provided." #: robotstxt-smtp-amazonses.php
msgstr "Amazon SES no pudo enviar el email porque no se proporcionó ningún destinatario." msgid "SMTP (by ROBOTSTXT) Amazon SES"
msgstr "SMTP (by ROBOTSTXT) Amazon SES"
#: includes/class-plugin.php:224 #. Plugin URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses"
msgstr ""
#. Description of the plugin
#: robotstxt-smtp-amazonses.php
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin."
msgstr "Añade soporte de configuración de Amazon SES al plugin ROBOTSTXT SMTP."
#. Author of the plugin
#: robotstxt-smtp-amazonses.php
msgid "ROBOTSTXT"
msgstr "ROBOTSTXT"
#. Author URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://www.robotstxt.es/"
msgstr ""
#: class-robotstxt-updater.php:379
msgid "Security check failed"
msgstr "Falló la comprobación de seguridad"
#: class-robotstxt-updater.php:384 includes/class-plugin.php:918
msgid "You do not have sufficient permissions to access this page."
msgstr "No tienes permisos suficientes para acceder a esta página."
#: includes/class-plugin.php:149
msgid "Amazon SES could not send the email because no recipient was provided."
msgstr ""
"Amazon SES no pudo enviar el email porque no se proporcionó ningún "
"destinatario."
#. translators: %s: Error details describing the email preparation failure.
#: includes/class-plugin.php:231
#, php-format #, php-format
msgid "Amazon SES could not prepare the email: %s" msgid "Amazon SES could not prepare the email: %s"
msgstr "Amazon SES no pudo preparar el email: %s" msgstr "Amazon SES no pudo preparar el email: %s"
#: includes/class-plugin.php:265 #. translators: %s: Error message returned by Amazon SES.
#: includes/class-plugin.php:275
#, php-format #, php-format
msgid "Amazon SES could not send the email: %s" msgid "Amazon SES could not send the email: %s"
msgstr "Amazon SES no pudo enviar el email: %s" msgstr "Amazon SES no pudo enviar el email: %s"
#: includes/class-plugin.php:282 #. translators: %s: Error message describing the unexpected failure.
#: includes/class-plugin.php:295
#, php-format #, php-format
msgid "An unexpected error occurred while sending through Amazon SES: %s" msgid "An unexpected error occurred while sending through Amazon SES: %s"
msgstr "Ocurrió un error inesperado al enviar a través de Amazon SES: %s" msgstr "Ocurrió un error inesperado al enviar a través de Amazon SES: %s"
#: includes/class-plugin.php:330 #. translators: %s: Error details describing why the From header is invalid.
#: includes/class-plugin.php:357
#, php-format #, php-format
msgid "Amazon SES rejected the \"From\" address: %s" msgid "Amazon SES rejected the \"From\" address: %s"
msgstr "Amazon SES rechazó la dirección \"De\": %s" msgstr "Amazon SES rechazó la dirección \"De\": %s"
#: includes/class-plugin.php:351 #. translators: %s: Invalid recipient email address.
#: includes/class-plugin.php:378
#, php-format #, php-format
msgid "Amazon SES rejected the recipient address: %s" msgid "Amazon SES rejected the recipient address: %s"
msgstr "Amazon SES rechazó la dirección del destinatario: %s" msgstr "Amazon SES rechazó la dirección del destinatario: %s"
#: includes/class-plugin.php:373 #. translators: %s: Invalid CC email address.
#: includes/class-plugin.php:400
#, php-format #, php-format
msgid "Amazon SES rejected the CC address: %s" msgid "Amazon SES rejected the CC address: %s"
msgstr "Amazon SES rechazó la dirección CC: %s" msgstr "Amazon SES rechazó la dirección CC: %s"
#: includes/class-plugin.php:395 #. translators: %s: Invalid BCC email address.
#: includes/class-plugin.php:422
#, php-format #, php-format
msgid "Amazon SES rejected the BCC address: %s" msgid "Amazon SES rejected the BCC address: %s"
msgstr "Amazon SES rechazó la dirección CCO: %s" msgstr "Amazon SES rechazó la dirección CCO: %s"
#: includes/class-plugin.php:417 #. translators: %s: Invalid reply-to email address.
#: includes/class-plugin.php:444
#, php-format #, php-format
msgid "Amazon SES rejected the reply-to address: %s" msgid "Amazon SES rejected the reply-to address: %s"
msgstr "Amazon SES rechazó la dirección de respuesta: %s" msgstr "Amazon SES rechazó la dirección de respuesta: %s"
#: includes/class-plugin.php:446 #. translators: %s: Invalid reply-to email address from settings.
#: includes/class-plugin.php:473
#, php-format #, php-format
msgid "Amazon SES rejected the configured reply-to address: %s" msgid "Amazon SES rejected the configured reply-to address: %s"
msgstr "Amazon SES rechazó la dirección de respuesta configurada: %s" msgstr "Amazon SES rechazó la dirección de respuesta configurada: %s"
#: includes/class-plugin.php:497 #. translators: %s: Attachment path that could not be added.
#: includes/class-plugin.php:524
#, php-format #, php-format
msgid "Amazon SES could not include the attachment: %s" msgid "Amazon SES could not include the attachment: %s"
msgstr "Amazon SES no pudo incluir el adjunto: %s" msgstr "Amazon SES no pudo incluir el adjunto: %s"
#: includes/class-plugin.php:833 #: includes/class-plugin.php:910
msgid "Security check failed." msgid "Security check failed."
msgstr "Falló la comprobación de seguridad." msgstr "Falló la comprobación de seguridad."
#: includes/class-plugin.php:841 robotstxt-updater.php:367 #: includes/class-plugin.php:931
msgid "You do not have sufficient permissions to access this page."
msgstr "No tienes permisos suficientes para acceder a esta página."
#: includes/class-plugin.php:854
msgid "Amazon SES quotas refreshed successfully." msgid "Amazon SES quotas refreshed successfully."
msgstr "Cuotas de Amazon SES actualizadas correctamente." msgstr "Cuotas de Amazon SES actualizadas correctamente."
#: includes/class-plugin.php:861 #: includes/class-plugin.php:938
msgid "Unable to fetch quotas from Amazon SES. Check debug log for details." msgid "Unable to fetch quotas from Amazon SES. Check debug log for details."
msgstr "No se pudieron obtener las cuotas de Amazon SES. Verifica el registro de depuración para más detalles." msgstr ""
"No se pudieron obtener las cuotas de Amazon SES. Verifica el registro de "
"depuración para más detalles."
#: includes/class-plugin.php:900 #: includes/class-plugin.php:977
msgid "Access Key ID" msgid "Access Key ID"
msgstr "ID de clave de acceso" msgstr "ID de clave de acceso"
#: includes/class-plugin.php:906 #: includes/class-plugin.php:983
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "Clave de acceso secreta" msgstr "Clave de acceso secreta"
#: includes/class-plugin.php:912 #: includes/class-plugin.php:989
msgid "Region" msgid "Region"
msgstr "Región" msgstr "Región"
#: includes/class-plugin.php:918 #: includes/class-plugin.php:1028
msgid "From Email"
msgstr "Email remitente"
#: includes/class-plugin.php:924
msgid "From Name"
msgstr "Nombre remitente"
#: includes/class-plugin.php:930
msgid "Reply-To Email"
msgstr "Email de respuesta"
#: includes/class-plugin.php:936
msgid "Reply-To Name"
msgstr "Nombre de respuesta"
#: includes/class-plugin.php:951
msgid "Leave empty to keep the stored access key." msgid "Leave empty to keep the stored access key."
msgstr "Dejar vacío para mantener la clave de acceso almacenada." msgstr "Dejar vacío para mantener la clave de acceso almacenada."
#: includes/class-plugin.php:962 #: includes/class-plugin.php:1039
msgid "Provide the IAM access key ID with permissions to send email through Amazon SES. Leave the field empty to retain the existing value." msgid ""
msgstr "Proporciona el ID de clave de acceso IAM con permisos para enviar email a través de Amazon SES. Deja el campo vacío para mantener el valor existente." "Provide the IAM access key ID with permissions to send email through Amazon "
"SES. Leave the field empty to retain the existing value."
msgstr ""
"Proporciona el ID de clave de acceso IAM con permisos para enviar email a "
"través de Amazon SES. Deja el campo vacío para mantener el valor existente."
#: includes/class-plugin.php:974 #: includes/class-plugin.php:1051
msgid "Leave empty to keep the stored secret access key." msgid "Leave empty to keep the stored secret access key."
msgstr "Dejar vacío para mantener la clave de acceso secreta almacenada." msgstr "Dejar vacío para mantener la clave de acceso secreta almacenada."
#: includes/class-plugin.php:985 #: includes/class-plugin.php:1062
msgid "Enter the secret access key associated with the IAM user. Leave the field empty to retain the existing value." msgid ""
msgstr "Introduce la clave de acceso secreta asociada con el usuario IAM. Deja el campo vacío para mantener el valor existente." "Enter the secret access key associated with the IAM user. Leave the field "
"empty to retain the existing value."
msgstr ""
"Introduce la clave de acceso secreta asociada con el usuario IAM. Deja el "
"campo vacío para mantener el valor existente."
#: includes/class-plugin.php:1000 #: includes/class-plugin.php:1077
msgid "Select a region" msgid "Select a region"
msgstr "Selecciona una región" msgstr "Selecciona una región"
#: includes/class-plugin.php:1005 #: includes/class-plugin.php:1082
msgid "Choose the AWS region where your Amazon SES account is hosted." msgid "Choose the AWS region where your Amazon SES account is hosted."
msgstr "Elige la región de AWS donde está alojada tu cuenta de Amazon SES." msgstr "Elige la región de AWS donde está alojada tu cuenta de Amazon SES."
#: includes/class-plugin.php:1082 #: includes/class-plugin.php:1160
msgid "The selected Amazon SES region is not available." msgid "The selected Amazon SES region is not available."
msgstr "La región de Amazon SES seleccionada no está disponible." msgstr "La región de Amazon SES seleccionada no está disponible."
#: includes/class-plugin.php:1102 #: includes/class-plugin.php:1176
msgid "Amazon SES credentials were not saved. Provide an access key, secret key, and region." msgid ""
msgstr "Las credenciales de Amazon SES no se guardaron. Proporciona una clave de acceso, clave secreta y región." "Amazon SES credentials were not saved. Provide an access key, secret key, "
"and region."
msgstr ""
"Las credenciales de Amazon SES no se guardaron. Proporciona una clave de "
"acceso, clave secreta y región."
#: includes/class-plugin.php:1126 #: includes/class-plugin.php:1200
msgid "Amazon SES credentials verified successfully." msgid "Amazon SES credentials verified successfully."
msgstr "Credenciales de Amazon SES verificadas correctamente." msgstr "Credenciales de Amazon SES verificadas correctamente."
#: includes/class-plugin.php:1281 #: includes/class-plugin.php:1411
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "EE.UU. Este (Ohio)" msgstr "EE.UU. Este (Ohio)"
#: includes/class-plugin.php:1282 #: includes/class-plugin.php:1412
msgid "US East (N. Virginia)" msgid "US East (N. Virginia)"
msgstr "EE.UU. Este (N. Virginia)" msgstr "EE.UU. Este (N. Virginia)"
#: includes/class-plugin.php:1283 #: includes/class-plugin.php:1413
msgid "US West (N. California)" msgid "US West (N. California)"
msgstr "EE.UU. Oeste (N. California)" msgstr "EE.UU. Oeste (N. California)"
#: includes/class-plugin.php:1284 #: includes/class-plugin.php:1414
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "EE.UU. Oeste (Oregón)" msgstr "EE.UU. Oeste (Oregón)"
#: includes/class-plugin.php:1285 #: includes/class-plugin.php:1415
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "África (Ciudad del Cabo)" msgstr "África (Ciudad del Cabo)"
#: includes/class-plugin.php:1286 #: includes/class-plugin.php:1416
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "Asia Pacífico (Hyderabad)" msgstr "Asia Pacífico (Hyderabad)"
#: includes/class-plugin.php:1287 #: includes/class-plugin.php:1417
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "Asia Pacífico (Yakarta)" msgstr "Asia Pacífico (Yakarta)"
#: includes/class-plugin.php:1288 #: includes/class-plugin.php:1418
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "Asia Pacífico (Mumbai)" msgstr "Asia Pacífico (Mumbai)"
#: includes/class-plugin.php:1289 #: includes/class-plugin.php:1419
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "Asia Pacífico (Osaka)" msgstr "Asia Pacífico (Osaka)"
#: includes/class-plugin.php:1290 #: includes/class-plugin.php:1420
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "Asia Pacífico (Seúl)" msgstr "Asia Pacífico (Seúl)"
#: includes/class-plugin.php:1291 #: includes/class-plugin.php:1421
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "Asia Pacífico (Singapur)" msgstr "Asia Pacífico (Singapur)"
#: includes/class-plugin.php:1292 #: includes/class-plugin.php:1422
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "Asia Pacífico (Sídney)" msgstr "Asia Pacífico (Sídney)"
#: includes/class-plugin.php:1293 #: includes/class-plugin.php:1423
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "Asia Pacífico (Tokio)" msgstr "Asia Pacífico (Tokio)"
#: includes/class-plugin.php:1294 #: includes/class-plugin.php:1424
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "Canadá (Central)" msgstr "Canadá (Central)"
#: includes/class-plugin.php:1295 #: includes/class-plugin.php:1425
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "Europa (Fráncfort)" msgstr "Europa (Fráncfort)"
#: includes/class-plugin.php:1296 #: includes/class-plugin.php:1426
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "Europa (Irlanda)" msgstr "Europa (Irlanda)"
#: includes/class-plugin.php:1297 #: includes/class-plugin.php:1427
msgid "Europe (London)" msgid "Europe (London)"
msgstr "Europa (Londres)" msgstr "Europa (Londres)"
#: includes/class-plugin.php:1298 #: includes/class-plugin.php:1428
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "Europa (Milán)" msgstr "Europa (Milán)"
#: includes/class-plugin.php:1299 #: includes/class-plugin.php:1429
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "Europa (París)" msgstr "Europa (París)"
#: includes/class-plugin.php:1300 #: includes/class-plugin.php:1430
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "Europa (Estocolmo)" msgstr "Europa (Estocolmo)"
#: includes/class-plugin.php:1301 #: includes/class-plugin.php:1431
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "Europa (Zúrich)" msgstr "Europa (Zúrich)"
#: includes/class-plugin.php:1302 #: includes/class-plugin.php:1432
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "Israel (Tel Aviv)" msgstr "Israel (Tel Aviv)"
#: includes/class-plugin.php:1303 #: includes/class-plugin.php:1433
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "Oriente Medio (Baréin)" msgstr "Oriente Medio (Baréin)"
#: includes/class-plugin.php:1304 #: includes/class-plugin.php:1434
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "Oriente Medio (EAU)" msgstr "Oriente Medio (EAU)"
#: includes/class-plugin.php:1305 #: includes/class-plugin.php:1435
msgid "South America (São Paulo)" msgid "South America (São Paulo)"
msgstr "Sudamérica (São Paulo)" msgstr "Sudamérica (São Paulo)"
#: includes/class-plugin.php:1306 #: includes/class-plugin.php:1436
msgid "AWS GovCloud (US-East)" msgid "AWS GovCloud (US-East)"
msgstr "AWS GovCloud (EE.UU.-Este)" msgstr "AWS GovCloud (EE.UU.-Este)"
#: includes/class-plugin.php:1307 #: includes/class-plugin.php:1437
msgid "AWS GovCloud (US-West)" msgid "AWS GovCloud (US-West)"
msgstr "AWS GovCloud (EE.UU.-Oeste)" msgstr "AWS GovCloud (EE.UU.-Oeste)"
#: includes/class-plugin.php:1322 #. translators: 1: AWS region display name. 2: AWS region code.
#: includes/class-plugin.php:1452
#, php-format #, php-format
msgid "%1$s (%2$s)" msgid "%1$s (%2$s)"
msgstr "%1$s (%2$s)" msgstr "%1$s (%2$s)"
#: includes/class-plugin.php:1338 #. translators: %s: AWS region code.
#: includes/class-plugin.php:1468
#, php-format #, php-format
msgid "Region %s" msgid "Region %s"
msgstr "Región %s" msgstr "Región %s"
#: includes/class-plugin.php:1389 #. translators: %s: Error message from Amazon SES.
#: includes/class-plugin.php:1509
#, php-format #, php-format
msgid "Invalid Amazon SES credentials: %s" msgid "Invalid Amazon SES credentials: %s"
msgstr "Credenciales de Amazon SES inválidas: %s" msgstr "Credenciales de Amazon SES inválidas: %s"
#: includes/class-plugin.php:1400 #: includes/class-plugin.php:1574 includes/class-plugin.php:1596
#, php-format
msgid "Could not verify Amazon SES credentials: %s"
msgstr "No se pudieron verificar las credenciales de Amazon SES: %s"
#: includes/class-plugin.php:1411
#, php-format
msgid "An unexpected error occurred while validating Amazon SES credentials: %s"
msgstr "Ocurrió un error inesperado al validar las credenciales de Amazon SES: %s"
#: includes/class-plugin.php:1470 includes/class-plugin.php:1492
msgid "Amazon SES credentials are not configured." msgid "Amazon SES credentials are not configured."
msgstr "Las credenciales de Amazon SES no están configuradas." msgstr "Las credenciales de Amazon SES no están configuradas."
#: includes/class-plugin.php:1506 #: includes/class-plugin.php:1610
msgid "Amazon SES did not return quota data." msgid "Amazon SES did not return quota data."
msgstr "Amazon SES no devolvió datos de cuota." msgstr "Amazon SES no devolvió datos de cuota."
#: includes/class-plugin.php:1524 #: includes/class-plugin.php:1632
msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission." msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission."
msgstr "No se pueden obtener las cuotas de SES: el usuario IAM no tiene el permiso ses:GetAccount." msgstr ""
"No se pueden obtener las cuotas de SES: el usuario IAM no tiene el permiso "
"ses:GetAccount."
#: includes/class-plugin.php:1532 #. translators: %s: AWS error message
#: includes/class-plugin.php:1640
#, php-format #, php-format
msgid "Amazon SES API error: %s" msgid "Amazon SES API error: %s"
msgstr "Error de API de Amazon SES: %s" msgstr "Error de API de Amazon SES: %s"
#: includes/class-plugin.php:1541 #. translators: %s: Error message
#: includes/class-plugin.php:1649
#, php-format #, php-format
msgid "Failed to fetch SES quota: %s" msgid "Failed to fetch SES quota: %s"
msgstr "Falló al obtener la cuota de SES: %s" msgstr "Falló al obtener la cuota de SES: %s"
#: robotstxt-updater.php:362 #: robotstxt-smtp-amazonses.php:68
msgid "Security check failed" msgid ""
msgstr "Falló la comprobación de seguridad" "SMTP (by ROBOTSTXT) Amazon SES requires the SMTP (by ROBOTSTXT) plugin to be "
"installed and active."
msgstr ""
"SMTP (by ROBOTSTXT) Amazon SES requiere que el plugin SMTP (by ROBOTSTXT) "
"esté instalado y activo."
msgid "SMTP (by ROBOTSTXT) Amazon SES" #~ msgid "From Email"
msgstr "SMTP (by ROBOTSTXT) Amazon SES" #~ msgstr "Email remitente"
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin." #~ msgid "From Name"
msgstr "Añade soporte de configuración de Amazon SES al plugin ROBOTSTXT SMTP." #~ msgstr "Nombre remitente"
msgid "ROBOTSTXT" #~ msgid "Reply-To Email"
msgstr "ROBOTSTXT" #~ msgstr "Email de respuesta"
#~ msgid "Reply-To Name"
#~ msgstr "Nombre de respuesta"
#, php-format
#~ msgid "Could not verify Amazon SES credentials: %s"
#~ msgstr "No se pudieron verificar las credenciales de Amazon SES: %s"
#, php-format
#~ msgid ""
#~ "An unexpected error occurred while validating Amazon SES credentials: %s"
#~ msgstr ""
#~ "Ocurrió un error inesperado al validar las credenciales de Amazon SES: %s"

View file

@ -1,359 +1,326 @@
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES\n" "Project-Id-Version: SMTP (by ROBOTSTXT) Amazon SES 2.1.5\n"
"POT-Creation-Date: 2026-01-29 10:03+0100\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-amazonses\n"
"PO-Revision-Date: 2026-01-29 10:03+0100\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Last-Translator: \n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "POT-Creation-Date: 2026-06-09T10:41:00+00:00\n"
"X-Generator: Poedit 3.8\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Poedit-Basepath: ..\n" "X-Generator: WP-CLI 2.12.0\n"
"X-Poedit-Flags-xgettext: --add-comments=translators:\n" "X-Domain: robotstxt-smtp-amazonses\n"
"X-Poedit-WPHeader: robotstxt-smtp-amazonses.php\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: "
"__;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPathExcluded-0: *.min.js\n"
"X-Poedit-SearchPathExcluded-1: vendor\n"
#: includes/class-plugin.php:151 #. Plugin Name of the plugin
#: robotstxt-smtp-amazonses.php
msgid "SMTP (by ROBOTSTXT) Amazon SES"
msgstr ""
#. Plugin URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses"
msgstr ""
#. Description of the plugin
#: robotstxt-smtp-amazonses.php
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin."
msgstr ""
#. Author of the plugin
#: robotstxt-smtp-amazonses.php
msgid "ROBOTSTXT"
msgstr ""
#. Author URI of the plugin
#: robotstxt-smtp-amazonses.php
msgid "https://www.robotstxt.es/"
msgstr ""
#: class-robotstxt-updater.php:379
msgid "Security check failed"
msgstr ""
#: class-robotstxt-updater.php:384
#: includes/class-plugin.php:918
msgid "You do not have sufficient permissions to access this page."
msgstr ""
#: includes/class-plugin.php:149
msgid "Amazon SES could not send the email because no recipient was provided." msgid "Amazon SES could not send the email because no recipient was provided."
msgstr "" msgstr ""
#. translators: %s: Error details describing the email preparation failure. #. translators: %s: Error details describing the email preparation failure.
#: includes/class-plugin.php:224 #: includes/class-plugin.php:231
#, php-format #, php-format
msgid "Amazon SES could not prepare the email: %s" msgid "Amazon SES could not prepare the email: %s"
msgstr "" msgstr ""
#. translators: %s: Error message returned by Amazon SES. #. translators: %s: Error message returned by Amazon SES.
#: includes/class-plugin.php:265 #: includes/class-plugin.php:275
#, php-format #, php-format
msgid "Amazon SES could not send the email: %s" msgid "Amazon SES could not send the email: %s"
msgstr "" msgstr ""
#. translators: %s: Error message describing the unexpected failure. #. translators: %s: Error message describing the unexpected failure.
#: includes/class-plugin.php:282 #: includes/class-plugin.php:295
#, php-format #, php-format
msgid "An unexpected error occurred while sending through Amazon SES: %s" msgid "An unexpected error occurred while sending through Amazon SES: %s"
msgstr "" msgstr ""
#. translators: %s: Error details describing why the From header is invalid. #. translators: %s: Error details describing why the From header is invalid.
#: includes/class-plugin.php:330 #: includes/class-plugin.php:357
#, php-format #, php-format
msgid "Amazon SES rejected the \"From\" address: %s" msgid "Amazon SES rejected the \"From\" address: %s"
msgstr "" msgstr ""
#. translators: %s: Invalid recipient email address. #. translators: %s: Invalid recipient email address.
#: includes/class-plugin.php:351 #: includes/class-plugin.php:378
#, php-format #, php-format
msgid "Amazon SES rejected the recipient address: %s" msgid "Amazon SES rejected the recipient address: %s"
msgstr "" msgstr ""
#. translators: %s: Invalid CC email address. #. translators: %s: Invalid CC email address.
#: includes/class-plugin.php:373 #: includes/class-plugin.php:400
#, php-format #, php-format
msgid "Amazon SES rejected the CC address: %s" msgid "Amazon SES rejected the CC address: %s"
msgstr "" msgstr ""
#. translators: %s: Invalid BCC email address. #. translators: %s: Invalid BCC email address.
#: includes/class-plugin.php:395 #: includes/class-plugin.php:422
#, php-format #, php-format
msgid "Amazon SES rejected the BCC address: %s" msgid "Amazon SES rejected the BCC address: %s"
msgstr "" msgstr ""
#. translators: %s: Invalid reply-to email address. #. translators: %s: Invalid reply-to email address.
#: includes/class-plugin.php:417 #: includes/class-plugin.php:444
#, php-format #, php-format
msgid "Amazon SES rejected the reply-to address: %s" msgid "Amazon SES rejected the reply-to address: %s"
msgstr "" msgstr ""
#. translators: %s: Invalid reply-to email address from settings. #. translators: %s: Invalid reply-to email address from settings.
#: includes/class-plugin.php:446 #: includes/class-plugin.php:473
#, php-format #, php-format
msgid "Amazon SES rejected the configured reply-to address: %s" msgid "Amazon SES rejected the configured reply-to address: %s"
msgstr "" msgstr ""
#. translators: %s: Attachment path that could not be added. #. translators: %s: Attachment path that could not be added.
#: includes/class-plugin.php:497 #: includes/class-plugin.php:524
#, php-format #, php-format
msgid "Amazon SES could not include the attachment: %s" msgid "Amazon SES could not include the attachment: %s"
msgstr "" msgstr ""
#: includes/class-plugin.php:833 #: includes/class-plugin.php:910
msgid "Security check failed." msgid "Security check failed."
msgstr "" msgstr ""
#: includes/class-plugin.php:841 robotstxt-updater.php:367 #: includes/class-plugin.php:931
msgid "You do not have sufficient permissions to access this page."
msgstr ""
#: includes/class-plugin.php:854
msgid "Amazon SES quotas refreshed successfully." msgid "Amazon SES quotas refreshed successfully."
msgstr "" msgstr ""
#: includes/class-plugin.php:861 #: includes/class-plugin.php:938
msgid "Unable to fetch quotas from Amazon SES. Check debug log for details." msgid "Unable to fetch quotas from Amazon SES. Check debug log for details."
msgstr "" msgstr ""
#: includes/class-plugin.php:900 #: includes/class-plugin.php:977
msgid "Access Key ID" msgid "Access Key ID"
msgstr "" msgstr ""
#: includes/class-plugin.php:906 #: includes/class-plugin.php:983
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "" msgstr ""
#: includes/class-plugin.php:912 #: includes/class-plugin.php:989
msgid "Region" msgid "Region"
msgstr "" msgstr ""
#: includes/class-plugin.php:918 #: includes/class-plugin.php:1028
msgid "From Email"
msgstr ""
#: includes/class-plugin.php:924
msgid "From Name"
msgstr ""
#: includes/class-plugin.php:930
msgid "Reply-To Email"
msgstr ""
#: includes/class-plugin.php:936
msgid "Reply-To Name"
msgstr ""
#: includes/class-plugin.php:951
msgid "Leave empty to keep the stored access key." msgid "Leave empty to keep the stored access key."
msgstr "" msgstr ""
#: includes/class-plugin.php:962 #: includes/class-plugin.php:1039
msgid "" msgid "Provide the IAM access key ID with permissions to send email through Amazon SES. Leave the field empty to retain the existing value."
"Provide the IAM access key ID with permissions to send email through Amazon "
"SES. Leave the field empty to retain the existing value."
msgstr "" msgstr ""
#: includes/class-plugin.php:974 #: includes/class-plugin.php:1051
msgid "Leave empty to keep the stored secret access key." msgid "Leave empty to keep the stored secret access key."
msgstr "" msgstr ""
#: includes/class-plugin.php:985 #: includes/class-plugin.php:1062
msgid "" msgid "Enter the secret access key associated with the IAM user. Leave the field empty to retain the existing value."
"Enter the secret access key associated with the IAM user. Leave the field "
"empty to retain the existing value."
msgstr "" msgstr ""
#: includes/class-plugin.php:1000 #: includes/class-plugin.php:1077
msgid "Select a region" msgid "Select a region"
msgstr "" msgstr ""
#: includes/class-plugin.php:1005 #: includes/class-plugin.php:1082
msgid "Choose the AWS region where your Amazon SES account is hosted." msgid "Choose the AWS region where your Amazon SES account is hosted."
msgstr "" msgstr ""
#: includes/class-plugin.php:1082 #: includes/class-plugin.php:1160
msgid "The selected Amazon SES region is not available." msgid "The selected Amazon SES region is not available."
msgstr "" msgstr ""
#: includes/class-plugin.php:1102 #: includes/class-plugin.php:1176
msgid "" msgid "Amazon SES credentials were not saved. Provide an access key, secret key, and region."
"Amazon SES credentials were not saved. Provide an access key, secret key, "
"and region."
msgstr "" msgstr ""
#: includes/class-plugin.php:1126 #: includes/class-plugin.php:1200
msgid "Amazon SES credentials verified successfully." msgid "Amazon SES credentials verified successfully."
msgstr "" msgstr ""
#: includes/class-plugin.php:1281 #: includes/class-plugin.php:1411
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1282 #: includes/class-plugin.php:1412
msgid "US East (N. Virginia)" msgid "US East (N. Virginia)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1283 #: includes/class-plugin.php:1413
msgid "US West (N. California)" msgid "US West (N. California)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1284 #: includes/class-plugin.php:1414
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1285 #: includes/class-plugin.php:1415
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1286 #: includes/class-plugin.php:1416
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1287 #: includes/class-plugin.php:1417
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1288 #: includes/class-plugin.php:1418
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1289 #: includes/class-plugin.php:1419
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1290 #: includes/class-plugin.php:1420
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1291 #: includes/class-plugin.php:1421
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1292 #: includes/class-plugin.php:1422
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1293 #: includes/class-plugin.php:1423
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1294 #: includes/class-plugin.php:1424
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1295 #: includes/class-plugin.php:1425
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1296 #: includes/class-plugin.php:1426
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1297 #: includes/class-plugin.php:1427
msgid "Europe (London)" msgid "Europe (London)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1298 #: includes/class-plugin.php:1428
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1299 #: includes/class-plugin.php:1429
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1300 #: includes/class-plugin.php:1430
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1301 #: includes/class-plugin.php:1431
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1302 #: includes/class-plugin.php:1432
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1303 #: includes/class-plugin.php:1433
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1304 #: includes/class-plugin.php:1434
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1305 #: includes/class-plugin.php:1435
msgid "South America (São Paulo)" msgid "South America (São Paulo)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1306 #: includes/class-plugin.php:1436
msgid "AWS GovCloud (US-East)" msgid "AWS GovCloud (US-East)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1307 #: includes/class-plugin.php:1437
msgid "AWS GovCloud (US-West)" msgid "AWS GovCloud (US-West)"
msgstr "" msgstr ""
#. translators: 1: AWS region display name. 2: AWS region code. #. translators: 1: AWS region display name. 2: AWS region code.
#: includes/class-plugin.php:1322 #: includes/class-plugin.php:1452
#, php-format #, php-format
msgid "%1$s (%2$s)" msgid "%1$s (%2$s)"
msgstr "" msgstr ""
#. translators: %s: AWS region code. #. translators: %s: AWS region code.
#: includes/class-plugin.php:1338 #: includes/class-plugin.php:1468
#, php-format #, php-format
msgid "Region %s" msgid "Region %s"
msgstr "" msgstr ""
#. translators: %s: Error message from Amazon SES. #. translators: %s: Error message from Amazon SES.
#: includes/class-plugin.php:1389 #: includes/class-plugin.php:1509
#, php-format #, php-format
msgid "Invalid Amazon SES credentials: %s" msgid "Invalid Amazon SES credentials: %s"
msgstr "" msgstr ""
#. translators: %s: Error message from Amazon SES. #: includes/class-plugin.php:1574
#: includes/class-plugin.php:1400 #: includes/class-plugin.php:1596
#, php-format
msgid "Could not verify Amazon SES credentials: %s"
msgstr ""
#. translators: %s: Error message describing the unexpected failure.
#: includes/class-plugin.php:1411
#, php-format
msgid ""
"An unexpected error occurred while validating Amazon SES credentials: %s"
msgstr ""
#: includes/class-plugin.php:1470 includes/class-plugin.php:1492
msgid "Amazon SES credentials are not configured." msgid "Amazon SES credentials are not configured."
msgstr "" msgstr ""
#: includes/class-plugin.php:1506 #: includes/class-plugin.php:1610
msgid "Amazon SES did not return quota data." msgid "Amazon SES did not return quota data."
msgstr "" msgstr ""
#: includes/class-plugin.php:1524 #: includes/class-plugin.php:1632
msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission." msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission."
msgstr "" msgstr ""
#. translators: %s: AWS error message #. translators: %s: AWS error message
#: includes/class-plugin.php:1532 #: includes/class-plugin.php:1640
#, php-format #, php-format
msgid "Amazon SES API error: %s" msgid "Amazon SES API error: %s"
msgstr "" msgstr ""
#. translators: %s: Error message #. translators: %s: Error message
#: includes/class-plugin.php:1541 #: includes/class-plugin.php:1649
#, php-format #, php-format
msgid "Failed to fetch SES quota: %s" msgid "Failed to fetch SES quota: %s"
msgstr "" msgstr ""
#: robotstxt-updater.php:362 #: robotstxt-smtp-amazonses.php:68
msgid "Security check failed" msgid "SMTP (by ROBOTSTXT) Amazon SES requires the SMTP (by ROBOTSTXT) plugin to be installed and active."
msgstr ""
#. Plugin Name of the plugin/theme
msgid "SMTP (by ROBOTSTXT) Amazon SES"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses"
msgstr ""
#. Description of the plugin/theme
msgid "Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin."
msgstr ""
#. Author of the plugin/theme
msgid "ROBOTSTXT"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://www.robotstxt.es/"
msgstr "" msgstr ""

View file

@ -3,9 +3,9 @@ Contributors: javiercasares
Tags: amazon-ses, smtp, email, mail Tags: amazon-ses, smtp, email, mail
Requires at least: 5.7 Requires at least: 5.7
Tested up to: 7.1 Tested up to: 7.1
Stable tag: 2.1.4 Stable tag: 2.1.5
Requires PHP: 8.2 Requires PHP: 8.2
Version: 2.1.4 Version: 2.1.5
License: GPL-3.0-or-later License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html License URI: https://www.gnu.org/licenses/gpl-3.0.html
@ -34,52 +34,102 @@ SMTP (by ROBOTSTXT) Amazon SES extends the core ROBOTSTXT SMTP plugin with a fir
= Do I need the base SMTP plugin? = = Do I need the base SMTP plugin? =
Yes. This add-on depends on the core **SMTP (by ROBOTSTXT)** plugin for the settings interface, logging, and overall mail routing logic. Yes. This add-on depends on the core **SMTP (by ROBOTSTXT)** plugin for the settings interface, logging, and overall mail routing logic. If the base plugin is missing or inactive, this add-on will show an admin notice and will not run.
= Are my credentials validated? = = Are my credentials validated? =
The plugin validates Amazon SES credentials during saving to prevent misconfigurations. Errors appear directly on the SMTP settings page if authentication fails. The plugin validates Amazon SES credentials during saving to prevent misconfigurations. Only definitive authentication errors (invalid access key or secret) will block saving. If the IAM user lacks the `ses:GetAccount` permission or there is a network issue, the credentials are still saved and will be used for sending.
= Does the plugin support multisite? = = Does the plugin support multisite? =
Yes. Network administrators can manage credentials centrally or allow individual sites to configure their own Amazon SES connection. Yes. Network administrators can manage credentials centrally or allow individual sites to configure their own Amazon SES connection.
== Compatibility ==
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
== Changelog == == Changelog ==
Only the 3 last versions. The full changelog will be at changelog.txt
= 2.1.5 =
_Release date: 2026-06-09_
**Added**
* Runtime check at initialization: if the parent SMTP (by ROBOTSTXT) plugin is missing or inactive, the plugin skips initialization and displays an admin notice instead of producing a fatal error.
**Fixed**
* Credentials never saving on first entry: credential validation now only blocks saving for definitive authentication failures. All other AWS errors allow saving.
* Reply-to email field cannot be cleared: submitting an empty value now explicitly removes the stored address.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= 2.1.4 = = 2.1.4 =
* Updated minimum WordPress version to 5.7 (the actual code minimum, verified by static analysis).
_Release date: 2026-06-09_
**Changed**
* Minimum WordPress version lowered from 6.5 to 5.7, reflecting the actual code minimum verified by static analysis.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= 2.1.3 = = 2.1.3 =
* Fixed nonce handling in manual quota refresh to correctly handle false values returned by filter_input().
* Fixed admin notices display to skip non-array notice entries.
* Fixed input normalization for recipients, attachments, and headers to properly skip non-string values instead of attempting unsafe casts.
* Removed unused internal method (dead code cleanup).
* Updated compatibility: tested up to WordPress 7.1.
* Internal: renamed updater file to follow WordPress naming conventions.
= 2.1.2 = _Release date: 2026-06-09_
* Fixed charset encoding issue that caused "expected parameter value, got null" error when sending emails through Amazon SES.
* Added robust charset validation in header parsing to prevent empty or invalid charset values.
* Enhanced charset handling with fallback to UTF-8 when no valid charset is provided.
= 2.1.1 = **Fixed**
* Added comprehensive Amazon SES debug context to test email error reports.
* Debug information now includes: AWS region, masked access key, SDK version, endpoint URL, and UTC timestamp.
* Enhanced AWS error reporting with request IDs, HTTP status codes, and error codes for easier troubleshooting.
* Improved security by masking access keys in error output (shows only first 4 and last 4 characters).
= 2.1.0 = * Nonce handling in manual quota refresh now correctly handles `false` values from `filter_input()`.
* Changed uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin. * Admin notices display now skips non-array notice entries.
* This ensures Amazon SES credentials are preserved when only the add-on is removed, and properly cleaned when the core plugin is uninstalled. * Input normalization for recipients, attachments, and headers now properly skips non-string values.
= 2.0.1 = **Compatibility**
* Version bump for maintenance release.
= 2.0.0 = * WordPress: 5.7 - 7.1
* Added Reply-To header support for emails sent via Amazon SES. * PHP: 8.2 - 8.5
* Improved error handling and validation.
* Enhanced compatibility with core SMTP plugin 2.0.0.
* **BREAKING CHANGE**: Minimum PHP version increased to 8.2 (required by AWS SDK for PHP).
= 1.0.0 = **Tests**
* Initial release.
* PHP_CodeSniffer: 3.13.5
* WordPress Coding Standards: 3.3.0
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.2
= Previous versions =
If you want to see the full changelog, visit the [changelog.txt](https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses/raw/branch/main/changelog.txt) file.
== Compliance ==
This plugin adheres to the following security measures and review protocols for each version:
* [WordPress Plugin Handbook](https://developer.wordpress.org/plugins/)
* [WordPress Plugin Security](https://developer.wordpress.org/plugins/wordpress-org/plugin-security/)
* [WordPress APIs Security](https://developer.wordpress.org/apis/security/)
* [WordPress Coding Standards](https://github.com/WordPress/WordPress-Coding-Standards)
* [Plugin Check (PCP)](https://wordpress.org/plugins/plugin-check/)

View file

@ -3,7 +3,7 @@
* Plugin Name: SMTP (by ROBOTSTXT) Amazon SES * Plugin Name: SMTP (by ROBOTSTXT) Amazon SES
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses * Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses
* Description: Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin. * Description: Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin.
* Version: 2.1.4 * Version: 2.1.5
* Requires at least: 5.7 * Requires at least: 5.7
* Requires PHP: 8.2 * Requires PHP: 8.2
* Network: true * Network: true
@ -26,7 +26,7 @@ if ( ! defined( 'ABSPATH' ) ) {
} }
if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION' ) ) { if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION' ) ) {
define( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION', '2.1.4' ); define( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION', '2.1.5' );
} }
if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_FILE' ) ) { if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_FILE' ) ) {
@ -55,12 +55,52 @@ if ( \is_readable( $autoload ) ) {
require_once $autoload; require_once $autoload;
} }
require_once ROBOTSTXT_SMTP_AMAZONSES_PATH . 'includes/class-plugin.php'; /**
* Loads the plugin text domain for translations.
*
* @since 2.1.5
*
* @return void
*/
function robotstxt_smtp_amazonses_load_textdomain(): void {
\load_plugin_textdomain(
'robotstxt-smtp-amazonses',
false,
dirname( ROBOTSTXT_SMTP_AMAZONSES_BASENAME ) . '/languages'
);
}
// Initialize the plugin. \add_action( 'init', 'robotstxt_smtp_amazonses_load_textdomain' );
// Dependency checking is handled by the "Requires Plugins" header in WordPress 6.5+.
\Robotstxt_SMTP_AmazonSES\Plugin::get_instance()->run();
// Initialize ROBOTSTXT updater (auto-configures from plugin headers). /**
* Displays an admin notice when the parent plugin is missing or inactive.
*
* @since 2.1.5
*
* @return void
*/
function robotstxt_smtp_amazonses_missing_parent_notice(): void {
printf(
'<div class="notice notice-error is-dismissible"><p>%s</p></div>',
\esc_html__( 'SMTP (by ROBOTSTXT) Amazon SES requires the SMTP (by ROBOTSTXT) plugin to be installed and active.', 'robotstxt-smtp-amazonses' )
);
}
// Defer initialization to plugins_loaded so all plugins are available for the dependency check.
\add_action(
'plugins_loaded',
static function () {
if ( ! \class_exists( 'Robotstxt_SMTP\Plugin' ) ) {
\add_action( 'admin_notices', 'robotstxt_smtp_amazonses_missing_parent_notice' );
\add_action( 'network_admin_notices', 'robotstxt_smtp_amazonses_missing_parent_notice' );
return;
}
require_once ROBOTSTXT_SMTP_AMAZONSES_PATH . 'includes/class-plugin.php';
\Robotstxt_SMTP_AmazonSES\Plugin::get_instance()->run();
}
);
// Initialize ROBOTSTXT updater (does not depend on the parent plugin).
require_once __DIR__ . '/class-robotstxt-updater.php'; require_once __DIR__ . '/class-robotstxt-updater.php';
Robotstxt_Updater::init( __FILE__ ); Robotstxt_Updater::init( __FILE__ );

View file

@ -1,8 +1,8 @@
{ {
"name": "SMTP (by ROBOTSTXT) Amazon SES", "name": "SMTP (by ROBOTSTXT) Amazon SES",
"slug": "robotstxt-smtp-amazonses", "slug": "robotstxt-smtp-amazonses",
"version": "2.1.4", "version": "2.1.5",
"download_url": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses/releases/download/2.1.4/robotstxt-smtp-amazonses-2.1.4.zip", "download_url": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses/releases/download/2.1.5/robotstxt-smtp-amazonses-2.1.5.zip",
"requires": "5.7", "requires": "5.7",
"requires_php": "8.2", "requires_php": "8.2",
"tested": "7.1", "tested": "7.1",
@ -12,10 +12,10 @@
"homepage": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses", "homepage": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses",
"requires_plugins": ["robotstxt-smtp"], "requires_plugins": ["robotstxt-smtp"],
"description": "Adds Amazon SES (Simple Email Service) configuration support to the ROBOTSTXT SMTP plugin. Integrates seamlessly with AWS SDK for PHP to send emails through Amazon SES infrastructure.", "description": "Adds Amazon SES (Simple Email Service) configuration support to the ROBOTSTXT SMTP plugin. Integrates seamlessly with AWS SDK for PHP to send emails through Amazon SES infrastructure.",
"changelog": "<h3>2.1.4 - 2026-06-09</h3><ul><li><strong>Changed:</strong> Minimum WordPress version lowered to 5.7 (verified real minimum by static analysis)</li></ul><h3>2.1.3 - 2026-06-09</h3><ul><li><strong>Fixed:</strong> Nonce handling in manual quota refresh to correctly handle false values from filter_input()</li><li><strong>Fixed:</strong> Admin notices display now skips non-array notice entries</li><li><strong>Fixed:</strong> Input normalization for recipients, attachments, and headers now properly skips non-string values</li><li><strong>Removed:</strong> Unused internal rate limit method (dead code cleanup)</li><li><strong>Compatibility:</strong> Tested up to WordPress 7.1</li></ul><h3>2.1.2 - 2026-02-12</h3><ul><li><strong>Fixed:</strong> Charset encoding issue that caused \"expected parameter value, got null\" error when sending emails through Amazon SES</li><li><strong>Improved:</strong> Added robust charset validation in header parsing to prevent empty or invalid charset values</li><li><strong>Improved:</strong> Enhanced charset handling with automatic fallback to UTF-8 when no valid charset is provided</li></ul>", "changelog": "<h3>2.1.5 - 2026-06-09</h3><ul><li><strong>Added:</strong> Runtime check for missing parent plugin — shows admin notice instead of fatal error</li><li><strong>Fixed:</strong> Credentials never saving on first entry — validation now only blocks on definitive auth failures (InvalidClientTokenId, SignatureDoesNotMatch, InvalidAccessKeyId)</li><li><strong>Fixed:</strong> Reply-to email field cannot be cleared — submitting empty now removes the stored address</li></ul><h3>2.1.4 - 2026-06-09</h3><ul><li><strong>Changed:</strong> Minimum WordPress version lowered to 5.7 (verified real minimum by static analysis)</li></ul><h3>2.1.3 - 2026-06-09</h3><ul><li><strong>Fixed:</strong> Nonce handling in manual quota refresh to correctly handle false values from filter_input()</li><li><strong>Fixed:</strong> Admin notices display now skips non-array notice entries</li><li><strong>Fixed:</strong> Input normalization for recipients, attachments, and headers now properly skips non-string values</li><li><strong>Removed:</strong> Unused internal rate limit method (dead code cleanup)</li><li><strong>Compatibility:</strong> Tested up to WordPress 7.1</li></ul><h3>2.1.2 - 2026-02-12</h3><ul><li><strong>Fixed:</strong> Charset encoding issue that caused \"expected parameter value, got null\" error when sending emails through Amazon SES</li><li><strong>Improved:</strong> Added robust charset validation in header parsing to prevent empty or invalid charset values</li><li><strong>Improved:</strong> Enhanced charset handling with automatic fallback to UTF-8 when no valid charset is provided</li></ul>",
"sections": { "sections": {
"description": "Adds Amazon SES (Simple Email Service) configuration support to the ROBOTSTXT SMTP plugin. Integrates seamlessly with AWS SDK for PHP to send emails through Amazon SES infrastructure.", "description": "Adds Amazon SES (Simple Email Service) configuration support to the ROBOTSTXT SMTP plugin. Integrates seamlessly with AWS SDK for PHP to send emails through Amazon SES infrastructure.",
"changelog": "<h3>2.1.4 - 2026-06-09</h3><ul><li><strong>Changed:</strong> Minimum WordPress version lowered to 5.7 (verified real minimum by static analysis)</li></ul><h3>2.1.3 - 2026-06-09</h3><ul><li><strong>Fixed:</strong> Nonce handling in manual quota refresh to correctly handle false values from filter_input()</li><li><strong>Fixed:</strong> Admin notices display now skips non-array notice entries</li><li><strong>Fixed:</strong> Input normalization for recipients, attachments, and headers now properly skips non-string values</li><li><strong>Removed:</strong> Unused internal rate limit method (dead code cleanup)</li><li><strong>Compatibility:</strong> Tested up to WordPress 7.1</li></ul><h3>2.1.2 - 2026-02-12</h3><ul><li><strong>Fixed:</strong> Charset encoding issue that caused \"expected parameter value, got null\" error when sending emails through Amazon SES</li><li><strong>Improved:</strong> Added robust charset validation in header parsing to prevent empty or invalid charset values</li><li><strong>Improved:</strong> Enhanced charset handling with automatic fallback to UTF-8 when no valid charset is provided</li></ul><h3>2.1.1 - 2026-02-09</h3><ul><li><strong>Added:</strong> Comprehensive Amazon SES debug context to test email error reports</li><li><strong>Security:</strong> Access keys are now masked in error output (shows only first 4 and last 4 characters)</li></ul><h3>2.1.0 - 2026-02-09</h3><ul><li><strong>Changed:</strong> Uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin</li></ul>" "changelog": "<h3>2.1.5 - 2026-06-09</h3><ul><li><strong>Added:</strong> Runtime check for missing parent plugin — shows admin notice instead of fatal error</li><li><strong>Fixed:</strong> Credentials never saving on first entry — validation now only blocks on definitive auth failures</li><li><strong>Fixed:</strong> Reply-to email field cannot be cleared — submitting empty now removes the stored address</li></ul><h3>2.1.4 - 2026-06-09</h3><ul><li><strong>Changed:</strong> Minimum WordPress version lowered to 5.7 (verified real minimum by static analysis)</li></ul><h3>2.1.3 - 2026-06-09</h3><ul><li><strong>Fixed:</strong> Nonce handling in manual quota refresh to correctly handle false values from filter_input()</li><li><strong>Fixed:</strong> Admin notices display now skips non-array notice entries</li><li><strong>Fixed:</strong> Input normalization for recipients, attachments, and headers now properly skips non-string values</li><li><strong>Removed:</strong> Unused internal rate limit method (dead code cleanup)</li><li><strong>Compatibility:</strong> Tested up to WordPress 7.1</li></ul><h3>2.1.2 - 2026-02-12</h3><ul><li><strong>Fixed:</strong> Charset encoding issue that caused \"expected parameter value, got null\" error when sending emails through Amazon SES</li><li><strong>Improved:</strong> Added robust charset validation in header parsing to prevent empty or invalid charset values</li><li><strong>Improved:</strong> Enhanced charset handling with automatic fallback to UTF-8 when no valid charset is provided</li></ul><h3>2.1.1 - 2026-02-09</h3><ul><li><strong>Added:</strong> Comprehensive Amazon SES debug context to test email error reports</li><li><strong>Security:</strong> Access keys are now masked in error output (shows only first 4 and last 4 characters)</li></ul><h3>2.1.0 - 2026-02-09</h3><ul><li><strong>Changed:</strong> Uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin</li></ul>"
}, },
"banners": { "banners": {
"low": "", "low": "",

View file

@ -3,7 +3,7 @@
'name' => 'robotstxt/robotstxt-smtp-amazonses', 'name' => 'robotstxt/robotstxt-smtp-amazonses',
'pretty_version' => 'dev-main', 'pretty_version' => 'dev-main',
'version' => 'dev-main', 'version' => 'dev-main',
'reference' => 'b0fb27912c6bcd89eea786badab9921b36b41a91', 'reference' => '76ef43f421cbfa826db298560ad762a5bbfda1dc',
'type' => 'wordpress-plugin', 'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@ -121,7 +121,7 @@
'robotstxt/robotstxt-smtp-amazonses' => array( 'robotstxt/robotstxt-smtp-amazonses' => array(
'pretty_version' => 'dev-main', 'pretty_version' => 'dev-main',
'version' => 'dev-main', 'version' => 'dev-main',
'reference' => 'b0fb27912c6bcd89eea786badab9921b36b41a91', 'reference' => '76ef43f421cbfa826db298560ad762a5bbfda1dc',
'type' => 'wordpress-plugin', 'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),