- return attach_link($upfx, $ct, $p, $fn) if $@;
+ my $err = $@;
+ if ($err) {
+ if ($ct =~ m!\btext/plain\b!i) {
+ # Try to assume UTF-8 because Alpine seems to
+ # do wacky things and set charset=X-UNKNOWN
+ $part->charset_set('UTF-8');
+ $s = eval { $part->body_str };
+
+ # If forcing charset=UTF-8 failed,
+ # attach_link will warn further down...
+ $s = $part->body if $@;
+ } else {
+ return attach_link($upfx, $ct, $p, $fn);
+ }
+ }