Skip to content

Error Serialization of 'Generator' is not allowed #38430

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
gilbertsoft opened this issue Oct 6, 2020 · 0 comments
Closed

Error Serialization of 'Generator' is not allowed #38430

gilbertsoft opened this issue Oct 6, 2020 · 0 comments

Comments

@gilbertsoft
Copy link
Contributor

We currently have an issue in the TYPO3 Core with our own implementation of the FileSpool inspired by Swift Mailer.

After a short investigation yesterday I have discovered the issue is coming from the serialization of the Symfony\Component\MailerSentMessage where the error Serialization of 'Generator' is not allowed is thrown. The problem here is the $raw property which is a generator see

$this->raw = new RawMessage($message->toIterable());

Afterwards if the method __serialize() of Symfony\Component\Mime\RawMessage gets called the generator is returned in the array instead of an array see

public function __serialize(): array
{
return [$this->message];
}

I changed that part during the debugging and for our use case that seems to work fine:

    public function __serialize(): array
    {
        return [$this->toString()];
    }

I'm not fully aware of the impact here but I guess this could be a solution in general.

@fabpot fabpot closed this as completed Oct 6, 2020
fabpot added a commit that referenced this issue Oct 6, 2020
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Mime] Fix serialization of RawMessage

| Q             | A
| ------------- | ---
| Branch?       | 4.4 <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix #38430, Related #33394 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | - <!-- required for new features -->

The serialization of RawMessage is currently broken if using a generator for message like done by `Symfony\Component\Mailer\SentMessage` see https://github.com/symfony/symfony/blob/5f1c3a797247a6d54992384df00bb22741fc1c34/src/Symfony/Component/Mailer/SentMessage.php#L45
This patch converts the message to a string so further serialization can be done.

This patch probably also solves #33394.

<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch 5.x.
-->

Commits
-------

fd99eb2 [Mime] Fix serialization of RawMessage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants