codeigniter4 / CodeIgniter4

Open Source PHP Framework (originally from EllisLab)
https://codeigniter.com/
MIT License
5.38k stars 1.9k forks source link

Bug: Truncated email subject when contains accented characters #9122

Open bereldhuin opened 3 months ago

bereldhuin commented 3 months ago

PHP Version

8.3

CodeIgniter4 Version

4.5.4

CodeIgniter4 Installation Method

Composer (using codeigniter4/appstarter)

Which operating systems have you tested for this bug?

Linux

Which server did you use?

cli

Database

No response

What happened?

Setting an email with accented characters in subject (eg : french accent : éàè...) removes n characters at the end of the subjet (n = number of accented chars).

This does not occur in the body.

Steps to Reproduce

Send an email with accented char in the subject :

 $email = service('email');

$email->setFrom('toto@gmail.com', 'Fred');
$email->setTo('titi@gmail.com');

$email->setSubject('Email éé Test');
$email->setMessage('Testing the email class.');

$email->send();

Expected Output

Should send and email with the following subjet : Email éé Test

But instead sends :

Email éé Te (missing 2 last chars)

Anything else?

Using php 8.3.9 under Alpine 1.20 docker container, and Gmail as SMTP.

kenjis commented 2 months ago

Thank you for reporting.

But I cannot reproduce. The following test passes.

    public function testEmailSubjectWithAccentedCharacters(): void
    {
        $config = config('Email');
        $email  = new MockEmail($config);

        $email->setTo('foo@foo.com');
        $email->setFrom('bar@foo.com');
        $email->setSubject('Email éé Test');

        $this->assertTrue($email->send());
        $this->assertSame('Email éé Test', $email->archive['subject']);
    }
visserrobin commented 2 months ago

Tested with a live version of Codeigniter 4.5.2. No characters are truncated. Could it be a characterset issue in the Email config? I also tested iso-8859-1 and Windows1252. Windows-1252 produces gibberish but doesn't truncate the subject line.