i add the support for smtp tls with port 587
please commit
[root@r13151 ~]# uname -a
Linux r13151.ovh.net 2.6.32.2-xxxx-grs-ipv4-32 #1 SMP Tue Dec 29
14:41:18 UTC 2009 i686 i686 i386 GNU/Linux
[root@r13151 ~]# perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=linux, osvers=2.6.18-53.el5, archname=i386-linux-thread-multi
uname='linux builder10.centos.org 2.6.18-53.el5 #1 smp mon nov 12
02:14:55 est 2007 i686 athlon i386 gnulinux '
config_args='-des -Doptimize=-O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables -Dversion=5.8.8 -Dmyhostname=localhost
-Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc.
-Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux-thread-multi
-Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads
-Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db
-Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio
-Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly
-Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto
-Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto
-Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7
5.8.6 5.8.5 -Dscriptdir=/usr/bin'
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing
-pipe -Wdeclaration-after-statement -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386
-mtune=generic -fasynchronous-unwind-tables',
cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
-Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-48)',
gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
libc=/lib/libc-2.5.so, so=so, useshrplib=true, libperl=libperl.so
gnulibc_version='2.5'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Jun 7 2010 21:31:34
@INC:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8
/usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8
.
[root@r13151 ~]#
use centos 5.5
Subject: | patchmimelite.patch |
347c347
< $VERSION = '3.025';
---
> $VERSION = '3.027';
407d406
< tls => [],
440c439
< if ( !$PARANOID and eval "require MIME::Types; MIME::Types->VERSION(1.004);" ) {
---
> if ( !$PARANOID and eval "require MIME::Types; MIME::Types->VERSION(1.28);" ) {
2569,2570c2568
< }
< if (@_) { ### no args; use defaults
---
> } else { ### no args; use defaults
2573,2575d2570
< } else {
< $method = 'send_by_smtp_' . $meth;
< @args = @{ $SenderArgs{$Sender} || [] };
2844,2902d2838
< sub send_by_smtp_tls {
< require Net::SMTP::TLS;
< my ($self,$hostname,%args) = @_;
< # We may need the "From:" and "To:" headers to pass to the
< # SMTP mailer also.
< $self->{last_send_successful}=0;
<
< my @hdr_to = extract_only_addrs( scalar $self->get('To') );
< if ($AUTO_CC) {
< foreach my $field (qw(Cc Bcc)) {
< push @hdr_to, extract_only_addrs($_) for $self->get($field);
< }
< }
< Carp::croak "send_by_smtp: nobody to send to for host '$hostname'?!\n"
< unless @hdr_to;
<
< $args{To} ||= \@hdr_to;
< $args{From} ||= extract_only_addrs( scalar $self->get('Return-Path') );
< $args{From} ||= extract_only_addrs( scalar $self->get('From') ) ;
<
< # Create SMTP client.
< # MIME::Lite::SMTP is just a wrapper giving a print method
< # to the SMTP object.
<
< my %opts = __opts(\%args, @_net_smtp_opts);
< my $smtp = MIME::Lite::SMTP::TLS->new( $hostname, %opts )
< or Carp::croak "SMTP Failed to connect to mail server: $!\n";
<
< # Send the mail command
< %opts = __opts( \%args, @_mail_opts);
< $smtp->mail( $args{From}, %opts ? \%opts : () )
< or die "SMTP mail() command failed: $!\n"
< . $smtp->message . "\n";
<
< # Send the recipients command
< %opts = __opts( \%args, @_recip_opts);
< $smtp->to( @{ $args{To} }, %opts ? \%opts : () )
< or die "SMTP recipient() command failed: $!\n"
< . $smtp->message . "\n";
<
< # Send the data
< $smtp->data
< or die "SMTP data() command failed: $!\n"
< . $smtp->message . "\n";
< $self->datasend( eval {print_for_smtp($smtp)});
<
< # Finish the mail
< $smtp->dataend()
< or Carp::croak "Net::CMD (Net::SMTP) DATAEND command failed.\n"
< . "Last server message was:"
< . $smtp->message
< . "This probably represents a problem with newline encoding ";
<
< # terminate the session
< $smtp->quit;
<
< return $self->{last_send_successful} = 1;
< }
<
2930a2867
>
2974a2912,2942
> =item send_by_testfile FILENAME
>
> I<Instance method.>
> Print message to a file (namely FILENAME), which will default to
> mailer.testfile
> If file exists, message will be appended.
>
> =cut
>
> sub send_by_testfile {
> my $self = shift;
>
> ### Use the default filename...
> my $filename = 'mailer.testfile';
>
> if ( @_ == 1 and !ref $_[0] ) {
> ### Use the given filename if given...
> $filename = shift @_;
> Carp::croak "no filename given to send_by_testfile" unless $filename;
> }
>
> ### Do it:
> local *FILE;
> open FILE, ">> $filename" or Carp::croak "open $filename: $!\n";
> $self->print( \*FILE );
> close FILE;
> my $return = ( ( $? >> 8 ) ? undef: 1 );
>
> return $self->{last_send_successful} = $return;
> }
>
3025d2992
< require Net::SMTP::TLS,
3164,3204d3130
< package MIME::Lite::SMTP::TLS;
<
< #============================================================
< # This class just adds a print() method to Net::SMTP.
< # Notice that we don't use/require it until it's needed!
<
< use strict;
< use vars qw( @ISA );
< @ISA = qw(Net::SMTP::TLS);
<
< # some of the below is borrowed from Data::Dumper
< my %esc = ( "\a" => "\\a",
< "\b" => "\\b",
< "\t" => "\\t",
< "\n" => "\\n",
< "\f" => "\\f",
< "\r" => "\\r",
< "\e" => "\\e",
< );
<
< sub _hexify {
< local $_ = shift;
< my @split = m/(.{1,16})/gs;
< foreach my $split (@split) {
< ( my $txt = $split ) =~ s/([\a\b\t\n\f\r\e])/$esc{$1}/sg;
< $split =~ s/(.)/sprintf("%02X ",ord($1))/sge;
< print STDERR "M::L >>> $split : $txt\n";
< }
< }
<
< sub print {
< my $smtp = shift;
< $MIME::Lite::DEBUG and _hexify( join( "", @_ ) );
< $smtp->datasend(@_)
< or Carp::croak( "Net::CMD (Net::SMTP) DATASEND command failed.\n"
< . "Last server message was:"
< . $smtp->message
< . "This probably represents a problem with newline encoding " );
< }
< #============================================================
<
3717c3643
< Version: 3.01_06 (Dev Test Release)
---
> Version: 3.027