diff -Nru libemail-mime-perl-1.946/Changes libemail-mime-perl-1.949/Changes --- libemail-mime-perl-1.946/Changes 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/Changes 2020-05-24 14:25:39.000000000 +0000 @@ -1,5 +1,16 @@ Revision history for Perl extension Email::MIME. +1.949 2020-05-24 10:25:36-04:00 America/New_York + - no changes since trial release + +1.948 2020-05-09 14:57:17-04:00 America/New_York (TRIAL RELEASE) + - fixes to handling of content-type parameters (thanks, dlucredativ and + Pali Rohár) + +1.947 2020-05-09 14:30:06-04:00 America/New_York (TRIAL RELEASE) + - add $Email::MIME::MAX_DEPTH and refuse to parse deeper than that many + parts; current default: 10 + 1.946 2017-08-31 09:29:41-04:00 America/New_York - propagate encode_check to subparts (thanks, Michael McClimon) - use the new parse_content_disposition function in @@ -255,5 +266,5 @@ Test fix from Richard Clamp 0.01 Thu Apr 10 13:38:09 2003 - original version; created by h2xs 1.2 with options -AX -n Email::MIME + original version; created by h2xs 1.2 with options -AX -n Email::MIME diff -Nru libemail-mime-perl-1.946/debian/changelog libemail-mime-perl-1.949/debian/changelog --- libemail-mime-perl-1.946/debian/changelog 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/changelog 2020-11-07 17:28:50.000000000 +0000 @@ -1,3 +1,43 @@ +libemail-mime-perl (1.949-1) unstable; urgency=medium + + * Team upload + + [ Damyan Ivanov ] + * declare conformance with Policy 4.1.3 (no changes needed) + + [ Salvatore Bonaccorso ] + * Update Vcs-* headers for switch to salsa.debian.org + + [ gregor herrmann ] + * debian/copyright: replace tabs with spaces / remove trailing + whitespace. + * debian/watch: use uscan version 4. + + [ Debian Janitor ] + * Bump debhelper from old 9 to 12. + * Set debhelper-compat version in Build-Depends. + * Set upstream metadata fields: Bug-Submit. + * Remove obsolete fields Contact, Name from debian/upstream/metadata + (already present in machine-readable debian/copyright). + + [ Salvatore Bonaccorso ] + * Allow "0" as boundary value (Closes: #944887) + + [ Joenio Marques da Costa ] + * Import upstream version 1.949 + * Set Rules-Requires-Root: no + * d/control: depends on libemail-mime-contenttype-perl => 1.023 + * d/control: remove version from libemail-mime-encodings-perl + * Allow-0-as-boundary-value patch accepted on upstream + * declare compliance with Debian Policy 4.5.0 + * update debhelper compat to 13 + * Add myself to d/copyright + + [ gregor herrmann ] + * Annotate test-only build dependencies with . + + -- Joenio Marques da Costa Sat, 07 Nov 2020 18:28:50 +0100 + libemail-mime-perl (1.946-1) unstable; urgency=medium [ gregor herrmann ] diff -Nru libemail-mime-perl-1.946/debian/compat libemail-mime-perl-1.949/debian/compat --- libemail-mime-perl-1.946/debian/compat 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -9 diff -Nru libemail-mime-perl-1.946/debian/control libemail-mime-perl-1.949/debian/control --- libemail-mime-perl-1.946/debian/control 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/control 2020-11-07 17:28:50.000000000 +0000 @@ -7,19 +7,20 @@ Section: perl Testsuite: autopkgtest-pkg-perl Priority: optional -Build-Depends: debhelper (>= 9) -Build-Depends-Indep: perl, - libemail-address-xs-perl, - libemail-messageid-perl, - libemail-mime-contenttype-perl (>= 1.022), - libemail-mime-encodings-perl (>= 1.314), - libemail-simple-perl (>= 2.212), - libmime-types-perl, - libmodule-runtime-perl -Standards-Version: 4.1.1 -Vcs-Browser: https://anonscm.debian.org/cgit/pkg-perl/packages/libemail-mime-perl.git -Vcs-Git: https://anonscm.debian.org/git/pkg-perl/packages/libemail-mime-perl.git +Build-Depends: debhelper-compat (= 13) +Build-Depends-Indep: libemail-address-xs-perl , + libemail-messageid-perl , + libemail-mime-contenttype-perl (>= 1.023) , + libemail-mime-encodings-perl , + libemail-simple-perl (>= 2.212) , + libmime-types-perl , + libmodule-runtime-perl , + perl +Standards-Version: 4.5.0 +Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libemail-mime-perl +Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libemail-mime-perl.git Homepage: https://metacpan.org/release/Email-MIME +Rules-Requires-Root: no Package: libemail-mime-perl Architecture: all @@ -27,9 +28,9 @@ ${perl:Depends}, libemail-address-xs-perl, libemail-messageid-perl, + libemail-mime-contenttype-perl (>= 1.023), + libemail-mime-encodings-perl, libemail-simple-perl (>= 2.212), - libemail-mime-contenttype-perl (>= 1.022), - libemail-mime-encodings-perl (>= 1.314), libmime-types-perl, libmodule-runtime-perl Provides: libemail-mime-creator-perl, diff -Nru libemail-mime-perl-1.946/debian/copyright libemail-mime-perl-1.949/debian/copyright --- libemail-mime-perl-1.946/debian/copyright 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/copyright 2020-11-07 17:28:50.000000000 +0000 @@ -16,6 +16,7 @@ 2009, Brian Cassidy 2009-2011, Jonathan Yu 2013-2017, gregor herrmann + 2020, Joenio Marques da Costa License: Artistic or GPL-1+ License: Artistic @@ -27,7 +28,7 @@ License: GPL-1+ This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by + it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. . diff -Nru libemail-mime-perl-1.946/debian/upstream/metadata libemail-mime-perl-1.949/debian/upstream/metadata --- libemail-mime-perl-1.946/debian/upstream/metadata 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/upstream/metadata 2020-11-07 17:28:50.000000000 +0000 @@ -1,8 +1,6 @@ --- Archive: CPAN Bug-Database: https://github.com/rjbs/Email-MIME/issues -Contact: Ricardo SIGNES , Casey West , Simon Cozens - -Name: Email-MIME +Bug-Submit: https://github.com/rjbs/Email-MIME/issues/new Repository: https://github.com/rjbs/Email-MIME.git Repository-Browse: https://github.com/rjbs/Email-MIME diff -Nru libemail-mime-perl-1.946/debian/watch libemail-mime-perl-1.949/debian/watch --- libemail-mime-perl-1.946/debian/watch 2017-11-21 19:01:13.000000000 +0000 +++ libemail-mime-perl-1.949/debian/watch 2020-11-07 17:28:50.000000000 +0000 @@ -1,2 +1,2 @@ -version=3 -https://metacpan.org/release/Email-MIME .*/Email-MIME-v?(\d[\d.]+)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip) +version=4 +https://metacpan.org/release/Email-MIME .*/Email-MIME-v?@ANY_VERSION@@ARCHIVE_EXT@$ diff -Nru libemail-mime-perl-1.946/lib/Email/MIME/Creator.pm libemail-mime-perl-1.949/lib/Email/MIME/Creator.pm --- libemail-mime-perl-1.946/lib/Email/MIME/Creator.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME/Creator.pm 2020-05-24 14:25:39.000000000 +0000 @@ -3,7 +3,7 @@ use warnings; package Email::MIME::Creator; # ABSTRACT: obsolete do-nothing library -$Email::MIME::Creator::VERSION = '1.946'; +$Email::MIME::Creator::VERSION = '1.949'; use parent q[Email::Simple::Creator]; use Email::MIME; use Encode (); @@ -44,7 +44,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 SYNOPSIS diff -Nru libemail-mime-perl-1.946/lib/Email/MIME/Encode.pm libemail-mime-perl-1.949/lib/Email/MIME/Encode.pm --- libemail-mime-perl-1.946/lib/Email/MIME/Encode.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME/Encode.pm 2020-05-24 14:25:39.000000000 +0000 @@ -2,9 +2,10 @@ use warnings; package Email::MIME::Encode; # ABSTRACT: a private helper for MIME header encoding -$Email::MIME::Encode::VERSION = '1.946'; +$Email::MIME::Encode::VERSION = '1.949'; use Carp (); use Encode (); +use Email::MIME::Header; use MIME::Base64(); use Module::Runtime (); use Scalar::Util; @@ -179,7 +180,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 AUTHORS diff -Nru libemail-mime-perl-1.946/lib/Email/MIME/Header/AddressList.pm libemail-mime-perl-1.949/lib/Email/MIME/Header/AddressList.pm --- libemail-mime-perl-1.946/lib/Email/MIME/Header/AddressList.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME/Header/AddressList.pm 2020-05-24 14:25:39.000000000 +0000 @@ -1,7 +1,7 @@ # Copyright (c) 2016-2017 by Pali package Email::MIME::Header::AddressList; -$Email::MIME::Header::AddressList::VERSION = '1.946'; +$Email::MIME::Header::AddressList::VERSION = '1.949'; use strict; use warnings; @@ -335,7 +335,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 SYNOPSIS diff -Nru libemail-mime-perl-1.946/lib/Email/MIME/Header.pm libemail-mime-perl-1.949/lib/Email/MIME/Header.pm --- libemail-mime-perl-1.946/lib/Email/MIME/Header.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME/Header.pm 2020-05-24 14:25:39.000000000 +0000 @@ -2,7 +2,7 @@ use warnings; package Email::MIME::Header; # ABSTRACT: the header of a MIME message -$Email::MIME::Header::VERSION = '1.946'; +$Email::MIME::Header::VERSION = '1.949'; use parent 'Email::Simple::Header'; use Carp (); @@ -14,7 +14,7 @@ our %header_to_class_map; -{ +BEGIN { my @address_list_headers = qw(from sender reply-to to cc bcc); push @address_list_headers, map { "resent-$_" } @address_list_headers; push @address_list_headers, map { "downgraded-$_" } @address_list_headers; # RFC 5504 @@ -75,7 +75,7 @@ Email::MIME::Encode::maybe_mime_encode_header($name, $_, 'UTF-8') } @vals; - $self->header_set($name => @values); + $self->header_raw_set($name => @values); } sub header_str_pairs { @@ -143,7 +143,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 DESCRIPTION diff -Nru libemail-mime-perl-1.946/lib/Email/MIME/Modifier.pm libemail-mime-perl-1.949/lib/Email/MIME/Modifier.pm --- libemail-mime-perl-1.946/lib/Email/MIME/Modifier.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME/Modifier.pm 2020-05-24 14:25:39.000000000 +0000 @@ -2,7 +2,7 @@ use warnings; package Email::MIME::Modifier; # ABSTRACT: obsolete do-nothing library -$Email::MIME::Modifier::VERSION = '1.946'; +$Email::MIME::Modifier::VERSION = '1.949'; 1; __END__ @@ -17,7 +17,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 AUTHORS diff -Nru libemail-mime-perl-1.946/lib/Email/MIME.pm libemail-mime-perl-1.949/lib/Email/MIME.pm --- libemail-mime-perl-1.946/lib/Email/MIME.pm 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/lib/Email/MIME.pm 2020-05-24 14:25:39.000000000 +0000 @@ -3,14 +3,14 @@ use warnings; package Email::MIME; # ABSTRACT: easy MIME message handling -$Email::MIME::VERSION = '1.946'; +$Email::MIME::VERSION = '1.949'; use Email::Simple 2.212; # nth header value use parent qw(Email::Simple); use Carp (); use Email::MessageID; use Email::MIME::Creator; -use Email::MIME::ContentType 1.022; # parse_content_disposition +use Email::MIME::ContentType 1.023; # build_content_type use Email::MIME::Encode; use Email::MIME::Encodings 1.314; use Email::MIME::Header; @@ -134,7 +134,7 @@ my $self = shift->SUPER::new($text, $arg, @rest); $self->encode_check_set($encode_check); - $self->{ct} = parse_content_type($self->content_type); + $self->{ct} = parse_content_type($self->content_type_raw); $self->parts; return $self; } @@ -174,7 +174,7 @@ #pod #pod C is a hash of MIME attributes to assign to the part, and may #pod override portions of the header set in the C
parameter. The hash keys -#pod correspond directly to methods or modifying a message from +#pod correspond directly to methods for modifying a message from #pod C. The allowed keys are: content_type, charset, name, #pod format, boundary, encoding, disposition, and filename. They will be mapped to #pod C<"$attr\_set"> for message modification. @@ -255,7 +255,7 @@ my $email = $class->new($header, \%pass_on); - for my $key (keys %attrs) { + for my $key (sort keys %attrs) { $email->content_type_attribute_set($key => $attrs{$key}); } @@ -377,17 +377,25 @@ return $str; } +our $MAX_DEPTH = 10; + sub parts_multipart { my $self = shift; my $boundary = $self->{ct}->{attributes}->{boundary}; + our $DEPTH ||= 0; + + Carp::croak("attempted to parse a MIME message more than $MAX_DEPTH deep") + if $MAX_DEPTH && $DEPTH > $MAX_DEPTH; + # Take a message, join all its lines together. Now try to Email::MIME->new # it with 1.861 or earlier. Death! It tries to recurse endlessly on the # body, because every time it splits on boundary it gets itself. Obviously # that means it's a bogus message, but a mangled result (or exception) is # better than endless recursion. -- rjbs, 2008-01-07 return $self->parts_single_part - unless $boundary and $self->body_raw =~ /^--\Q$boundary\E\s*$/sm; + unless defined $boundary and length $boundary and + $self->body_raw =~ /^--\Q$boundary\E\s*$/sm; $self->{body_raw} = $self->SUPER::body; @@ -410,6 +418,7 @@ for my $bit (@bits) { $bit =~ s/\A[\n\r]+//smg; $bit =~ s/(?{mycrlf}\Z//sm; + local $DEPTH = $DEPTH + 1; my $email = (ref $self)->new($bit, { encode_check => $self->encode_check }); push @parts, $email; } @@ -422,6 +431,7 @@ sub force_decode_hook { 0 } sub decode_hook { return $_[1] } sub content_type { scalar shift->header("Content-type"); } +sub content_type_raw { scalar shift->header_raw("Content-type"); } sub debug_structure { my ($self, $level) = @_; @@ -541,7 +551,7 @@ my ($self, $value) = @_; my $ct_header = parse_content_type($self->header('Content-Type')); - if ($value) { + if (defined $value and length $value) { $ct_header->{attributes}->{boundary} = $value; } else { delete $ct_header->{attributes}->{boundary}; @@ -727,20 +737,14 @@ sub filename_set { my ($self, $filename) = @_; my $dis_header = $self->header('Content-Disposition'); - my ($disposition, $attrs); + my ($disposition, $attrs) = ('inline', {}); if ($dis_header) { my $struct = parse_content_disposition($dis_header); $disposition = $struct->{type}; $attrs = $struct->{attributes}; } $filename ? $attrs->{filename} = $filename : delete $attrs->{filename}; - $disposition ||= 'inline'; - - my $dis = $disposition; - while (my ($attr, $val) = each %{$attrs}) { - $dis .= qq[; $attr="$val"]; - } - + my $dis = build_content_disposition({type => $disposition, attributes => $attrs}); $self->header_raw_set('Content-Disposition' => $dis); } @@ -764,7 +768,8 @@ if (@{$parts} > 1 or $ct_header->{type} eq 'multipart') { # setup multipart - $ct_header->{attributes}->{boundary} ||= Email::MessageID->new->user; + $ct_header->{attributes}->{boundary} = Email::MessageID->new->user + unless defined $ct_header->{attributes}->{boundary} and length $ct_header->{attributes}->{boundary}; my $bound = $ct_header->{attributes}->{boundary}; foreach my $part (@{$parts}) { $body .= "$self->{mycrlf}--$bound$self->{mycrlf}"; @@ -787,7 +792,11 @@ my $from_ct = parse_content_type($parts->[0]->header('Content-Type')); @{$ct_header}{qw[type subtype]} = @{ $from_ct }{qw[type subtype]}; - $ct_header->{attributes}{charset} = $from_ct->{attributes}{charset}; + if (exists $from_ct->{attributes}{charset}) { + $ct_header->{attributes}{charset} = $from_ct->{attributes}{charset}; + } else { + delete $ct_header->{attributes}{charset}; + } $self->encoding_set($parts->[0]->header('Content-Transfer-Encoding')); delete $ct_header->{attributes}->{boundary}; @@ -881,11 +890,7 @@ sub _compose_content_type { my ($self, $ct_header) = @_; - my $ct = join q{/}, @{$ct_header}{qw[type subtype]}; - for my $attr (sort keys %{ $ct_header->{attributes} }) { - next unless defined (my $value = $ct_header->{attributes}{$attr}); - $ct .= qq[; $attr="$value"]; - } + my $ct = build_content_type({type => $ct_header->{type}, subtype => $ct_header->{subtype}, attributes => $ct_header->{attributes}}); $self->header_raw_set('Content-Type' => $ct); $self->{ct} = $ct_header; } @@ -935,7 +940,7 @@ =head1 VERSION -version 1.946 +version 1.949 =head1 SYNOPSIS @@ -1067,7 +1072,7 @@ C is a hash of MIME attributes to assign to the part, and may override portions of the header set in the C
parameter. The hash keys -correspond directly to methods or modifying a message from +correspond directly to methods for modifying a message from C. The allowed keys are: content_type, charset, name, format, boundary, encoding, disposition, and filename. They will be mapped to C<"$attr\_set"> for message modification. @@ -1333,6 +1338,12 @@ + text/plain + text/html +=head1 CONFIGURATION + +The variable C<$Email::MIME::MAX_DEPTH> is the maximum depth of parts that will +be processed. It defaults to 10, already higher than legitimate mail is ever +likely to be. This value may go up over time as the parser is improved. + =head1 TODO All of the Email::MIME-specific guts should move to a single entry on the @@ -1368,7 +1379,7 @@ =head1 CONTRIBUTORS -=for stopwords Alex Vandiver Arthur Axel 'fREW' Schmidt Brian Cassidy Dan Book David Steinbrunner Dotan Dimet Geraint Edwards Jesse Luehrs Kurt Anderson Lance A. Brown Matthew Horsfall (alh) memememomo Michael McClimon Pali Shawn Sorichetti Tomohiro Hosaka +=for stopwords Alex Vandiver Anirvan Chatterjee Arthur Axel 'fREW' Schmidt Brian Cassidy Damian Lukowski Dan Book David Steinbrunner Dotan Dimet dxdc Eric Wong Geraint Edwards Jesse Luehrs Kurt Anderson Lance A. Brown Matthew Horsfall (alh) memememomo Michael McClimon Pali Ricardo Signes Shawn Sorichetti Tomohiro Hosaka =over 4 @@ -1378,6 +1389,10 @@ =item * +Anirvan Chatterjee + +=item * + Arthur Axel 'fREW' Schmidt =item * @@ -1386,6 +1401,10 @@ =item * +Damian Lukowski + +=item * + Dan Book =item * @@ -1398,6 +1417,14 @@ =item * +dxdc + +=item * + +Eric Wong + +=item * + Geraint Edwards =item * @@ -1430,6 +1457,10 @@ =item * +Ricardo Signes + +=item * + Shawn Sorichetti =item * @@ -1569,6 +1600,12 @@ #pod + text/plain #pod + text/html #pod +#pod =head1 CONFIGURATION +#pod +#pod The variable C<$Email::MIME::MAX_DEPTH> is the maximum depth of parts that will +#pod be processed. It defaults to 10, already higher than legitimate mail is ever +#pod likely to be. This value may go up over time as the parser is improved. +#pod #pod =head1 TODO #pod #pod All of the Email::MIME-specific guts should move to a single entry on the diff -Nru libemail-mime-perl-1.946/Makefile.PL libemail-mime-perl-1.949/Makefile.PL --- libemail-mime-perl-1.946/Makefile.PL 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/Makefile.PL 2020-05-24 14:25:39.000000000 +0000 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.010. +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.014. use strict; use warnings; @@ -19,7 +19,7 @@ "PREREQ_PM" => { "Carp" => 0, "Email::Address::XS" => 0, - "Email::MIME::ContentType" => "1.022", + "Email::MIME::ContentType" => "1.023", "Email::MIME::Encodings" => "1.314", "Email::MessageID" => 0, "Email::Simple" => "2.212", @@ -41,7 +41,7 @@ "Test::More" => "0.96", "utf8" => 0 }, - "VERSION" => "1.946", + "VERSION" => "1.949", "test" => { "TESTS" => "t/*.t" } @@ -51,7 +51,7 @@ my %FallbackPrereqs = ( "Carp" => 0, "Email::Address::XS" => 0, - "Email::MIME::ContentType" => "1.022", + "Email::MIME::ContentType" => "1.023", "Email::MIME::Encodings" => "1.314", "Email::MessageID" => 0, "Email::Simple" => "2.212", diff -Nru libemail-mime-perl-1.946/MANIFEST libemail-mime-perl-1.949/MANIFEST --- libemail-mime-perl-1.946/MANIFEST 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/MANIFEST 2020-05-24 14:25:39.000000000 +0000 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.010. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.014. Changes LICENSE MANIFEST @@ -28,6 +28,7 @@ t/ct_attrs.t t/dispo.t t/disposition.t +t/email-mime-encode.t t/encode-check.t t/encoding.t t/files/readme.txt.gz @@ -42,3 +43,4 @@ t/walk-parts.t xt/author/pod-syntax.t xt/release/changes_has_content.t +xt/stupid-big.t diff -Nru libemail-mime-perl-1.946/META.json libemail-mime-perl-1.949/META.json --- libemail-mime-perl-1.946/META.json 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/META.json 2020-05-24 14:25:39.000000000 +0000 @@ -6,7 +6,7 @@ "Simon Cozens " ], "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150005", + "generated_by" : "Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], @@ -31,7 +31,7 @@ "requires" : { "Carp" : "0", "Email::Address::XS" : "0", - "Email::MIME::ContentType" : "1.022", + "Email::MIME::ContentType" : "1.023", "Email::MIME::Encodings" : "1.314", "Email::MessageID" : "0", "Email::Simple" : "2.212", @@ -73,10 +73,10 @@ "web" : "https://github.com/rjbs/Email-MIME" } }, - "version" : "1.946", + "version" : "1.949", "x_Dist_Zilla" : { "perl" : { - "version" : "5.024000" + "version" : "5.030002" }, "plugins" : [ { @@ -96,7 +96,7 @@ } }, "name" : "@RJBS/Git::GatherDir", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", @@ -123,7 +123,7 @@ } }, "name" : "@RJBS/RJBS-Outdated", - "version" : "0.054" + "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", @@ -138,62 +138,62 @@ } }, "name" : "@RJBS/CPAN-Outdated", - "version" : "0.054" + "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", @@ -203,58 +203,58 @@ } }, "name" : "@RJBS/MakeMaker", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "config" : { "Dist::Zilla::Plugin::Git::NextVersion" : { "first_version" : "0.001", - "version_by_branch" : 1, + "version_by_branch" : 0, "version_regexp" : "(?^:^([0-9]+\\.[0-9]+)$)" }, "Dist::Zilla::Role::Git::Repo" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "repo_root" : "." } }, "name" : "@RJBS/Git::NextVersion", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", - "version" : "0.010" + "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", @@ -270,7 +270,7 @@ } }, "name" : "@RJBS/TestMoreWithSubtests", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", @@ -388,7 +388,7 @@ { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", - "version" : "0.54" + "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::Git::Check", @@ -405,19 +405,19 @@ "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "repo_root" : "." } }, "name" : "@RJBS/@Git/Check", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], - "commit_msg" : "v%v%n%n%c" + "commit_msg" : "v%V%n%n%c" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ @@ -428,7 +428,7 @@ "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { @@ -436,7 +436,7 @@ } }, "name" : "@RJBS/@Git/Commit", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", @@ -445,12 +445,12 @@ "branch" : null, "changelog" : "Changes", "signed" : 0, - "tag" : "1.946", + "tag" : "1.949", "tag_format" : "%v", - "tag_message" : "v%v" + "tag_message" : "v%V" }, "Dist::Zilla::Role::Git::Repo" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { @@ -458,31 +458,31 @@ } }, "name" : "@RJBS/@Git/Tag", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ - "rjbs :", + "origin :", "github :" ], "remotes_must_exist" : 0 }, "Dist::Zilla::Role::Git::Repo" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "repo_root" : "." } }, "name" : "@RJBS/@Git/Push", - "version" : "2.042" + "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { - "git_version" : "2.13.0", + "git_version" : "2.24.3 (Apple Git-128)", "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", @@ -490,7 +490,7 @@ } }, "name" : "@RJBS/Git::Contributors", - "version" : "0.030" + "version" : "0.035" }, { "class" : "Dist::Zilla::Plugin::Prereqs", @@ -501,79 +501,83 @@ } }, "name" : "Prereqs", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::Encoding", "name" : "Encoding", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", - "version" : "6.010" + "version" : "6.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", - "version" : "6.010" + "version" : "6.014" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { - "is_trial" : "0" + "is_trial" : 0 }, - "version" : "6.010" + "version" : "6.014" } }, "x_contributors" : [ "Alex Vandiver ", + "Anirvan Chatterjee ", "Arthur Axel 'fREW' Schmidt ", "Brian Cassidy ", + "Damian Lukowski ", "Dan Book ", "David Steinbrunner ", "Dotan Dimet ", + "dxdc ", + "Eric Wong ", "Geraint Edwards ", "Jesse Luehrs ", "Kurt Anderson ", @@ -582,9 +586,12 @@ "memememomo ", "Michael McClimon ", "Pali ", + "Ricardo Signes ", "Shawn Sorichetti ", "Tomohiro Hosaka " ], - "x_serialization_backend" : "Cpanel::JSON::XS version 3.0237" + "x_generated_by_perl" : "v5.30.2", + "x_serialization_backend" : "Cpanel::JSON::XS version 4.19", + "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" } diff -Nru libemail-mime-perl-1.946/META.yml libemail-mime-perl-1.949/META.yml --- libemail-mime-perl-1.946/META.yml 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/META.yml 2020-05-24 14:25:39.000000000 +0000 @@ -13,7 +13,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 -generated_by: 'Dist::Zilla version 6.010, CPAN::Meta::Converter version 2.150005' +generated_by: 'Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -22,7 +22,7 @@ requires: Carp: '0' Email::Address::XS: '0' - Email::MIME::ContentType: '1.022' + Email::MIME::ContentType: '1.023' Email::MIME::Encodings: '1.314' Email::MessageID: '0' Email::Simple: '2.212' @@ -41,10 +41,10 @@ bugtracker: https://github.com/rjbs/Email-MIME/issues homepage: https://github.com/rjbs/Email-MIME repository: https://github.com/rjbs/Email-MIME.git -version: '1.946' +version: '1.949' x_Dist_Zilla: perl: - version: '5.024000' + version: '5.030002' plugins: - class: Dist::Zilla::Plugin::Git::GatherDir @@ -60,7 +60,7 @@ Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@RJBS/Git::GatherDir' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' @@ -81,7 +81,7 @@ run_under_travis: 0 skip: [] name: '@RJBS/RJBS-Outdated' - version: '0.054' + version: '0.057' - class: Dist::Zilla::Plugin::PromptIfStale config: @@ -93,98 +93,98 @@ run_under_travis: 0 skip: [] name: '@RJBS/CPAN-Outdated' - version: '0.054' + version: '0.057' - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@RJBS/MakeMaker' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Git::NextVersion config: Dist::Zilla::Plugin::Git::NextVersion: first_version: '0.001' - version_by_branch: 1 + version_by_branch: 0 version_regexp: (?^:^([0-9]+\.[0-9]+)$) Dist::Zilla::Role::Git::Repo: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' repo_root: . name: '@RJBS/Git::NextVersion' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' - version: '0.010' + version: '0.011' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@RJBS/Test::ReportPrereqs' @@ -196,7 +196,7 @@ phase: test type: requires name: '@RJBS/TestMoreWithSubtests' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::PodWeaver config: @@ -288,7 +288,7 @@ - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' - version: '0.54' + version: '0.58' - class: Dist::Zilla::Plugin::Git::Check config: @@ -301,16 +301,16 @@ allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' repo_root: . name: '@RJBS/@Git/Check' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] - commit_msg: v%v%n%n%c + commit_msg: v%V%n%n%c Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes @@ -318,12 +318,12 @@ allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Commit' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::Git::Tag config: @@ -331,40 +331,40 @@ branch: ~ changelog: Changes signed: 0 - tag: '1.946' + tag: '1.949' tag_format: '%v' - tag_message: v%v + tag_message: v%V Dist::Zilla::Role::Git::Repo: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Tag' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - - 'rjbs :' + - 'origin :' - 'github :' remotes_must_exist: 0 Dist::Zilla::Role::Git::Repo: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' repo_root: . name: '@RJBS/@Git/Push' - version: '2.042' + version: '2.046' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: - git_version: 2.13.0 + git_version: '2.24.3 (Apple Git-128)' include_authors: 0 include_releaser: 1 order_by: name paths: [] name: '@RJBS/Git::Contributors' - version: '0.030' + version: '0.035' - class: Dist::Zilla::Plugin::Prereqs config: @@ -372,63 +372,67 @@ phase: runtime type: requires name: Prereqs - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::Encoding name: Encoding - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' - version: '6.010' + version: '6.014' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' - version: '6.010' + version: '6.014' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' - version: '6.010' + version: '6.014' x_contributors: - 'Alex Vandiver ' + - 'Anirvan Chatterjee ' - "Arthur Axel 'fREW' Schmidt " - 'Brian Cassidy ' + - 'Damian Lukowski ' - 'Dan Book ' - 'David Steinbrunner ' - 'Dotan Dimet ' + - 'dxdc ' + - 'Eric Wong ' - 'Geraint Edwards ' - 'Jesse Luehrs ' - 'Kurt Anderson ' @@ -437,6 +441,9 @@ - 'memememomo ' - 'Michael McClimon ' - 'Pali ' + - 'Ricardo Signes ' - 'Shawn Sorichetti ' - 'Tomohiro Hosaka ' -x_serialization_backend: 'YAML::Tiny version 1.70' +x_generated_by_perl: v5.30.2 +x_serialization_backend: 'YAML::Tiny version 1.73' +x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' diff -Nru libemail-mime-perl-1.946/README libemail-mime-perl-1.949/README --- libemail-mime-perl-1.946/README 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/README 2020-05-24 14:25:39.000000000 +0000 @@ -1,7 +1,5 @@ - - This archive contains the distribution Email-MIME, -version 1.946: +version 1.949: easy MIME message handling @@ -11,5 +9,4 @@ the same terms as the Perl 5 programming language system itself. -This README file was generated by Dist::Zilla::Plugin::Readme v6.010. - +This README file was generated by Dist::Zilla::Plugin::Readme v6.014. diff -Nru libemail-mime-perl-1.946/t/00-report-prereqs.dd libemail-mime-perl-1.949/t/00-report-prereqs.dd --- libemail-mime-perl-1.946/t/00-report-prereqs.dd 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/00-report-prereqs.dd 2020-05-24 14:25:39.000000000 +0000 @@ -14,7 +14,7 @@ 'requires' => { 'Carp' => '0', 'Email::Address::XS' => '0', - 'Email::MIME::ContentType' => '1.022', + 'Email::MIME::ContentType' => '1.023', 'Email::MIME::Encodings' => '1.314', 'Email::MessageID' => '0', 'Email::Simple' => '2.212', diff -Nru libemail-mime-perl-1.946/t/body-ref.t libemail-mime-perl-1.949/t/body-ref.t --- libemail-mime-perl-1.946/t/body-ref.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/body-ref.t 2020-05-24 14:25:39.000000000 +0000 @@ -27,7 +27,7 @@ isnt(index($email->body, 'I LIKE PIE'), -1, "$prefix: target string"); - like($email->header('Content-Type'), qr/invented="xyzzy"/, "custom CT param"); + like($email->header('Content-Type'), qr/invented=(?:"xyzzy"|xyzzy)/, "custom CT param"); }; } diff -Nru libemail-mime-perl-1.946/t/ct_attrs.t libemail-mime-perl-1.949/t/ct_attrs.t --- libemail-mime-perl-1.946/t/ct_attrs.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/ct_attrs.t 2020-05-24 14:25:39.000000000 +0000 @@ -1,6 +1,7 @@ use strict; use warnings; -use Test::More tests => 12; +use utf8; +use Test::More tests => 16; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; @@ -63,8 +64,8 @@ }, }, 'ct with name worked' ); -is $email->header('Content-Type'), - 'text/plain; format="flowed"; name="foo.txt"', +like $email->header('Content-Type'), + qr'^text/plain; format=(?:"flowed"|flowed); name=(?:"foo\.txt"|foo\.txt)$', 'ct format is correct'; $email->boundary_set( 'marker' ); @@ -80,8 +81,8 @@ $email->content_type_attribute_set( 'Bananas' => 'true' ); -is $email->header('Content-Type'), - 'text/plain; bananas="true"; boundary="marker"; format="flowed"; name="foo.txt"', +like $email->header('Content-Type'), + qr'^text/plain; bananas=(?:"true"|true); boundary=(?:"marker"|marker); format=(?:"flowed"|flowed); name=(?:"foo\.txt"|foo\.txt)$', 'ct format is correct'; is_deeply( parse_content_type($email->header('Content-Type')), { @@ -94,3 +95,34 @@ }, }, 'ct with misc. attr (bananas) worked' ); +$email->name_set( 'hah"ha"\'ha\\' ); + +is_deeply( parse_content_type($email->header('Content-Type')), { + ct(qw(text plain)), + attributes => { + bananas => 'true', + boundary => 'marker', + format => 'flowed', + name => 'hah"ha"\'ha\\', + }, +}, 'ct with quotes in name worked' ); + +like $email->header('Content-Type'), + qr'^text/plain; bananas=(?:"true"|true); boundary=(?:"marker"|marker); format=(?:"flowed"|flowed); name="hah\\"ha\\"\'ha\\\\"$', + 'ct format is correct'; + +$email->name_set( 'kůň.pdf' ); + +is_deeply( parse_content_type($email->header('Content-Type')), { + ct(qw(text plain)), + attributes => { + bananas => 'true', + boundary => 'marker', + format => 'flowed', + name => 'kůň.pdf', + }, +}, 'ct with unicode name worked' ); + +like $email->header('Content-Type'), + qr'^text/plain; bananas=(?:"true"|true); boundary=(?:"marker"|marker); format=(?:"flowed"|flowed); name\*=UTF-8\'\'k%C5%AF%C5%88\.pdf; name=kun\.pdf$', + 'ct format is correct'; diff -Nru libemail-mime-perl-1.946/t/disposition.t libemail-mime-perl-1.949/t/disposition.t --- libemail-mime-perl-1.946/t/disposition.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/disposition.t 2020-05-24 14:25:39.000000000 +0000 @@ -1,6 +1,7 @@ use strict; use warnings; -use Test::More tests => 7; +use utf8; +use Test::More tests => 9; use_ok 'Email::MIME'; use_ok 'Email::MIME::Modifier'; @@ -20,13 +21,20 @@ $email->filename_set( 'loco.pdf' ); -is $email->header('Content-Disposition'), 'attachment; filename="loco.pdf"', 'filename_set worked'; +like $email->header('Content-Disposition'), qr'^attachment; filename=(?:"loco\.pdf"|loco\.pdf)$', 'filename_set worked'; $email->disposition_set('inline'); -is $email->header('Content-Disposition'), 'inline; filename="loco.pdf"', 're-reset worked'; +like $email->header('Content-Disposition'), qr'^inline; filename=(?:"loco\.pdf"|loco\.pdf)$', 're-reset worked'; $email->filename_set(undef); is $email->header('Content-Disposition'), 'inline', 'filename_set(undef) worked'; +$email->disposition_set('attachment'); + +$email->filename_set('hah"ha"\'ha\\'); +is $email->header('Content-Disposition'), q(attachment; filename="hah\\"ha\\"'ha\\\\"); + +$email->filename_set('kůň.pdf'); +is $email->header('Content-Disposition'), q(attachment; filename*=UTF-8''k%C5%AF%C5%88.pdf; filename=kun.pdf); diff -Nru libemail-mime-perl-1.946/t/email-mime-encode.t libemail-mime-perl-1.949/t/email-mime-encode.t --- libemail-mime-perl-1.946/t/email-mime-encode.t 1970-01-01 00:00:00.000000000 +0000 +++ libemail-mime-perl-1.949/t/email-mime-encode.t 2020-05-24 14:25:39.000000000 +0000 @@ -0,0 +1,19 @@ +use strict; +use warnings; +use utf8; +use Test::More; + +BEGIN { + plan skip_all => 'Email::Address::XS is required for this test' unless eval { require Email::Address::XS }; + plan 'no_plan'; +} + +BEGIN { + use_ok('Email::MIME::Encode'); +} + +is( + Email::MIME::Encode::maybe_mime_encode_header('To', '"Name ☺" '), + '=?UTF-8?B?TmFtZSDimLo=?= ', + 'Email::MIME::Encode::maybe_mime_encode_header works without "use Email::MIME::Header"' +); diff -Nru libemail-mime-perl-1.946/t/encode-check.t libemail-mime-perl-1.949/t/encode-check.t --- libemail-mime-perl-1.946/t/encode-check.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/encode-check.t 2020-05-24 14:25:39.000000000 +0000 @@ -36,7 +36,7 @@ my $email = Email::MIME->create( parts => [ q[Totally ascii first part], - q[Look, a snowman: ☃], + qq[Look, a snowman: \x{E2}\x{98}\x{83}], ], encode_check => Encode::FB_DEFAULT, ); diff -Nru libemail-mime-perl-1.946/t/multipart.t libemail-mime-perl-1.949/t/multipart.t --- libemail-mime-perl-1.946/t/multipart.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/t/multipart.t 2020-05-24 14:25:39.000000000 +0000 @@ -67,15 +67,15 @@ { my $email = Email::MIME->new(<<'END'); Subject: hello -Content-Type: multipart/mixed; boundary="bananas" +Content-Type: multipart/mixed; boundary="0" Prelude ---bananas +--0 Content-Type: text/plain This is plain text. ---bananas-- +--0-- Postlude END @@ -83,6 +83,13 @@ like($email->as_string, qr/Prelude/, "prelude in string"); like($email->as_string, qr/Postlude/, "postlude in string"); + my @p; + $email->walk_parts(sub { + my $str = eval { $_[0]->body_str }; + push @p, $str if defined $str; + }); + is_deeply(\@p, ['This is plain text.']); + $email->parts_set([ $email->subparts ]); unlike($email->as_string, qr/Prelude/, "prelude in string"); diff -Nru libemail-mime-perl-1.946/xt/release/changes_has_content.t libemail-mime-perl-1.949/xt/release/changes_has_content.t --- libemail-mime-perl-1.946/xt/release/changes_has_content.t 2017-08-31 13:29:46.000000000 +0000 +++ libemail-mime-perl-1.949/xt/release/changes_has_content.t 2020-05-24 14:25:39.000000000 +0000 @@ -1,11 +1,10 @@ -#!perl - use Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; -my $newver = '1.946'; +my $newver = '1.949'; my $trial_token = '-TRIAL'; +my $encoding = 'UTF-8'; SKIP: { ok(-e $changes_file, "$changes_file file exists") @@ -16,8 +15,6 @@ done_testing; -# _get_changes copied and adapted from Dist::Zilla::Plugin::Git::Commit -# by Jerome Quelin sub _get_changes { my $newver = shift; @@ -25,6 +22,10 @@ # parse changelog to find commit message open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!"; my $changelog = join('', <$fh>); + if ($encoding) { + require Encode; + $changelog = Encode::decode($encoding, $changelog, Encode::FB_CROAK()); + } close $fh; my @content = diff -Nru libemail-mime-perl-1.946/xt/stupid-big.t libemail-mime-perl-1.949/xt/stupid-big.t --- libemail-mime-perl-1.946/xt/stupid-big.t 1970-01-01 00:00:00.000000000 +0000 +++ libemail-mime-perl-1.949/xt/stupid-big.t 2020-05-24 14:25:39.000000000 +0000 @@ -0,0 +1,58 @@ +#!perl +# vim:ft=perl +use strict; +use warnings; + +use Test::More; +use Email::MIME; + +plan skip_all => "This is more of a helper than a test."; + +sub very_deep_email_string { + my $depth = $_[0] || 250_000; + + my $str = q{}; + my $boundary_prefix = "a" x 77; + for my $i (1 .. $depth) { + my $boundary = sprintf "$boundary_prefix%08x", $i; + $str .= "Content-Type: multipart/mixed; boundary=$boundary\n"; + $str .= "\n"; + $str .= "--$boundary\n\n"; + } + + for my $i (reverse(1 .. $depth)) { + $str .= sprintf "--${boundary_prefix}%08x--\n\n", $i; + } + + return $str; +} + +sub very_attached_email_string { + my $parts = $_[0] || 250_000; + + my $str = q{}; + my $boundary_prefix = "a" x 77; + for my $i (1 .. $parts) { + my $boundary = sprintf "$boundary_prefix%08x", $i; + $str .= "Content-Type: text/plain; boundary=$boundary\n"; + $str .= "\n"; + $str .= "--$boundary\n\n"; + $str .= sprintf "--${boundary_prefix}%08x--\n\n", $i; + } + + return $str; +} + +print `ps -o rss -p $$`; + +my $VAES = very_attached_email_string; +warn length($VAES) / 1024; +my $email = Email::MIME->new($VAES); + +print `ps -o rss -p $$`; + +# local $Email::MIME::MAX_DEPTH = 2; + +$email = Email::MIME->new( very_deep_email_string() ); + +print `ps -o rss -p $$`;