Re: pacth for MIME::Lite

2010-10-11 Thread fakessh
hello pep network


perl gurus have certainly already found the bug
you would be very nice if you help me find the bug


help me This is the challenge


Le mardi 05 octobre 2010 à 11:21 +0200, fakessh a écrit :
 hello guys
 i am french
 i am love Perl
 i am good in Perl
 3 level actually for perlmonks
 
 i wrote a patch for MIME::Lite
 i quote
 
 ~]# cat   mimelitefinal.patch 
 --- Desktop/MIME-Lite-3.027/lib/MIME/Lite.pm2009-10-10
 04:04:04.0 +0200
 +++ /usr/lib/perl5/site_perl/5.8.8/MIME/Lite.pm 2010-09-16
 20:11:16.0 +0200
 @@ -404,6 +404,8 @@
sendmail  = [$SENDMAIL ? $SENDMAIL -t -oi -oem : undef],
smtp  = [],
sub   = [],
 +  tls   = [],
 +  ssl   = [],
  );
  
  ### Boundary counter:
 @@ -2562,25 +2564,23 @@
  
  if ( ref($self) ) {### instance method:
  my ( $method, @args );
 -if (@_) {  ### args; use them just this once
 -$method = 'send_by_' . $meth;
 +if (@_) {   ### no args; use defaults
 +$method = 'send_by_'.$meth;
  @args   = @_;
 -} else {   ### no args; use defaults
 +} elsif (@_) {
 +my @old = ( $Sender, @{ $SenderArgs{$Sender} } );
 +$Sender  = $meth;
 +$SenderArgs{$Sender} = [...@_];   ### remaining args
 +return @old;
 +   } elsif (@_) {
  $method = send_by_$Sender;
  @args   = @{ $SenderArgs{$Sender} || [] };
 -}
 +   }
  $self-verify_data if $AUTO_VERIFY;### prevents missing
 parts!
  Carp::croak Unknown send method '$meth' unless
 $self-can($method);
  return $self-$method(@args);
 -} else {   ### class method:
 -if (@_) {
 -my @old = ( $Sender, @{ $SenderArgs{$Sender} } );
 -$Sender  = $meth;
 -$SenderArgs{$Sender} = [...@_];   ### remaining args
 -return @old;
 -} else {
 +} else {
  Carp::croak class method send must have HOW... arguments
 \n;
 -}
  }
  }
  
 @@ -2829,7 +2829,7 @@
  my @_mail_opts = qw( Size Return Bits Transaction Envelope );
  my @_recip_opts= qw( SkipBad );
  my @_net_smtp_opts = qw( Hello LocalAddr LocalPort Timeout
 - Port ExactAddresses Debug );
 + Port User Password ExactAddresses Debug );
  # internal:  qw( NoAuth AuthUser AuthPass To From Host);
  
  sub __opts {
 @@ -2872,7 +2872,7 @@
  if ($smtp-supports('AUTH',500,[Command unknown: 'AUTH'])) {
  $smtp-auth( $args{AuthUser}, $args{AuthPass} )
  or die SMTP auth() command failed: $!\n
 -   . $smtp-message . \n;
 +   . $smtp  . \n;
  } else {
  die SMTP auth() command not supported on $hostname\n;
  }
 @@ -2893,14 +2893,14 @@
  # Send the data
  $smtp-data()
or die SMTP data() command failed: $!\n
 - . $smtp-message . \n;
 + . $smtp  . \n;
  $self-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
 +  . $smtp 
. This probably represents a problem with newline encoding ;
  
  # terminate the session
 @@ -2908,6 +2908,121 @@
  
  return $self-{last_send_successful} = 1;
  }
 +sub send_by_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 . \n;
 +
 +# Send the recipients command
 +%opts = __opts( \%args, @_recip_opts);
 +$smtp-to( @{ $args{To} }, %opts ? \%opts : () )
 +  or die SMTP recipient() command failed: $!\n
 +  . $smtp . \n;
 +
 +# Send the data
 

Re: pacth for MIME::Lite

2010-10-08 Thread fakessh
hello pep network

did you apply the patch and did you find the problem of encoding
characters in the lib MIME:: Lite

I thank you for all your possible returns

Le mardi 05 octobre 2010 à 11:21 +0200, fakessh a écrit :
 hello guys
 i am french
 i am love Perl
 i am good in Perl
 3 level actually for perlmonks
 
 i wrote a patch for MIME::Lite
 i quote
 
 ~]# cat   mimelitefinal.patch 
 --- Desktop/MIME-Lite-3.027/lib/MIME/Lite.pm2009-10-10
 04:04:04.0 +0200
 +++ /usr/lib/perl5/site_perl/5.8.8/MIME/Lite.pm 2010-09-16
 20:11:16.0 +0200
 @@ -404,6 +404,8 @@
sendmail  = [$SENDMAIL ? $SENDMAIL -t -oi -oem : undef],
smtp  = [],
sub   = [],
 +  tls   = [],
 +  ssl   = [],
  );
  
  ### Boundary counter:
 @@ -2562,25 +2564,23 @@
  
  if ( ref($self) ) {### instance method:
  my ( $method, @args );
 -if (@_) {  ### args; use them just this once
 -$method = 'send_by_' . $meth;
 +if (@_) {   ### no args; use defaults
 +$method = 'send_by_'.$meth;
  @args   = @_;
 -} else {   ### no args; use defaults
 +} elsif (@_) {
 +my @old = ( $Sender, @{ $SenderArgs{$Sender} } );
 +$Sender  = $meth;
 +$SenderArgs{$Sender} = [...@_];   ### remaining args
 +return @old;
 +   } elsif (@_) {
  $method = send_by_$Sender;
  @args   = @{ $SenderArgs{$Sender} || [] };
 -}
 +   }
  $self-verify_data if $AUTO_VERIFY;### prevents missing
 parts!
  Carp::croak Unknown send method '$meth' unless
 $self-can($method);
  return $self-$method(@args);
 -} else {   ### class method:
 -if (@_) {
 -my @old = ( $Sender, @{ $SenderArgs{$Sender} } );
 -$Sender  = $meth;
 -$SenderArgs{$Sender} = [...@_];   ### remaining args
 -return @old;
 -} else {
 +} else {
  Carp::croak class method send must have HOW... arguments
 \n;
 -}
  }
  }
  
 @@ -2829,7 +2829,7 @@
  my @_mail_opts = qw( Size Return Bits Transaction Envelope );
  my @_recip_opts= qw( SkipBad );
  my @_net_smtp_opts = qw( Hello LocalAddr LocalPort Timeout
 - Port ExactAddresses Debug );
 + Port User Password ExactAddresses Debug );
  # internal:  qw( NoAuth AuthUser AuthPass To From Host);
  
  sub __opts {
 @@ -2872,7 +2872,7 @@
  if ($smtp-supports('AUTH',500,[Command unknown: 'AUTH'])) {
  $smtp-auth( $args{AuthUser}, $args{AuthPass} )
  or die SMTP auth() command failed: $!\n
 -   . $smtp-message . \n;
 +   . $smtp  . \n;
  } else {
  die SMTP auth() command not supported on $hostname\n;
  }
 @@ -2893,14 +2893,14 @@
  # Send the data
  $smtp-data()
or die SMTP data() command failed: $!\n
 - . $smtp-message . \n;
 + . $smtp  . \n;
  $self-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
 +  . $smtp 
. This probably represents a problem with newline encoding ;
  
  # terminate the session
 @@ -2908,6 +2908,121 @@
  
  return $self-{last_send_successful} = 1;
  }
 +sub send_by_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 . \n;
 +
 +# Send the recipients command
 +%opts = __opts( \%args, @_recip_opts);
 +$smtp-to( @{ $args{To} }, %opts ? \%opts : () )
 +  or die SMTP recipient() command failed: $!\n
 +  . $smtp . \n;
 +
 +# Send