Re: Email::MIME issues

2009-02-16 Thread Lyle

Update:-

I've improved the code snippet below to be more clear of what's happening.

I guess the question really is, should Email::MIME take the single parts 
headers, when only one part is added to the containing Email::MIME 
object? Or should the single parts headers be lost, and the containing 
Email::MIME objects headers be used.



#!/usr/bin/perl

use strict;
use warnings;
use Email::Stuff;
use Data::Dump qw(dump);


### This single part plain text MIME loses it's headers (charset, etc)

my $ea =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-text_body(
'Hello mum',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea);
print $ea-as_string, \n\n;


### This single part HTML MIME loses it's headers (charset, etc)

my $ea2 =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-html_body(
'bHello mum/b',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea2);
print $ea2-as_string, \n\n;


### This 2 part plain text and HTML MIME keeps the individual parts 
headers (charset, etc)


my $ea3 =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-html_body(
'bHello mum/b',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
)-text_body(
'Hello mum',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea3);
print $ea3-as_string, \n\n;




Email::MIME issues

2009-02-15 Thread Lyle

Hi All,
 I've release a new email plugin for cgi-app based around Email::Stuff, 
CGI::Application::Plugin::Email.


I've been going through Email::Stuff to try and understand it better. 
Looking at the RT there is a bug that's been sitting there for a year or so.

http://rt.cpan.org/Public/Bug/Display.html?id=27320

I've gone through the code and started to write a patch... But it really 
does look like this could be an issue with Email::MIME rather than 
Email::Stuff.


The problem is that if you create a new Email::MIME object without 
setting headers (it'll default to us-ascii), then add to it only one 
part with headers set (such as utf-8) the result is a single part 
message, but the headers defined by the part are lost.


This isn't an issue if two parts are added (such as one text/plain, 
another html/text), as the headers for the individual parts are then 
maintained.


The question is should I continue to patch Email::Stuff to replace the 
main Email::MIME objects headers with that of the parts if it is only 
and single part message.


Or should the patch be for Email::MIME to do this?

A code sample based on Email::Stuff to show this issue has been included 
below:-



Lyle


#!/usr/bin/perl

use strict;
use warnings;
use Email::Stuff;
use Data::Dump qw(dump);

my $ea =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-text_body(
'Hello mum',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea);
print $ea-as_string, \n\n;


my $ea2 =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-html_body(
'bHello mum/b',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea2);
print $ea2-as_string, \n\n;


my $ea3 =
Email::Stuff-from('y[...]z.com')-subject('hello')-to('x[...]y.com')
-using( SMTP = '127.0.0.1' )-html_body(
'bHello mum/b',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
)-text_body(
'Hello mum',
'charset' = 'utf-8',
'content_transfer_encoding' = '8bit',
);

#print dump($ea3);
print $ea3-as_string, \n\n;