-# /$INBOX/$MESSAGE_ID/raw
-sub emit_raw {
- my ($ctx) = @_;
- my $mid = $ctx->{mid};
- my $ibx = $ctx->{-inbox};
- $ctx->{base_url} = $ibx->base_url($ctx->{env});
- my ($mref, $more, $id, $prev, $next);
- if (my $over = $ibx->over) {
- my $smsg = $over->next_by_mid($mid, \$id, \$prev) or return;
- $mref = $ibx->msg_by_smsg($smsg) or return;
- $next = $over->next_by_mid($mid, \$id, \$prev);
- } else {
- $mref = $ibx->msg_by_mid($mid) or return;
- }
- my $hdr = Email::Simple->new($mref)->header_obj;
- $more = [ $ctx, $id, $prev, $next, $mref, $hdr ]; # for ->getline
- my $fn = subject_fn($hdr);
+sub async_eml { # for async_blob_cb
+ my ($ctx, $eml) = @_;
+ my $smsg = delete $ctx->{smsg};
+ # next message
+ $ctx->{smsg} = $ctx->{ibx}->over->next_by_mid(@{$ctx->{next_arg}});
+
+ $ctx->zmore(msg_hdr($ctx, $eml));
+ $ctx->write(msg_body($eml));
+}
+
+sub res_hdr ($$) {
+ my ($ctx, $subject) = @_;
+ my $fn = $subject // '';
+ $fn =~ s/^re:\s+//i;
+ $fn = to_filename($fn) // 'no-subject';