File Coverage

blib/lib/Mail/Transport/Exim.pm
Criterion Covered Total %
statement 15 33 45.4
branch 0 8 0.0
condition 0 9 0.0
subroutine 5 7 71.4
pod 1 2 50.0
total 21 59 35.5


line stmt bran cond sub pod time code
1             # This code is part of Perl distribution Mail-Transport version 4.01.
2             # The POD got stripped from this file by OODoc version 3.05.
3             # For contributors see file ChangeLog.
4              
5             # This software is copyright (c) 2001-2025 by Mark Overmeer.
6              
7             # This is free software; you can redistribute it and/or modify it under
8             # the same terms as the Perl 5 programming language system itself.
9             # SPDX-License-Identifier: Artistic-1.0-Perl OR GPL-1.0-or-later
10              
11              
12             package Mail::Transport::Exim;{
13             our $VERSION = '4.01';
14             }
15              
16 1     1   1803 use parent 'Mail::Transport::Send';
  1         5  
  1         8  
17              
18 1     1   44 use strict;
  1         1  
  1         15  
19 1     1   5 use warnings;
  1         2  
  1         49  
20              
21 1     1   6 use Log::Report 'mail-transport', import => [ qw/__x error fault warning/ ];
  1         2  
  1         7  
22              
23 1     1   217 use Scalar::Util qw/blessed/;
  1         2  
  1         375  
24              
25             #--------------------
26              
27             sub init($)
28 0     0 0   { my ($self, $args) = @_;
29 0           $args->{via} = 'exim';
30 0           $self->SUPER::init($args);
31              
32             $self->{MTS_program} = $args->{proxy} ||
33 0 0 0       ( -x '/usr/sbin/exim4' ? '/usr/sbin/exim4' : undef) || $self->findBinary('exim', '/usr/exim/bin')
34             or error __x"cannot find binary for exim.";
35              
36 0           $self;
37             }
38              
39              
40             sub trySend($@)
41 0     0 1   { my ($self, $message, %args) = @_;
42              
43 0   0       my $from = $args{from} || $message->sender;
44 0 0 0       $from = $from->address if blessed $from && $from->isa('Mail::Address');
45 0           my @to = map $_->address, $self->destinations($message, $args{to});
46              
47 0           my $program = $self->{MTS_program};
48 0           my $mailer;
49 0 0         if(open($mailer, '|-')==0)
50 0           { { exec $program, '-i', '-f', $from, @to; } # {} to avoid warning
  0            
51 0           fault __x"cannot open pipe to {program}", program => $program;
52             }
53              
54 0           $self->putContent($message, $mailer, undisclosed => 1);
55              
56 0 0         $mailer->close
57             or fault __x"errors when closing Exim mailer {program}", program => $program;
58              
59 0           1;
60             }
61              
62             1;