"Supra" <jxm96c@hotmail.comwrote:
Quote:
I'm using the following code to send an email from a form on a PHP page. If
there're unicode characters in message body, they get carried over fine in
the email sent out, however if there are some in the subject or name fields,
they come out as blanks in the email received. Does anyone know how this can
be fixed?
>
#!/usr/bin/perl
>
print "Content-Type: text/html\n\n";
>
use utf8;
use CGI;
$q = new CGI;
>
unless(open (MAIL, "|/usr/lib/sendmail -t"))
{
warn "Error starting sendmail: $!";
}
else
{
print MAIL "Content-type: text/html\;charset=UTF-8\n";
print MAIL "From: ".$q->param('mail_name')."
<".$q->param('mail_from').">\n";
print MAIL "To: name\@email.com\n" ;
print MAIL "Subject: ".$q->param('mail_subject')."\n\n";
print MAIL $q->param('mail_body');
close(MAIL) || warn "Error closing mail: $!";
}
1) Non USASCII characters *in headers* require special encoding:
use Encode;
$x="....";
$x_for_header = Encode::encode('MIME-Q', $x);
MIME-Q is the best for mostly USASCII strings
MIME-B is the best for mostly non USASCII strings
2) Add one extra header to *fully* declare body encoding:
print MAIL "Content-Transfer-Encoding: 8bit\n";
--
[pl>en Andrew] Andrzej Adam Filip :
anfi@priv.onet.pl :
anfi@xl.wp.pl
Whenever I date a guy, I think, is this the man I want my children
to spend their weekends with?
-- Rita Rudner