Mercurial Hosting > luan
annotate mail/src/luan/modules/mail/SmtpCon.java @ 273:073044e3ac03
fix mmake.sh and multipart mail
git-svn-id: https://luan-java.googlecode.com/svn/trunk@274 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 31 Oct 2014 18:44:11 +0000 |
parents | b2c20fdcf42a |
children | ae7ae2755b48 |
rev | line source |
---|---|
228
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
1 package luan.modules.mail; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
3 import java.util.Map; |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
4 import java.util.HashMap; |
228
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
5 import java.util.Properties; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
6 import javax.mail.Authenticator; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import javax.mail.PasswordAuthentication; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
8 import javax.mail.Session; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
9 import javax.mail.Transport; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
10 import javax.mail.Message; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
11 import javax.mail.MessagingException; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
12 import javax.mail.internet.MimeMessage; |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
13 import javax.mail.internet.MimeMultipart; |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
14 import javax.mail.internet.MimeBodyPart; |
228
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
15 import luan.Luan; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
16 import luan.LuanState; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
17 import luan.LuanTable; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
18 import luan.LuanJavaFunction; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
19 import luan.LuanException; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
20 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
21 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
22 public final class SmtpCon { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
23 private final Session session; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
24 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
25 public SmtpCon(LuanState luan,LuanTable params) throws LuanException { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
26 Properties props = new Properties(System.getProperties()); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
27 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
28 String host = getString(luan,params,"host"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
29 if( host==null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
30 throw luan.exception( "parameter 'host' is required" ); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
31 props.setProperty("mail.smtp.host",host); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
32 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
33 Object port = params.get("port"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
34 if( port != null ) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
35 String s; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
36 if( port instanceof String ) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
37 s = (String)port; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
38 } else if( port instanceof Number ) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
39 Integer i = Luan.asInteger(port); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
40 if( i == null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
41 throw luan.exception( "parameter 'port' is must be an integer" ); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
42 s = i.toString(); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
43 } else { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
44 throw luan.exception( "parameter 'port' is must be an integer" ); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
45 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
46 props.setProperty("mail.smtp.socketFactory.port", s); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
47 props.setProperty("mail.smtp.port", s); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
48 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
49 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
50 String username = getString(luan,params,"username"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
51 if( username == null ) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
52 session = Session.getInstance(props); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
53 } else { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
54 String password = getString(luan,params,"password"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 if( password==null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
56 throw luan.exception( "parameter 'password' is required with 'username'" ); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
57 props.setProperty("mail.smtp.auth","true"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
58 final PasswordAuthentication pa = new PasswordAuthentication(username,password); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
59 Authenticator auth = new Authenticator() { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
60 protected PasswordAuthentication getPasswordAuthentication() { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
61 return pa; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
62 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
63 }; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
64 session = Session.getInstance(props,auth); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
65 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
66 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
67 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
68 private String getString(LuanState luan,LuanTable params,String key) throws LuanException { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
69 Object val = params.get(key); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
70 if( val!=null && !(val instanceof String) ) |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
71 throw luan.exception( "parameter '"+key+"' must be a string" ); |
228
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
72 return (String)val; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
73 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
74 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
75 public LuanTable table() { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
76 LuanTable tbl = Luan.newTable(); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
77 try { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
78 tbl.put( "send", new LuanJavaFunction( |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
79 SmtpCon.class.getMethod( "send", LuanState.class, LuanTable.class ), this |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
80 ) ); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
81 } catch(NoSuchMethodException e) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
82 throw new RuntimeException(e); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
83 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
84 return tbl; |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
85 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
86 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
87 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
88 public void send(LuanState luan,LuanTable mailTbl) throws LuanException { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
89 try { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
90 MimeMessage msg = new MimeMessage(session); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
91 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
92 String from = getString(luan,mailTbl,"from"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
93 if( from != null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
94 msg.setFrom(from); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
95 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
96 String to = getString(luan,mailTbl,"to"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
97 if( to != null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
98 msg.setRecipients(Message.RecipientType.TO,to); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
99 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
100 String subject = getString(luan,mailTbl,"subject"); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
101 if( subject != null ) |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
102 msg.setSubject(subject); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
103 |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
104 Object body = mailTbl.get("body"); |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
105 if( body != null ) { |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
106 if( body instanceof String ) { |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
107 msg.setText((String)body); |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
108 } else if( body instanceof LuanTable ) { |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
109 LuanTable bodyTbl = (LuanTable)body; |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
110 Map<Object,Object> map = new HashMap<Object,Object>(bodyTbl.asMap()); |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
111 MimeMultipart mp = new MimeMultipart("alternative"); |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
112 String text = (String)map.remove("text"); |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
113 if( text != null ) { |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
114 MimeBodyPart part = new MimeBodyPart(); |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
115 part.setText(text); |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
116 mp.addBodyPart(part); |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
117 } |
273
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
118 String html = (String)map.remove("html"); |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
119 if( html != null ) { |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
120 MimeBodyPart part = new MimeBodyPart(); |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
121 part.setContent(html,"text/html"); |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
122 mp.addBodyPart(part); |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
123 } |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
124 if( !map.isEmpty() ) |
073044e3ac03
fix mmake.sh and multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
270
diff
changeset
|
125 throw luan.exception( "invalid body types: " + map ); |
270
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
126 msg.setContent(mp); |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
127 } else |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
128 throw luan.exception( "parameter 'body' is must be a string or table" ); |
b2c20fdcf42a
allow alternative-multipart mail
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
228
diff
changeset
|
129 } |
228
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
130 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
131 Transport.send(msg); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
132 } catch(MessagingException e) { |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
133 throw luan.exception(e); |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
134 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
135 } |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
136 |
7580379cdc79
implement basic mail smtp
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
137 } |