On Mon, Apr 09, 2012 at 04:13:36PM +0800, xiaolan wrote:
> Hi,
> 
> I just want to send email using MIME::Lite with Net::SMTP::SSL.
> But MIME::Lite is going only with Net::SMTP by default.
> So I searched and found a hack:
> 
> use Net::SMTP::SSL;
> BEGIN { @MIME::Lite::SMTP::ISA = qw(Net::SMTP::SSL); }
> 
> This does work, now I can send messages with SMTPs.
> But how does this work? Thank you.
> 
ISA provides inheritance in OO Perl; see [1],[2]

The default MIME::Lite package - I have v3.028 - has 
@ISA = qw(Net::SMTP);
so MIME::Lite ordinarily inherits Net::SMTP's methods.

The code

BEGIN { @MIME::Lite::SMTP::ISA = qw(Net::SMTP::SSL); }

firstly is a  BEGIN block which has special rules for point of
execution [3].  It will be executed as soon as it is encountered.

This BEGIN block overrides MIME::Lite::SMTP's ISA array with Net::SMTP::SSL.

So instead of using Net::SMTP's methods you use Net::SMTP::SSL's methods.

I do puzzle over how stable this approach is.  I would be concerned about
MIME::Lite loading after this BEGIN block is executed and overwriting the
inheritance back to Net::SMTP.  

So I would be tempted to just have 
@MIME::Lite::SMTP::ISA = qw(Net::SMTP::SSL);
as a line of code in the appropriate place to ensure order of processing.

Comments please.

Kind Regards

Lesley


[1]http://perldoc.perl.org/perlboot.html
[2]http://perldoc.perl.org/perltoot.html
[3]http://perldoc.perl.org/perlmod.html#BEGIN,-UNITCHECK,-CHECK,-INIT-and-END


> Regards.
> 
> -- 
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
> 
> 

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to