This commit is contained in:
Javier Casares 2026-09-01 06:17:08 +00:00
commit 25dd2146b1
10 changed files with 286 additions and 231 deletions

View file

@ -1,5 +1,25 @@
== Changelog == == Changelog ==
= 2.1.9 =
_Release date: 2026-09-01_
**Fixed**
* Emails were aborted when a recipient or Reply-To header used the combined "Name <email>" form — for example WooCommerce admin "New order" notifications carrying `Reply-To: Customer Name <customer@email.com>`. The display name and the email address are now split before being passed to PHPMailer, so these emails are delivered instead of failing with "Amazon SES rejected the reply-to address". Applies to To, CC, BCC, and Reply-To headers, including folded (multiline) header values.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.6
* WordPress Coding Standards: 3.4.1
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.9
= 2.1.8 = = 2.1.8 =
_Release date: 2026-08-24_ _Release date: 2026-08-24_

View file

@ -382,8 +382,10 @@ class Plugin {
} }
foreach ( $mail_context['to'] as $recipient ) { foreach ( $mail_context['to'] as $recipient ) {
list( $recipient_address, $recipient_name ) = self::split_name_and_address( $recipient );
try { try {
$phpmailer->addAddress( $recipient ); $phpmailer->addAddress( $recipient_address, $recipient_name );
} catch ( PHPMailerException $exception ) { } catch ( PHPMailerException $exception ) {
return new WP_Error( return new WP_Error(
'robotstxt_smtp_amazon_ses_invalid_recipient', 'robotstxt_smtp_amazon_ses_invalid_recipient',
@ -404,8 +406,10 @@ class Plugin {
} }
foreach ( $parsed_headers['cc'] ?? array() as $cc ) { foreach ( $parsed_headers['cc'] ?? array() as $cc ) {
list( $cc_address, $cc_name ) = self::split_name_and_address( $cc );
try { try {
$phpmailer->addCC( $cc ); $phpmailer->addCC( $cc_address, $cc_name );
} catch ( PHPMailerException $exception ) { } catch ( PHPMailerException $exception ) {
return new WP_Error( return new WP_Error(
'robotstxt_smtp_amazon_ses_invalid_cc', 'robotstxt_smtp_amazon_ses_invalid_cc',
@ -426,8 +430,10 @@ class Plugin {
} }
foreach ( $parsed_headers['bcc'] ?? array() as $bcc ) { foreach ( $parsed_headers['bcc'] ?? array() as $bcc ) {
list( $bcc_address, $bcc_name ) = self::split_name_and_address( $bcc );
try { try {
$phpmailer->addBCC( $bcc ); $phpmailer->addBCC( $bcc_address, $bcc_name );
} catch ( PHPMailerException $exception ) { } catch ( PHPMailerException $exception ) {
return new WP_Error( return new WP_Error(
'robotstxt_smtp_amazon_ses_invalid_bcc', 'robotstxt_smtp_amazon_ses_invalid_bcc',
@ -448,8 +454,10 @@ class Plugin {
} }
foreach ( $parsed_headers['reply_to'] ?? array() as $reply_to ) { foreach ( $parsed_headers['reply_to'] ?? array() as $reply_to ) {
list( $reply_to_address, $reply_to_name ) = self::split_name_and_address( $reply_to );
try { try {
$phpmailer->addReplyTo( $reply_to ); $phpmailer->addReplyTo( $reply_to_address, $reply_to_name );
} catch ( PHPMailerException $exception ) { } catch ( PHPMailerException $exception ) {
return new WP_Error( return new WP_Error(
'robotstxt_smtp_amazon_ses_invalid_reply_to', 'robotstxt_smtp_amazon_ses_invalid_reply_to',
@ -747,6 +755,35 @@ class Plugin {
return $normalized; return $normalized;
} }
/**
* Splits a recipient string into an email address and an optional display name.
*
* Callers such as wp_mail() may supply addresses in the combined
* "Name <email@example.com>" form. PHPMailer expects the address and the
* display name as separate arguments, so they must be split first.
*
* @since 2.1.9
*
* @param string $recipient Recipient as supplied to wp_mail().
* @return array{0: string, 1: string} Email address and display name (empty string when absent).
*/
public static function split_name_and_address( string $recipient ): array {
$recipient = trim( $recipient );
if ( preg_match( '/^(.*)<([^>]+)>$/s', $recipient, $matches ) ) {
$name = trim( (string) preg_replace( '/\s+/', ' ', $matches[1] ) );
$address = trim( $matches[2] );
if ( strlen( $name ) > 1 && '"' === $name[0] && '"' === substr( $name, -1 ) ) {
$name = substr( $name, 1, -1 );
}
return array( $address, $name );
}
return array( $recipient, '' );
}
/** /**
* Ensures the attachments argument is converted into an array of paths. * Ensures the attachments argument is converted into an array of paths.
* *

View file

@ -1,9 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.8\n" "Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.9\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-" "Report-Msgid-Bugs-To: https://www.robotstxt.software/support/\n"
"amazonses\n" "POT-Creation-Date: 2026-09-01T06:15:06+00:00\n"
"POT-Creation-Date: 2026-08-24T12:46:43+00:00\n"
"PO-Revision-Date: 2026-08-17 19:30+0000\n" "PO-Revision-Date: 2026-08-17 19:30+0000\n"
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n" "Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
"Language-Team: Catalan\n" "Language-Team: Catalan\n"
@ -72,80 +71,80 @@ 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"
#. translators: %s: Invalid recipient email address. #. translators: %s: Invalid recipient email address.
#: includes/class-plugin.php:392 #: includes/class-plugin.php:394
#, 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"
#. translators: %s: Invalid CC email address. #. translators: %s: Invalid CC email address.
#: includes/class-plugin.php:414 #: includes/class-plugin.php:418
#, 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"
#. translators: %s: Invalid BCC email address. #. translators: %s: Invalid BCC email address.
#: includes/class-plugin.php:436 #: includes/class-plugin.php:442
#, 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"
#. translators: %s: Invalid reply-to email address. #. translators: %s: Invalid reply-to email address.
#: includes/class-plugin.php:458 #: includes/class-plugin.php:466
#, 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"
#. translators: %s: Invalid reply-to email address from settings. #. translators: %s: Invalid reply-to email address from settings.
#: includes/class-plugin.php:487 #: includes/class-plugin.php:495
#, 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"
#. translators: %s: Attachment path that could not be added. #. translators: %s: Attachment path that could not be added.
#: includes/class-plugin.php:538 #: includes/class-plugin.php:546
#, 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:924 #: includes/class-plugin.php:961
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:932 includes/class-plugin.php:1807 #: includes/class-plugin.php:969 includes/class-plugin.php:1844
msgid "You do not have sufficient permissions to access this page." msgid "You do not have sufficient permissions to access this page."
msgstr "No tens permisos suficients per accedir a aquesta pàgina." msgstr "No tens permisos suficients per accedir a aquesta pàgina."
#: includes/class-plugin.php:945 #: includes/class-plugin.php:982
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:952 #: includes/class-plugin.php:989
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 ""
"No s'han pogut obtenir les quotes d'Amazon SES. Verifica el registre de " "No s'han pogut obtenir les quotes d'Amazon SES. Verifica el registre de "
"depuració per a més detalls." "depuració per a més detalls."
#: includes/class-plugin.php:991 #: includes/class-plugin.php:1028
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:997 #: includes/class-plugin.php:1034
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "Clau d'accés secreta" msgstr "Clau d'accés secreta"
#: includes/class-plugin.php:1003 #: includes/class-plugin.php:1040
msgid "Region" msgid "Region"
msgstr "Regió" msgstr "Regió"
#: includes/class-plugin.php:1042 #: includes/class-plugin.php:1079
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:1071 #: includes/class-plugin.php:1108
msgid "Clear access key" msgid "Clear access key"
msgstr "Elimina la clau d'accés" msgstr "Elimina la clau d'accés"
#: includes/class-plugin.php:1074 #: includes/class-plugin.php:1111
msgid "" msgid ""
"Provide the IAM access key ID with permissions to send email through Amazon " "Provide the IAM access key ID with permissions to send email through Amazon "
"SES. Leave the field empty to retain the existing value." "SES. Leave the field empty to retain the existing value."
@ -153,15 +152,15 @@ msgstr ""
"Proporciona l'ID de clau d'accés IAM amb permisos per enviar email a través " "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." "d'Amazon SES. Deixa el camp buit per mantenir el valor existent."
#: includes/class-plugin.php:1086 #: includes/class-plugin.php:1123
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:1115 #: includes/class-plugin.php:1152
msgid "Clear secret key" msgid "Clear secret key"
msgstr "Elimina la clau d'accés secreta" msgstr "Elimina la clau d'accés secreta"
#: includes/class-plugin.php:1118 #: includes/class-plugin.php:1155
msgid "" msgid ""
"Enter the secret access key associated with the IAM user. Leave the field " "Enter the secret access key associated with the IAM user. Leave the field "
"empty to retain the existing value." "empty to retain the existing value."
@ -169,19 +168,19 @@ msgstr ""
"Introdueix la clau d'accés secreta associada amb l'usuari IAM. Deixa el camp " "Introdueix la clau d'accés secreta associada amb l'usuari IAM. Deixa el camp "
"buit per mantenir el valor existent." "buit per mantenir el valor existent."
#: includes/class-plugin.php:1133 #: includes/class-plugin.php:1170
msgid "Select a region" msgid "Select a region"
msgstr "Selecciona una regió" msgstr "Selecciona una regió"
#: includes/class-plugin.php:1138 #: includes/class-plugin.php:1175
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:1216 #: includes/class-plugin.php:1253
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:1232 #: includes/class-plugin.php:1269
msgid "" msgid ""
"Amazon SES credentials were not saved. Provide an access key, secret key, " "Amazon SES credentials were not saved. Provide an access key, secret key, "
"and region." "and region."
@ -189,171 +188,171 @@ msgstr ""
"Les credencials d'Amazon SES no s'han desat. Proporciona una clau d'accés, " "Les credencials d'Amazon SES no s'han desat. Proporciona una clau d'accés, "
"clau secreta i regió." "clau secreta i regió."
#: includes/class-plugin.php:1256 #: includes/class-plugin.php:1293
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:1467 #: includes/class-plugin.php:1504
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "EUA Est (Ohio)" msgstr "EUA Est (Ohio)"
#: includes/class-plugin.php:1468 #: includes/class-plugin.php:1505
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:1469 #: includes/class-plugin.php:1506
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:1470 #: includes/class-plugin.php:1507
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "EUA Oest (Oregon)" msgstr "EUA Oest (Oregon)"
#: includes/class-plugin.php:1471 #: includes/class-plugin.php:1508
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "Àfrica (Ciutat del Cap)" msgstr "Àfrica (Ciutat del Cap)"
#: includes/class-plugin.php:1472 #: includes/class-plugin.php:1509
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "Àsia Pacífic (Hyderabad)" msgstr "Àsia Pacífic (Hyderabad)"
#: includes/class-plugin.php:1473 #: includes/class-plugin.php:1510
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "Àsia Pacífic (Jakarta)" msgstr "Àsia Pacífic (Jakarta)"
#: includes/class-plugin.php:1474 #: includes/class-plugin.php:1511
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "Àsia Pacífic (Mumbai)" msgstr "Àsia Pacífic (Mumbai)"
#: includes/class-plugin.php:1475 #: includes/class-plugin.php:1512
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "Àsia Pacífic (Osaka)" msgstr "Àsia Pacífic (Osaka)"
#: includes/class-plugin.php:1476 #: includes/class-plugin.php:1513
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "Àsia Pacífic (Seül)" msgstr "Àsia Pacífic (Seül)"
#: includes/class-plugin.php:1477 #: includes/class-plugin.php:1514
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "Àsia Pacífic (Singapur)" msgstr "Àsia Pacífic (Singapur)"
#: includes/class-plugin.php:1478 #: includes/class-plugin.php:1515
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "Àsia Pacífic (Sydney)" msgstr "Àsia Pacífic (Sydney)"
#: includes/class-plugin.php:1479 #: includes/class-plugin.php:1516
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "Àsia Pacífic (Tòquio)" msgstr "Àsia Pacífic (Tòquio)"
#: includes/class-plugin.php:1480 #: includes/class-plugin.php:1517
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "Canadà (Central)" msgstr "Canadà (Central)"
#: includes/class-plugin.php:1481 #: includes/class-plugin.php:1518
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "Europa (Frankfurt)" msgstr "Europa (Frankfurt)"
#: includes/class-plugin.php:1482 #: includes/class-plugin.php:1519
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "Europa (Irlanda)" msgstr "Europa (Irlanda)"
#: includes/class-plugin.php:1483 #: includes/class-plugin.php:1520
msgid "Europe (London)" msgid "Europe (London)"
msgstr "Europa (Londres)" msgstr "Europa (Londres)"
#: includes/class-plugin.php:1484 #: includes/class-plugin.php:1521
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "Europa (Milà)" msgstr "Europa (Milà)"
#: includes/class-plugin.php:1485 #: includes/class-plugin.php:1522
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "Europa (París)" msgstr "Europa (París)"
#: includes/class-plugin.php:1486 #: includes/class-plugin.php:1523
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "Europa (Estocolm)" msgstr "Europa (Estocolm)"
#: includes/class-plugin.php:1487 #: includes/class-plugin.php:1524
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "Europa (Zuric)" msgstr "Europa (Zuric)"
#: includes/class-plugin.php:1488 #: includes/class-plugin.php:1525
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "Israel (Tel Aviv)" msgstr "Israel (Tel Aviv)"
#: includes/class-plugin.php:1489 #: includes/class-plugin.php:1526
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "Orient Mitjà (Bahrain)" msgstr "Orient Mitjà (Bahrain)"
#: includes/class-plugin.php:1490 #: includes/class-plugin.php:1527
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "Orient Mitjà (EAU)" msgstr "Orient Mitjà (EAU)"
#: includes/class-plugin.php:1491 #: includes/class-plugin.php:1528
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:1492 #: includes/class-plugin.php:1529
msgid "AWS GovCloud (US-East)" msgid "AWS GovCloud (US-East)"
msgstr "AWS GovCloud (EUA-Est)" msgstr "AWS GovCloud (EUA-Est)"
#: includes/class-plugin.php:1493 #: includes/class-plugin.php:1530
msgid "AWS GovCloud (US-West)" msgid "AWS GovCloud (US-West)"
msgstr "AWS GovCloud (EUA-Oest)" msgstr "AWS GovCloud (EUA-Oest)"
#. translators: 1: AWS region display name. 2: AWS region code. #. translators: 1: AWS region display name. 2: AWS region code.
#: includes/class-plugin.php:1508 #: includes/class-plugin.php:1545
#, php-format #, php-format
msgid "%1$s (%2$s)" msgid "%1$s (%2$s)"
msgstr "%1$s (%2$s)" msgstr "%1$s (%2$s)"
#. translators: %s: AWS region code. #. translators: %s: AWS region code.
#: includes/class-plugin.php:1524 #: includes/class-plugin.php:1561
#, php-format #, php-format
msgid "Region %s" msgid "Region %s"
msgstr "Regió %s" msgstr "Regió %s"
#. translators: %s: Error message from Amazon SES. #. translators: %s: Error message from Amazon SES.
#: includes/class-plugin.php:1565 #: includes/class-plugin.php:1602
#, 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:1630 includes/class-plugin.php:1652 #: includes/class-plugin.php:1667 includes/class-plugin.php:1689
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:1666 #: includes/class-plugin.php:1703
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:1688 #: includes/class-plugin.php:1725
msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission." msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission."
msgstr "" msgstr ""
"No es poden obtenir les quotes de SES: l'usuari IAM no té el permís ses:" "No es poden obtenir les quotes de SES: l'usuari IAM no té el permís ses:"
"GetAccount." "GetAccount."
#. translators: %s: AWS error message #. translators: %s: AWS error message
#: includes/class-plugin.php:1696 #: includes/class-plugin.php:1733
#, 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"
#. translators: %s: Error message #. translators: %s: Error message
#: includes/class-plugin.php:1705 #: includes/class-plugin.php:1742
#, 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"
#: includes/class-plugin.php:1796 #: includes/class-plugin.php:1833
msgid "The link you followed has expired." msgid "The link you followed has expired."
msgstr "L'enllaç que has seguit ha caducat." msgstr "L'enllaç que has seguit ha caducat."
#: includes/class-plugin.php:1885 #: includes/class-plugin.php:1922
msgid "The Amazon SES Access Key ID has been cleared." msgid "The Amazon SES Access Key ID has been cleared."
msgstr "L'ID de clau d'accés d'Amazon SES s'ha eliminat." msgstr "L'ID de clau d'accés d'Amazon SES s'ha eliminat."
#: includes/class-plugin.php:1887 #: includes/class-plugin.php:1924
msgid "The Amazon SES Secret Access Key has been cleared." msgid "The Amazon SES Secret Access Key has been cleared."
msgstr "La clau d'accés secreta d'Amazon SES s'ha eliminat." msgstr "La clau d'accés secreta d'Amazon SES s'ha eliminat."

View file

@ -1,9 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.8\n" "Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.9\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-" "Report-Msgid-Bugs-To: https://www.robotstxt.software/support/\n"
"amazonses\n" "POT-Creation-Date: 2026-09-01T06:15:06+00:00\n"
"POT-Creation-Date: 2026-08-24T12:46:43+00:00\n"
"PO-Revision-Date: 2026-08-17 19:30+0000\n" "PO-Revision-Date: 2026-08-17 19:30+0000\n"
"Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n" "Last-Translator: ROBOTSTXT <robotstxt@robotstxt.es>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
@ -71,80 +70,80 @@ 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"
#. translators: %s: Invalid recipient email address. #. translators: %s: Invalid recipient email address.
#: includes/class-plugin.php:392 #: includes/class-plugin.php:394
#, 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"
#. translators: %s: Invalid CC email address. #. translators: %s: Invalid CC email address.
#: includes/class-plugin.php:414 #: includes/class-plugin.php:418
#, 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"
#. translators: %s: Invalid BCC email address. #. translators: %s: Invalid BCC email address.
#: includes/class-plugin.php:436 #: includes/class-plugin.php:442
#, 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"
#. translators: %s: Invalid reply-to email address. #. translators: %s: Invalid reply-to email address.
#: includes/class-plugin.php:458 #: includes/class-plugin.php:466
#, 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"
#. translators: %s: Invalid reply-to email address from settings. #. translators: %s: Invalid reply-to email address from settings.
#: includes/class-plugin.php:487 #: includes/class-plugin.php:495
#, 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"
#. translators: %s: Attachment path that could not be added. #. translators: %s: Attachment path that could not be added.
#: includes/class-plugin.php:538 #: includes/class-plugin.php:546
#, 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:924 #: includes/class-plugin.php:961
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:932 includes/class-plugin.php:1807 #: includes/class-plugin.php:969 includes/class-plugin.php:1844
msgid "You do not have sufficient permissions to access this page." msgid "You do not have sufficient permissions to access this page."
msgstr "No tienes permisos suficientes para acceder a esta página." msgstr "No tienes permisos suficientes para acceder a esta página."
#: includes/class-plugin.php:945 #: includes/class-plugin.php:982
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:952 #: includes/class-plugin.php:989
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 ""
"No se pudieron obtener las cuotas de Amazon SES. Verifica el registro de " "No se pudieron obtener las cuotas de Amazon SES. Verifica el registro de "
"depuración para más detalles." "depuración para más detalles."
#: includes/class-plugin.php:991 #: includes/class-plugin.php:1028
msgid "Access Key ID" msgid "Access Key ID"
msgstr "ID de clave de acceso" msgstr "ID de clave de acceso"
#: includes/class-plugin.php:997 #: includes/class-plugin.php:1034
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "Clave de acceso secreta" msgstr "Clave de acceso secreta"
#: includes/class-plugin.php:1003 #: includes/class-plugin.php:1040
msgid "Region" msgid "Region"
msgstr "Región" msgstr "Región"
#: includes/class-plugin.php:1042 #: includes/class-plugin.php:1079
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:1071 #: includes/class-plugin.php:1108
msgid "Clear access key" msgid "Clear access key"
msgstr "Eliminar clave de acceso" msgstr "Eliminar clave de acceso"
#: includes/class-plugin.php:1074 #: includes/class-plugin.php:1111
msgid "" msgid ""
"Provide the IAM access key ID with permissions to send email through Amazon " "Provide the IAM access key ID with permissions to send email through Amazon "
"SES. Leave the field empty to retain the existing value." "SES. Leave the field empty to retain the existing value."
@ -152,15 +151,15 @@ msgstr ""
"Proporciona el ID de clave de acceso IAM con permisos para enviar email a " "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." "través de Amazon SES. Deja el campo vacío para mantener el valor existente."
#: includes/class-plugin.php:1086 #: includes/class-plugin.php:1123
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:1115 #: includes/class-plugin.php:1152
msgid "Clear secret key" msgid "Clear secret key"
msgstr "Eliminar clave de acceso secreta" msgstr "Eliminar clave de acceso secreta"
#: includes/class-plugin.php:1118 #: includes/class-plugin.php:1155
msgid "" msgid ""
"Enter the secret access key associated with the IAM user. Leave the field " "Enter the secret access key associated with the IAM user. Leave the field "
"empty to retain the existing value." "empty to retain the existing value."
@ -168,19 +167,19 @@ msgstr ""
"Introduce la clave de acceso secreta asociada con el usuario IAM. Deja el " "Introduce la clave de acceso secreta asociada con el usuario IAM. Deja el "
"campo vacío para mantener el valor existente." "campo vacío para mantener el valor existente."
#: includes/class-plugin.php:1133 #: includes/class-plugin.php:1170
msgid "Select a region" msgid "Select a region"
msgstr "Selecciona una región" msgstr "Selecciona una región"
#: includes/class-plugin.php:1138 #: includes/class-plugin.php:1175
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:1216 #: includes/class-plugin.php:1253
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:1232 #: includes/class-plugin.php:1269
msgid "" msgid ""
"Amazon SES credentials were not saved. Provide an access key, secret key, " "Amazon SES credentials were not saved. Provide an access key, secret key, "
"and region." "and region."
@ -188,171 +187,171 @@ msgstr ""
"Las credenciales de Amazon SES no se guardaron. Proporciona una clave de " "Las credenciales de Amazon SES no se guardaron. Proporciona una clave de "
"acceso, clave secreta y región." "acceso, clave secreta y región."
#: includes/class-plugin.php:1256 #: includes/class-plugin.php:1293
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:1467 #: includes/class-plugin.php:1504
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "EE.UU. Este (Ohio)" msgstr "EE.UU. Este (Ohio)"
#: includes/class-plugin.php:1468 #: includes/class-plugin.php:1505
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:1469 #: includes/class-plugin.php:1506
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:1470 #: includes/class-plugin.php:1507
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "EE.UU. Oeste (Oregón)" msgstr "EE.UU. Oeste (Oregón)"
#: includes/class-plugin.php:1471 #: includes/class-plugin.php:1508
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "África (Ciudad del Cabo)" msgstr "África (Ciudad del Cabo)"
#: includes/class-plugin.php:1472 #: includes/class-plugin.php:1509
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "Asia Pacífico (Hyderabad)" msgstr "Asia Pacífico (Hyderabad)"
#: includes/class-plugin.php:1473 #: includes/class-plugin.php:1510
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "Asia Pacífico (Yakarta)" msgstr "Asia Pacífico (Yakarta)"
#: includes/class-plugin.php:1474 #: includes/class-plugin.php:1511
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "Asia Pacífico (Mumbai)" msgstr "Asia Pacífico (Mumbai)"
#: includes/class-plugin.php:1475 #: includes/class-plugin.php:1512
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "Asia Pacífico (Osaka)" msgstr "Asia Pacífico (Osaka)"
#: includes/class-plugin.php:1476 #: includes/class-plugin.php:1513
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "Asia Pacífico (Seúl)" msgstr "Asia Pacífico (Seúl)"
#: includes/class-plugin.php:1477 #: includes/class-plugin.php:1514
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "Asia Pacífico (Singapur)" msgstr "Asia Pacífico (Singapur)"
#: includes/class-plugin.php:1478 #: includes/class-plugin.php:1515
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "Asia Pacífico (Sídney)" msgstr "Asia Pacífico (Sídney)"
#: includes/class-plugin.php:1479 #: includes/class-plugin.php:1516
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "Asia Pacífico (Tokio)" msgstr "Asia Pacífico (Tokio)"
#: includes/class-plugin.php:1480 #: includes/class-plugin.php:1517
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "Canadá (Central)" msgstr "Canadá (Central)"
#: includes/class-plugin.php:1481 #: includes/class-plugin.php:1518
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "Europa (Fráncfort)" msgstr "Europa (Fráncfort)"
#: includes/class-plugin.php:1482 #: includes/class-plugin.php:1519
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "Europa (Irlanda)" msgstr "Europa (Irlanda)"
#: includes/class-plugin.php:1483 #: includes/class-plugin.php:1520
msgid "Europe (London)" msgid "Europe (London)"
msgstr "Europa (Londres)" msgstr "Europa (Londres)"
#: includes/class-plugin.php:1484 #: includes/class-plugin.php:1521
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "Europa (Milán)" msgstr "Europa (Milán)"
#: includes/class-plugin.php:1485 #: includes/class-plugin.php:1522
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "Europa (París)" msgstr "Europa (París)"
#: includes/class-plugin.php:1486 #: includes/class-plugin.php:1523
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "Europa (Estocolmo)" msgstr "Europa (Estocolmo)"
#: includes/class-plugin.php:1487 #: includes/class-plugin.php:1524
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "Europa (Zúrich)" msgstr "Europa (Zúrich)"
#: includes/class-plugin.php:1488 #: includes/class-plugin.php:1525
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "Israel (Tel Aviv)" msgstr "Israel (Tel Aviv)"
#: includes/class-plugin.php:1489 #: includes/class-plugin.php:1526
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "Oriente Medio (Baréin)" msgstr "Oriente Medio (Baréin)"
#: includes/class-plugin.php:1490 #: includes/class-plugin.php:1527
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "Oriente Medio (EAU)" msgstr "Oriente Medio (EAU)"
#: includes/class-plugin.php:1491 #: includes/class-plugin.php:1528
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:1492 #: includes/class-plugin.php:1529
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:1493 #: includes/class-plugin.php:1530
msgid "AWS GovCloud (US-West)" msgid "AWS GovCloud (US-West)"
msgstr "AWS GovCloud (EE.UU.-Oeste)" msgstr "AWS GovCloud (EE.UU.-Oeste)"
#. translators: 1: AWS region display name. 2: AWS region code. #. translators: 1: AWS region display name. 2: AWS region code.
#: includes/class-plugin.php:1508 #: includes/class-plugin.php:1545
#, php-format #, php-format
msgid "%1$s (%2$s)" msgid "%1$s (%2$s)"
msgstr "%1$s (%2$s)" msgstr "%1$s (%2$s)"
#. translators: %s: AWS region code. #. translators: %s: AWS region code.
#: includes/class-plugin.php:1524 #: includes/class-plugin.php:1561
#, php-format #, php-format
msgid "Region %s" msgid "Region %s"
msgstr "Región %s" msgstr "Región %s"
#. translators: %s: Error message from Amazon SES. #. translators: %s: Error message from Amazon SES.
#: includes/class-plugin.php:1565 #: includes/class-plugin.php:1602
#, 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:1630 includes/class-plugin.php:1652 #: includes/class-plugin.php:1667 includes/class-plugin.php:1689
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:1666 #: includes/class-plugin.php:1703
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:1688 #: includes/class-plugin.php:1725
msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission." msgid "Cannot fetch SES quotas: IAM user lacks ses:GetAccount permission."
msgstr "" msgstr ""
"No se pueden obtener las cuotas de SES: el usuario IAM no tiene el permiso " "No se pueden obtener las cuotas de SES: el usuario IAM no tiene el permiso "
"ses:GetAccount." "ses:GetAccount."
#. translators: %s: AWS error message #. translators: %s: AWS error message
#: includes/class-plugin.php:1696 #: includes/class-plugin.php:1733
#, 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"
#. translators: %s: Error message #. translators: %s: Error message
#: includes/class-plugin.php:1705 #: includes/class-plugin.php:1742
#, 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"
#: includes/class-plugin.php:1796 #: includes/class-plugin.php:1833
msgid "The link you followed has expired." msgid "The link you followed has expired."
msgstr "El enlace que has seguido ha caducado." msgstr "El enlace que has seguido ha caducado."
#: includes/class-plugin.php:1885 #: includes/class-plugin.php:1922
msgid "The Amazon SES Access Key ID has been cleared." msgid "The Amazon SES Access Key ID has been cleared."
msgstr "El ID de clave de acceso de Amazon SES se ha eliminado." msgstr "El ID de clave de acceso de Amazon SES se ha eliminado."
#: includes/class-plugin.php:1887 #: includes/class-plugin.php:1924
msgid "The Amazon SES Secret Access Key has been cleared." msgid "The Amazon SES Secret Access Key has been cleared."
msgstr "La clave de acceso secreta de Amazon SES se ha eliminado." msgstr "La clave de acceso secreta de Amazon SES se ha eliminado."

View file

@ -2,14 +2,14 @@
# This file is distributed under the GPL-3.0-or-later. # This file is distributed under the GPL-3.0-or-later.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.8\n" "Project-Id-Version: SMTP Amazon SES (by ROBOTSTXT) 2.1.9\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/robotstxt-smtp-amazonses\n" "Report-Msgid-Bugs-To: https://www.robotstxt.software/support/\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\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"
"POT-Creation-Date: 2026-08-24T12:46:43+00:00\n" "POT-Creation-Date: 2026-09-01T06:15:06+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n" "X-Generator: WP-CLI 2.12.0\n"
"X-Domain: robotstxt-smtp-amazonses\n" "X-Domain: robotstxt-smtp-amazonses\n"
@ -68,274 +68,274 @@ 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:392 #: includes/class-plugin.php:394
#, 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:414 #: includes/class-plugin.php:418
#, 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:436 #: includes/class-plugin.php:442
#, 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:458 #: includes/class-plugin.php:466
#, 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:487 #: includes/class-plugin.php:495
#, 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:538 #: includes/class-plugin.php:546
#, 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:924 #: includes/class-plugin.php:961
msgid "Security check failed." msgid "Security check failed."
msgstr "" msgstr ""
#: includes/class-plugin.php:932 #: includes/class-plugin.php:969
#: includes/class-plugin.php:1807 #: includes/class-plugin.php:1844
msgid "You do not have sufficient permissions to access this page." msgid "You do not have sufficient permissions to access this page."
msgstr "" msgstr ""
#: includes/class-plugin.php:945 #: includes/class-plugin.php:982
msgid "Amazon SES quotas refreshed successfully." msgid "Amazon SES quotas refreshed successfully."
msgstr "" msgstr ""
#: includes/class-plugin.php:952 #: includes/class-plugin.php:989
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:991 #: includes/class-plugin.php:1028
msgid "Access Key ID" msgid "Access Key ID"
msgstr "" msgstr ""
#: includes/class-plugin.php:997 #: includes/class-plugin.php:1034
msgid "Secret Access Key" msgid "Secret Access Key"
msgstr "" msgstr ""
#: includes/class-plugin.php:1003 #: includes/class-plugin.php:1040
msgid "Region" msgid "Region"
msgstr "" msgstr ""
#: includes/class-plugin.php:1042 #: includes/class-plugin.php:1079
msgid "Leave empty to keep the stored access key." msgid "Leave empty to keep the stored access key."
msgstr "" msgstr ""
#: includes/class-plugin.php:1071 #: includes/class-plugin.php:1108
msgid "Clear access key" msgid "Clear access key"
msgstr "" msgstr ""
#: includes/class-plugin.php:1074 #: includes/class-plugin.php:1111
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 "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:1086 #: includes/class-plugin.php:1123
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:1115 #: includes/class-plugin.php:1152
msgid "Clear secret key" msgid "Clear secret key"
msgstr "" msgstr ""
#: includes/class-plugin.php:1118 #: includes/class-plugin.php:1155
msgid "Enter the secret access key associated with the IAM user. Leave the field empty to retain the existing value." msgid "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:1133 #: includes/class-plugin.php:1170
msgid "Select a region" msgid "Select a region"
msgstr "" msgstr ""
#: includes/class-plugin.php:1138 #: includes/class-plugin.php:1175
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:1216 #: includes/class-plugin.php:1253
msgid "The selected Amazon SES region is not available." msgid "The selected Amazon SES region is not available."
msgstr "" msgstr ""
#: includes/class-plugin.php:1232 #: includes/class-plugin.php:1269
msgid "Amazon SES credentials were not saved. Provide an access key, secret key, and region." msgid "Amazon SES credentials were not saved. Provide an access key, secret key, and region."
msgstr "" msgstr ""
#: includes/class-plugin.php:1256 #: includes/class-plugin.php:1293
msgid "Amazon SES credentials verified successfully." msgid "Amazon SES credentials verified successfully."
msgstr "" msgstr ""
#: includes/class-plugin.php:1467 #: includes/class-plugin.php:1504
msgid "US East (Ohio)" msgid "US East (Ohio)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1468 #: includes/class-plugin.php:1505
msgid "US East (N. Virginia)" msgid "US East (N. Virginia)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1469 #: includes/class-plugin.php:1506
msgid "US West (N. California)" msgid "US West (N. California)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1470 #: includes/class-plugin.php:1507
msgid "US West (Oregon)" msgid "US West (Oregon)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1471 #: includes/class-plugin.php:1508
msgid "Africa (Cape Town)" msgid "Africa (Cape Town)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1472 #: includes/class-plugin.php:1509
msgid "Asia Pacific (Hyderabad)" msgid "Asia Pacific (Hyderabad)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1473 #: includes/class-plugin.php:1510
msgid "Asia Pacific (Jakarta)" msgid "Asia Pacific (Jakarta)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1474 #: includes/class-plugin.php:1511
msgid "Asia Pacific (Mumbai)" msgid "Asia Pacific (Mumbai)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1475 #: includes/class-plugin.php:1512
msgid "Asia Pacific (Osaka)" msgid "Asia Pacific (Osaka)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1476 #: includes/class-plugin.php:1513
msgid "Asia Pacific (Seoul)" msgid "Asia Pacific (Seoul)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1477 #: includes/class-plugin.php:1514
msgid "Asia Pacific (Singapore)" msgid "Asia Pacific (Singapore)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1478 #: includes/class-plugin.php:1515
msgid "Asia Pacific (Sydney)" msgid "Asia Pacific (Sydney)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1479 #: includes/class-plugin.php:1516
msgid "Asia Pacific (Tokyo)" msgid "Asia Pacific (Tokyo)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1480 #: includes/class-plugin.php:1517
msgid "Canada (Central)" msgid "Canada (Central)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1481 #: includes/class-plugin.php:1518
msgid "Europe (Frankfurt)" msgid "Europe (Frankfurt)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1482 #: includes/class-plugin.php:1519
msgid "Europe (Ireland)" msgid "Europe (Ireland)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1483 #: includes/class-plugin.php:1520
msgid "Europe (London)" msgid "Europe (London)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1484 #: includes/class-plugin.php:1521
msgid "Europe (Milan)" msgid "Europe (Milan)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1485 #: includes/class-plugin.php:1522
msgid "Europe (Paris)" msgid "Europe (Paris)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1486 #: includes/class-plugin.php:1523
msgid "Europe (Stockholm)" msgid "Europe (Stockholm)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1487 #: includes/class-plugin.php:1524
msgid "Europe (Zurich)" msgid "Europe (Zurich)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1488 #: includes/class-plugin.php:1525
msgid "Israel (Tel Aviv)" msgid "Israel (Tel Aviv)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1489 #: includes/class-plugin.php:1526
msgid "Middle East (Bahrain)" msgid "Middle East (Bahrain)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1490 #: includes/class-plugin.php:1527
msgid "Middle East (UAE)" msgid "Middle East (UAE)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1491 #: includes/class-plugin.php:1528
msgid "South America (São Paulo)" msgid "South America (São Paulo)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1492 #: includes/class-plugin.php:1529
msgid "AWS GovCloud (US-East)" msgid "AWS GovCloud (US-East)"
msgstr "" msgstr ""
#: includes/class-plugin.php:1493 #: includes/class-plugin.php:1530
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:1508 #: includes/class-plugin.php:1545
#, 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:1524 #: includes/class-plugin.php:1561
#, 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:1565 #: includes/class-plugin.php:1602
#, php-format #, php-format
msgid "Invalid Amazon SES credentials: %s" msgid "Invalid Amazon SES credentials: %s"
msgstr "" msgstr ""
#: includes/class-plugin.php:1630 #: includes/class-plugin.php:1667
#: includes/class-plugin.php:1652 #: includes/class-plugin.php:1689
msgid "Amazon SES credentials are not configured." msgid "Amazon SES credentials are not configured."
msgstr "" msgstr ""
#: includes/class-plugin.php:1666 #: includes/class-plugin.php:1703
msgid "Amazon SES did not return quota data." msgid "Amazon SES did not return quota data."
msgstr "" msgstr ""
#: includes/class-plugin.php:1688 #: includes/class-plugin.php:1725
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:1696 #: includes/class-plugin.php:1733
#, 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:1705 #: includes/class-plugin.php:1742
#, php-format #, php-format
msgid "Failed to fetch SES quota: %s" msgid "Failed to fetch SES quota: %s"
msgstr "" msgstr ""
#: includes/class-plugin.php:1796 #: includes/class-plugin.php:1833
msgid "The link you followed has expired." msgid "The link you followed has expired."
msgstr "" msgstr ""
#: includes/class-plugin.php:1885 #: includes/class-plugin.php:1922
msgid "The Amazon SES Access Key ID has been cleared." msgid "The Amazon SES Access Key ID has been cleared."
msgstr "" msgstr ""
#: includes/class-plugin.php:1887 #: includes/class-plugin.php:1924
msgid "The Amazon SES Secret Access Key has been cleared." msgid "The Amazon SES Secret Access Key has been cleared."
msgstr "" msgstr ""

View file

@ -3,9 +3,9 @@ Contributors: robotstxt, 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.8 Stable tag: 2.1.9
Requires PHP: 8.2 Requires PHP: 8.2
Version: 2.1.8 Version: 2.1.9
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
@ -57,6 +57,26 @@ Updates are delivered through the **Manager (by ROBOTSTXT)** plugin. The main SM
Only the 3 last versions. The full changelog will be at changelog.txt Only the 3 last versions. The full changelog will be at changelog.txt
= 2.1.9 =
_Release date: 2026-09-01_
**Fixed**
* Emails were aborted when a recipient or Reply-To header used the combined "Name <email>" form — for example WooCommerce admin "New order" notifications carrying `Reply-To: Customer Name <customer@email.com>`. The display name and the email address are now split before being passed to PHPMailer, so these emails are delivered instead of failing with "Amazon SES rejected the reply-to address". Applies to To, CC, BCC, and Reply-To headers, including folded (multiline) header values.
**Compatibility**
* WordPress: 5.7 - 7.1
* PHP: 8.2 - 8.5
**Tests**
* PHP_CodeSniffer: 3.13.6
* WordPress Coding Standards: 3.4.1
* PHPCompatibility: 9.3.5
* PHPStan: 2.2.9
= 2.1.8 = = 2.1.8 =
_Release date: 2026-08-24_ _Release date: 2026-08-24_
@ -101,26 +121,6 @@ _Release date: 2026-08-17_
* PHPCompatibility: 9.3.5 * PHPCompatibility: 9.3.5
* PHPStan: 2.2.8 * PHPStan: 2.2.8
= 2.1.6 =
_Release date: 2026-06-09_
**Added**
* Clear buttons for Access Key ID and Secret Access Key on the settings page. When a credential is stored, a "Clear access key" or "Clear secret key" button appears next to the field, allowing immediate removal of the stored value.
**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
= Previous versions = = Previous versions =
If you want to see the full changelog, visit the [changelog](https://www.robotstxt.software/plugins/robotstxt-smtp-amazonses/) page. If you want to see the full changelog, visit the [changelog](https://www.robotstxt.software/plugins/robotstxt-smtp-amazonses/) page.

View file

@ -4,7 +4,7 @@
* Plugin URI: https://www.robotstxt.software/plugins/robotstxt-smtp-amazonses/ * Plugin URI: https://www.robotstxt.software/plugins/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.
* Update URI: https://www.robotstxt.software/plugins/robotstxt-smtp-amazonses/ * Update URI: https://www.robotstxt.software/plugins/robotstxt-smtp-amazonses/
* Version: 2.1.8 * Version: 2.1.9
* Requires at least: 5.7 * Requires at least: 5.7
* Requires PHP: 8.2 * Requires PHP: 8.2
* Network: true * Network: true
@ -25,7 +25,7 @@ if ( ! defined( 'ABSPATH' ) ) {
} }
if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION' ) ) { if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION' ) ) {
define( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION', '2.1.8' ); define( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION', '2.1.9' );
} }
if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_FILE' ) ) { if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_FILE' ) ) {

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' => 'b9acd96e5f784f4f7d6c26807a76adc62b05d0de', 'reference' => '05fa9b5c18995167164bd84ddc0f0054bf324f89',
'type' => 'wordpress-plugin', 'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@ -112,7 +112,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' => 'b9acd96e5f784f4f7d6c26807a76adc62b05d0de', 'reference' => '05fa9b5c18995167164bd84ddc0f0054bf324f89',
'type' => 'wordpress-plugin', 'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),