| Summary: | Binary attachment cannot be sent via C4::Letters::EnqueueLetter() | ||
|---|---|---|---|
| Product: | Koha | Reporter: | Petr Svoboda <svoboda> |
| Component: | Notices | Assignee: | Bugs List <koha-bugs> |
| Status: | NEW --- | QA Contact: | Testopia <testopia> |
| Severity: | new feature | ||
| Priority: | P5 - low | CC: | black23 |
| Version: | 21.11 | ||
| Hardware: | Macintosh | ||
| OS: | Mac OS | ||
| GIT URL: | Initiative type: | --- | |
| Sponsorship status: | --- | Comma delimited list of Sponsors: | |
| Crowdfunding goal: | 0 | Patch complexity: | --- |
| Documentation contact: | Documentation submission: | ||
| Text to go in the release notes: | Version(s) released in: | ||
| Circulation function: | |||
I use koha testing docker in Mac OS. This code does not send a valid e-mail binary attachment: $pdf_binary_content = ...; my @attachments = ( { filename => 'attachment.pdf', type => 'application/pdf', content => $pdf_binary_content, } ); my $message_id = C4::Letters::EnqueueLetter({ ... ... ... attachments => \@attachments, }); because in C4::Letters is in _add_attachments function attachment encoding: ... Encode::encode( "UTF-8", $attachment->{content} ) ... I can't encode a binary file... Possible solution (C4::Letters): sub _add_attachments { ... foreach my $attachment ( @$attachments ) { $message->attach( # ################################################################## # Original code: Encode::encode( "UTF-8", $attachment->{content} ), # New code: defined $attachment->{binary} ? $attachment->{content} : Encode::encode( "UTF-8", $attachment->{content} ), # ################################################################## content_type => $attachment->{type} || 'application/octet-stream', name => $attachment->{filename}, disposition => 'attachment', ); } ... } my @attachments = ( { ... binary => 1, } ); my $message_id = C4::Letters::EnqueueLetter({ ... ... ... attachments => \@attachments, });