[ic] email-raw usertag broken for Net::SMTP FIX

Mike Heins mike at perusion.com
Sun May 1 10:30:49 EDT 2005


Quoting Peter (peter at pajamian.dhs.org):
> On 04/30/05 20:04, Mike Heins wrote:
> > >One thing I failed to mention before is that my patch fails to account 
> > >for the possibility of folded headers.  I didn't think too much of it 
> > >because I don't anticipate anyone using the email-raw tag to send emails 
> > >out with folded headers, but if you want to make it work with then an 
> > >additional regexp to unfold them should fix it.  Something like the 
> > >following before the split line should do it:
> > >
> > >$headers =~ s/\r?\n([ \t])/$1/s;
> >
> >
> >It would seem to make sense to account for it. Can't we do so simply by
> >joining the @header array with a \n without stripping the headers
> >in send_mail?
> 
> I never bothered to look fully into the details of how send_mail works 
> with Net::SMTP.  That said...
> 
> When I patched email-raw I looked at send_mail to see how to use it and 
> it checks the first arg to see if it's a ref and if it is it assumes 
> that the first arg is an array ref of all the headers and the second arg 
> the email body.  If the first arg is not a ref then it is assumed to be 
> the To: recipient for the email.  so by joining them as yuou suggest 
> would just make send_mail assume that all those headers are the 
> recipient and won't work.

I did mean in send_mail().

> If you want to hack up send_mail to work 
> differently then be my guest, but i would want to caution against doing 
> so in a way that might break existing functionality.

That is always the worry. 8-) But I think we can safely do this:

       for(my $i = $#$head; $i > 0; $i--) {
           if($head->[$i] =~ /^\s/) {
               my $new = splice @$head, $i, 1;
               $head->[$i - 1] .= "\n$new";
           }
       }

[snip]
 
> >One reason I had been avoiding all this is that the send_mail routine
> >is really an incredibly bad hack. It is some of the original code
> >in Vend 0.2, mangled year after year to wedge in more stuff. I had
> >always imagined I was going to make it reasonable, but instead we
> >ended up with send_mail, mail.coretag, email.coretag, email-raw.coretag,
> >etc.
> 
> Sheesh, I never realised there was a mail tag as well.  Maybe the email 
> and email-raw usertags should just be rewritten as stubs of the mail tag 
> since it seems to combine the functionality of both.

This is probably so. And if I add the MIME stuff then everyone will
be happy.

> 
> I haven't checked yet, but can I assume that the mail tag works fine 
> with Net::SMTP?
> 

It uses send_mail().

-- 
Mike Heins
Perusion -- Expert Interchange Consulting    http://www.perusion.com/
phone +1.765.647.1295  tollfree 800-949-1889 <mike at perusion.com>

Friends don't let friends use Outlook. -- Bob Blaylock


More information about the interchange-users mailing list