diff mail/src/luan/modules/mail/SmtpCon.java @ 289:ae7ae2755b48

improve Mail; add String.concat(); git-svn-id: https://luan-java.googlecode.com/svn/trunk@290 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Mon, 08 Dec 2014 07:45:40 +0000
parents 073044e3ac03
children cbb94a7c7a9e
line wrap: on
line diff
--- a/mail/src/luan/modules/mail/SmtpCon.java	Fri Dec 05 03:49:54 2014 +0000
+++ b/mail/src/luan/modules/mail/SmtpCon.java	Mon Dec 08 07:45:40 2014 +0000
@@ -22,7 +22,8 @@
 public final class SmtpCon {
 	private final Session session;
 
-	public SmtpCon(LuanState luan,LuanTable params) throws LuanException {
+	public SmtpCon(LuanState luan,LuanTable paramsTbl) throws LuanException {
+		Map<Object,Object> params = new HashMap<Object,Object>(paramsTbl.asMap());
 		Properties props = new Properties(System.getProperties());
 
 		String host = getString(luan,params,"host");
@@ -30,7 +31,7 @@
 			throw luan.exception( "parameter 'host' is required" );
 		props.setProperty("mail.smtp.host",host);
 
-		Object port = params.get("port");
+		Object port = params.remove("port");
 		if( port != null ) {
 			String s;
 			if( port instanceof String ) {
@@ -63,10 +64,13 @@
 			};
 			session = Session.getInstance(props,auth);
 		}
+
+		if( !params.isEmpty() )
+			throw luan.exception( "unrecognized parameters: "+params );
 	}
 
-	private String getString(LuanState luan,LuanTable params,String key) throws LuanException {
-		Object val = params.get(key);
+	private String getString(LuanState luan,Map<Object,Object> params,String key) throws LuanException {
+		Object val = params.remove(key);
 		if( val!=null && !(val instanceof String) )
 			throw luan.exception( "parameter '"+key+"' must be a string" );
 		return (String)val;
@@ -87,21 +91,26 @@
 
 	public void send(LuanState luan,LuanTable mailTbl) throws LuanException {
 		try {
+			Map<Object,Object> mailParams = new HashMap<Object,Object>(mailTbl.asMap());
 			MimeMessage msg = new MimeMessage(session);
 
-			String from = getString(luan,mailTbl,"from");
+			String from = getString(luan,mailParams,"from");
 			if( from != null )
 				msg.setFrom(from);
 
-			String to = getString(luan,mailTbl,"to");
+			String to = getString(luan,mailParams,"to");
 			if( to != null )
 				msg.setRecipients(Message.RecipientType.TO,to);
 
-			String subject = getString(luan,mailTbl,"subject");
+			String cc = getString(luan,mailParams,"cc");
+			if( cc != null )
+				msg.setRecipients(Message.RecipientType.CC,cc);
+
+			String subject = getString(luan,mailParams,"subject");
 			if( subject != null )
 				msg.setSubject(subject);
 
-			Object body = mailTbl.get("body");
+			Object body = mailParams.remove("body");
 			if( body != null ) {
 				if( body instanceof String ) {
 					msg.setText((String)body);
@@ -128,6 +137,9 @@
 					throw luan.exception( "parameter 'body' is must be a string or table" );
 			}
 
+			if( !mailParams.isEmpty() )
+				throw luan.exception( "unrecognized parameters: "+mailParams );
+
 			Transport.send(msg);
 		} catch(MessagingException e) {
 			throw luan.exception(e);