sendmail unicode problem

S

Supra

Hi,

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: $!";
}

Many thanks,

Julius
 
A

Andrzej Adam Filip

Supra said:
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";
 
A

Andrzej Adam Filip

Supra said:
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";
 
J

Jürgen Exner

Supra said:
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?

Are you saying that the only characters that are displayed properly are
non-Unicode characters? That's odd to say the least! I would have
assumed that non-Unicode makes even more trouble then Unicode. Also, out
of curiosity, how did you test that the non-Unicode characters are
displayed properly?

I am a bit rusty on email, but Unicode and email used to be a rather
poor combination. Most email clients don't (didn't?) handle Unicode at
all and I have a vague memory that even the standard didn't allow
Unicode in the header fields.
At the end we had to send email in a different target encoding for each
locale because there was just no way to find a common denominator. This
was the one big exception to "use Unicode, dude".

jue
 
J

Jürgen Exner

Supra said:
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?

Are you saying that the only characters that are displayed properly are
non-Unicode characters? That's odd to say the least! I would have
assumed that non-Unicode makes even more trouble then Unicode. Also, out
of curiosity, how did you test that the non-Unicode characters are
displayed properly?

I am a bit rusty on email, but Unicode and email used to be a rather
poor combination. Most email clients don't (didn't?) handle Unicode at
all and I have a vague memory that even the standard didn't allow
Unicode in the header fields.
At the end we had to send email in a different target encoding for each
locale because there was just no way to find a common denominator. This
was the one big exception to "use Unicode, dude".

jue
 
S

Supra

Andrzej Adam Filip said:
Supra said:
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 : (e-mail address removed) : (e-mail address removed)
Whenever I date a guy, I think, is this the man I want my children
to spend their weekends with?
-- Rita Rudner

Hi Andrzej, thank you very much! You're a star!!!
 
S

Supra

Andrzej Adam Filip said:
Supra said:
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 : (e-mail address removed) : (e-mail address removed)
Whenever I date a guy, I think, is this the man I want my children
to spend their weekends with?
-- Rita Rudner

Hi Andrzej, thank you very much! You're a star!!!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,836
Messages
2,569,747
Members
45,545
Latest member
rapter____0

Latest Threads

Top