-  print OUT qq|From: $self->{from}
-To: $self->{to}
-${cc}${bcc}Subject: $self->{subject}
-Message-ID: <$msgid>
-X-Mailer: SQL-Ledger $self->{version}
+  $self->{from} = $self->recode($self->{from});
+
+  my %addresses;
+  my $headers = '';
+  foreach my $item (qw(from to cc bcc)) {
+    $addresses{$item} = [];
+    next unless ($self->{$item});
+
+    my (@addr_objects) = Email::Address->parse($self->{$item});
+    next unless (scalar @addr_objects);
+
+    foreach my $addr_obj (@addr_objects) {
+      push @{ $addresses{$item} }, $addr_obj->address;
+      my $phrase = $addr_obj->phrase();
+      if ($phrase) {
+        $phrase =~ s/^\"//;
+        $phrase =~ s/\"$//;
+        $addr_obj->phrase($self->mime_quote_text($phrase));
+      }
+
+      $headers .= sprintf("%s: %s\n", ucfirst($item), $addr_obj->format()) unless $driver->keep_from_header($item);
+    }
+  }
+
+  $headers .= sprintf("Subject: %s\n", $self->mime_quote_text($self->recode($self->{subject}), 60));
+
+  $driver->start_mail(from => $self->{from}, to => [ map { @{ $addresses{$_} } } qw(to cc bcc) ]);
+
+  $driver->print(qq|${headers}Message-ID: <$msgid>
+X-Mailer: Lx-Office $self->{version}