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.pm    2009-10-10
> 04:04:04.000000000 +0200
> +++ /usr/lib/perl5/site_perl/5.8.8/MIME/Lite.pm 2010-09-16
> 20:11:16.000000000 +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
> +    $smtp->data()
> +      or die "SMTP data() command failed: $!\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 . "This probably represents a problem with newline
> encoding ";
> +
> +    # terminate the session
> +    $smtp->quit;
> +
> +    return $self->{last_send_successful} = 1;
> +}
> +sub send_by_ssl {
> +    require Net::SMTP::SSL;
> +    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::SSL->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
> +    $smtp->data()
> +      or die "SMTP data() command failed: $!\n"
> +      . $smtp->message . "\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 . "This probably represents a problem with newline
> encoding ";
> +
> +    # terminate the session
> +    $smtp->quit;
> +
> +    return $self->{last_send_successful} = 1;
> +}
>  
>  =item send_by_testfile FILENAME
>  
> @@ -3121,10 +3236,92 @@
>      $smtp->datasend(@_)
>        or Carp::croak(   "Net::CMD (Net::SMTP) DATASEND command
> failed.\n"
>                        . "Last server message was:"
> -                      . $smtp->message
> +                      . $smtp 
>                        . "This probably represents a problem with
> newline encoding " );
>  }
>  
> +#============================================================
> +
> +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_tls = ( "\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_tls{$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 . "This probably represents a problem
> with newline encoding " );
> +}
> +
> +#============================================================
> +
> +package MIME::Lite::SMTP::SSL;
> +
> +#============================================================
> +# 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::SSL);
> +
> +# some of the below is borrowed from Data::Dumper
> +my %esc_ssl = ( "\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_ssl{$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 . "This probably represents a problem
> with newline encoding " );
> +}
> +
>  
>  #============================================================
>  
> 
> 
> it's down in debugger in $mailer->mail('t...@toto.org')
> and a more
> no error is present in Net::SMTP::TLS
> i know a découvert a bug
> i don't understand this error
> 
> more  appointment a pleasure
-- 
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x092164A7


gpg --keyserver pgp.mit.edu --recv-key 092164A7

Attachment: signature.asc
Description: Ceci est une partie de message numériquement signée

Reply via email to