springSide 使用javaMailSender发送MimeMessage出错的问题
tjone 2008-09-03 06:09:11 今天碰到一个奇怪的问题,敬请高手解答
我重写SpringSide的DefaultMailService类中的send方法
(发送SimpleMailMessage是成功的,可是乱码问题不好解决
MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true, "utf-8");这句话好像没什么作用,所以我改用MimeMessage)
代码如下:
public void send(SimpleMailMessage msg, String templateName, Map model){
mimeMsg = mailSender.createMimeMessage();
mimeMsg.setFrom(new InternetAddress(msg.getFrom()));
mimeMsg.setRecipient(Message.RecipientType.TO, new InternetAddress(msg.getTo()[0]));
msg.setSubject(msg.getSubject());
Multipart mp=new MimeMultipart();
MimeBodyPart mbpContent=new MimeBodyPart();
mbpContent.setText(content,"UTF-8");
mp.addBodyPart(mbpContent);
mimeMsg.setSentDate(new Date());
mailSender.send(mimeMsg);
}
运行报错org.springframework.jms.listener.adapter.ListenerExecutionFailedException: Listener method 'sendEmail' threw exception; nested exception is org.springframework.mail.MailSendException; nested exceptions (1) are:
Failed message 1: javax.mail.MessagingException: IOException while sending message;
nested exception is:
我再改写代码 Properties props = new Properties();
props.put("mail.smtp.host", "192.168.91.15");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props, new Authenticator(){
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication("mdsadmin", "support");
}
});
mimeMsg = new MimeMessage(session);
mimeMsg.setFrom(new InternetAddress("tjtianjing@sohu.com"));
mimeMsg.setRecipient(Message.RecipientType.TO, new InternetAddress("jingt2@HTHK.com"));
mimeMsg.setSubject("test");
Multipart mp=new MimeMultipart();
MimeBodyPart mbpContent=new MimeBodyPart();
mbpContent.setText(content,"UTF-8");
mp.addBodyPart(mbpContent);
mimeMsg.setContent(mp);
mimeMsg.setSentDate(new Date());
mailSender.send(mimeMsg);
发送成功,我想问一下这到底是什么原因,有人说上面报错是因为j2ee5的包和mail.jar,activation.jar起冲突,我已经把j2ee5的包放到mail.jar,activation.jar后加载,并且后一种方法在同一个环境下跑是可以的,请高手帮忙解释一下,尤其是熟悉springSide框架的