Wrong encoding in message subject

  • Thread starter Jan-Hendrik Lendholt
  • Start date
J

Jan-Hendrik Lendholt

Hi everyone,

we wrote a simple cronjob for our server, which connects to a database,
gets some data eventually sends a mal via the java mail API.

Until now everything worked fine, but we since we updated our OS the
mail subject looks like:

=?ANSI_X3.4-1968?Q?Noch_freie_Plaetze_fuer:_=3FHSV-Hallencup_?=
=?ANSI_X3.4-1968?Q?2006=3F_am_8.1.2006_in_der?=

Uhm, I am really confused. The *really* strange thing is:

When I am executing the script via putty on the linux console, the
subject is being shown correctly - but running as cronjob the subject
is scrumbled ;-)

The following java code is used to create the message:

/*
* Created on 17.03.2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/


import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

/**
* @author Mathias Deutz
*
*/
public class SendMail
{
public static void send(String recipient, String subject, String
message, String from)
{
try
{
Properties props = new Properties();
props.put("IP-ADDRESS", "IP-ADDRESS");

Session session = Session.getDefaultInstance( props );

Message msg = new MimeMessage( session );

InternetAddress addressFrom = new InternetAddress( from );
msg.setFrom( addressFrom );

InternetAddress addressTo = new InternetAddress( recipient );
msg.setRecipient( Message.RecipientType.TO, addressTo );

msg.setSubject( subject );
msg.setContent( message, "text/html" );
msg.saveChanges();

Transport.send( msg );
}
catch (Exception e)
{
e.printStackTrace();
}
}
}


And the following code sends the message:

SendMail.send("(e-mail address removed)",betreff,nachricht,"(e-mail address removed)");

I hope I could make myself clear.

Thanks in advance!

Jan Lendholt
 
G

Gordon Beaton

we wrote a simple cronjob for our server, which connects to a
database, gets some data eventually sends a mal via the java mail
API.

Until now everything worked fine, but we since we updated our OS the
mail subject looks like:

=?ANSI_X3.4-1968?Q?Noch_freie_Plaetze_fuer:_=3FHSV-Hallencup_?=
=?ANSI_X3.4-1968?Q?2006=3F_am_8.1.2006_in_der?=

Uhm, I am really confused. The *really* strange thing is:

When I am executing the script via putty on the linux console, the
subject is being shown correctly - but running as cronjob the subject
is scrumbled ;-)

Cron jobs typically do not run in a login shell, and therefore they
often have a different environment than you see from the login shell.
It's not unlikely that you fail to set the proper locale settings in
one of these, and that other one sees a system default.

If you want to specify a default locale, you should be able to do so
in your code as well. I have no experience with javax.mail, but have a
look at the documentation for javax.mail.internet.MimeUtility for some
clues.

/gordon
 
I

Igor Planinc

Jan-Hendrik Lendholt said:
Hi everyone,

we wrote a simple cronjob for our server, which connects to a database,
gets some data eventually sends a mal via the java mail API.

Until now everything worked fine, but we since we updated our OS the
mail subject looks like:

=?ANSI_X3.4-1968?Q?Noch_freie_Plaetze_fuer:_=3FHSV-Hallencup_?=
=?ANSI_X3.4-1968?Q?2006=3F_am_8.1.2006_in_der?=

MimeUtility.encodeText() is your friend. Just use it on the subject and you'll
be OK. In fact, use it on every header value.
 

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,962
Messages
2,570,134
Members
46,692
Latest member
JenniferTi

Latest Threads

Top