-
Notifications
You must be signed in to change notification settings - Fork 684
Description
Description
One of those kinda breaking changes again. I know this is actually a feature request but I consider it as a bug because it causes errors and exceptions and breaks the current workflow in our application.
In one of your updates you enabled enableIdn for Yii2 E-Mail validator.
Now E-Mails like
äöêèé#####@äöêèéß.de
are totally fine. Unfortunately Swiftmailer throws an exception when trying to send an E-Mail to this address.
We could easily add a custom email validation via event on top of yours but that feels like a strange work-around.
It would be much better if you could opt-out via setting if you really want to allow emails with special characters.
Steps to reproduce
- Create a user with an E-Mail like "äöêèé#####@äöêèé.de"
- Save the user with "send confirmation mail"
- See the user is saved but an exception is thrown because the E-Mail is not valid for Swift, the user cannot reset their password as well.
Additional info
- Craft version: 3.6.14
I guess it's due to this issue #7103 but it worked correctly before (validator fails because it's no valid E-Mail)
$email = 'äöêèé#####@äöêèé.de';
$validator = new \yii\validators\EmailValidator();
if ($validator->validate($email, $error)) {
echo 'Email is valid.';
} else {
echo $error;
}prints is not a valid email address which is totally correct. Doing the same with a User won't trigger the validator but the Exception
[87.139.0.246][1071821][e0iksd8t8iu0lg64v3fdu7oujo][error][Swift_AddressEncoderException]
Swift_AddressEncoderException: Non-ASCII characters not supported in local-part in
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/AddressEncoder/IdnAddressEncoder.php:40
Stack trace:
#0
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(334):
Swift_AddressEncoder_IdnAddressEncoder->encodeString('g\xC3\xBCnter.haupt@m...')
#1
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(303):
Swift_Mime_Headers_MailboxHeader->createNameAddressStrings(Array)
#2
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(246):
Swift_Mime_Headers_MailboxHeader->createMailboxListString(Array)
#3
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php(309):
Swift_Mime_Headers_MailboxHeader->getFieldBody()
#4
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(476):
Swift_Mime_SimpleHeaderSet->toString()
#5
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php(576):
Swift_Mime_SimpleMimeEntity->toString()
#6
/home/myspambr/www.myspa.me/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Message.php(142):
Swift_Mime_SimpleMessage->toString()
#7
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2-swiftmailer/src/Message.php(428):
Swift_Message->toString()
#8
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2-debug/src/panels/MailPanel.php(89):
yii\swiftmailer\Message->toString()
#9 [internal function]:
yii\debug\panels\MailPanel->yii\debug\panels\{closure}(Object(yii\mail\MailEvent))
#10
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2/base/Event.php(312):
call_user_func(Object(Closure), Object(yii\mail\MailEvent))
#11
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2/base/Component.php(637):
yii\base\Event::trigger('yii\\mail\\BaseMa...', 'afterSend',
Object(yii\mail\MailEvent))
#12
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2/mail/BaseMailer.php(396):
yii\base\Component->trigger('afterSend', Object(yii\mail\MailEvent))
#13
/home/myspambr/www.myspa.me/vendor/craftcms/cms/src/mail/Mailer.php(184):
yii\mail\BaseMailer->afterSend(Object(craft\mail\Message), false)
#14
/home/myspambr/www.myspa.me/vendor/yiisoft/yii2/mail/BaseMessage.php(49):
craft\mail\Mailer->send(Object(craft\mail\Message))
#15
/home/myspambr/www.myspa.me/vendor/craftcms/cms/src/services/Users.php(351):
yii\mail\BaseMessage->send()
#16
/home/myspambr/www.myspa.me/modules/api/v1/controllers/UserController.php(1122):
craft\services\Users->sendActivationEmail(Object(craft\elements\User))
#17 [internal function]: