On 05/01/05 07:30, Mike Heins wrote:
Quoting Peter (suppressed):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"; } }
That should work, but it doesn't make sense to me to do it that way. Let me explain...
$head is supposed to be an array ref of individual headers. It would seem to me that passing parts of headers in individual elements would be a broken usage of the array. It doesn't make sense to fix this in send_mail as send_mail should not be respoonsible for fixing the broken array that is passed to it from other functions. send_mail should be able to expect that the array passed to it is good. So it makes more sense to me to fix it in the email-raw usertag (and other usertags and functions that do something similar) so they don't pass a broken array to send_mail.
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().
That's good. It makes sense to me that all outbound email should go through send_mail to avoid code duplication.
Peter _______________________________________________ interchange-users mailing list suppressed http://www.icdevgroup.org/mailman/listinfo/interchange-users
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.