Mercurial Hosting > luan
changeset 270:b2c20fdcf42a
allow alternative-multipart mail
git-svn-id: https://luan-java.googlecode.com/svn/trunk@271 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 30 Oct 2014 20:29:33 +0000 |
parents | 967fc3d76a9f |
children | 82a3ebcfbafa |
files | dist/jars/luan-core-trunk.jar dist/jars/luan-logging-trunk.jar dist/jars/luan-lucene-trunk.jar dist/jars/luan-mail-trunk.jar dist/jars/luan-web-trunk.jar mail/src/luan/modules/mail/SmtpCon.java |
diffstat | 6 files changed, 26 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mail/src/luan/modules/mail/SmtpCon.java Wed Oct 29 23:05:59 2014 +0000 +++ b/mail/src/luan/modules/mail/SmtpCon.java Thu Oct 30 20:29:33 2014 +0000 @@ -1,5 +1,6 @@ package luan.modules.mail; +import java.util.Map; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; @@ -8,6 +9,8 @@ import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimeBodyPart; import luan.Luan; import luan.LuanState; import luan.LuanTable; @@ -64,7 +67,7 @@ private String getString(LuanState luan,LuanTable params,String key) throws LuanException { Object val = params.get(key); if( val!=null && !(val instanceof String) ) - throw luan.exception( "parameter '"+key+"' is must be a string" ); + throw luan.exception( "parameter '"+key+"' must be a string" ); return (String)val; } @@ -97,9 +100,28 @@ if( subject != null ) msg.setSubject(subject); - String body = getString(luan,mailTbl,"body"); - if( body != null ) - msg.setText(body); + Object body = mailTbl.get("body"); + if( body != null ) { + if( body instanceof String ) { + msg.setText((String)body); + } else if( body instanceof LuanTable ) { + MimeMultipart mp = new MimeMultipart("alternative"); + for( Map.Entry<Object,Object> entry : (LuanTable)body ) { + String key = (String)entry.getKey(); + String val = (String)entry.getValue(); + MimeBodyPart part = new MimeBodyPart(); + if( key.equals("text") ) { + part.setText(val); + } else if( key.equals("html") ) { + part.setContent(val,"text/html"); + } else + throw luan.exception( "invalid body type: " + key ); + mp.addBodyPart(part); + } + msg.setContent(mp); + } else + throw luan.exception( "parameter 'body' is must be a string or table" ); + } Transport.send(msg); } catch(MessagingException e) {