Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.89 KB | None | 0 0
  1. public class MailSender extends Authenticator {
  2. private String user;
  3. private String password;
  4.  
  5. private String [] to;
  6. private String from;
  7.  
  8. private String port;
  9. private String sport;
  10.  
  11. private String host;
  12.  
  13. private String subject;
  14. private String body;
  15.  
  16. private boolean auth;
  17. private boolean debuggable;
  18.  
  19. private Multipart multi;
  20.  
  21. public MailSender(){
  22. host = "me.myserver.com";
  23. port = "25";
  24. sport = "25";
  25.  
  26. user = "";
  27. password = "";
  28. from = "";
  29. subject = "";
  30. body = "";
  31.  
  32. debuggable = true;
  33. auth = true;
  34.  
  35. multi = new MimeMultipart();
  36.  
  37. // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.
  38. MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
  39. mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
  40. mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
  41. mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
  42. mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
  43. CommandMap.setDefaultCommandMap(mc);
  44. }
  45.  
  46. public MailSender(String user, String password){
  47. this();
  48. this.user = user;
  49. this.password = password;
  50. }
  51.  
  52. public boolean send() throws Exception {
  53. Properties props = setProperties();
  54.  
  55. try{
  56. Session session = Session.getInstance(props, this);
  57. session.setDebug(true);
  58.  
  59. MimeMessage msg = new MimeMessage(session);
  60.  
  61. msg.setFrom(new InternetAddress(from));
  62.  
  63. InternetAddress[] addressTo = new InternetAddress[to.length];
  64. for(int i=0; i<to.length; i++){
  65. addressTo[i] = new InternetAddress(to[i]);
  66. }
  67.  
  68. msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
  69. msg.setSubject(subject);
  70. msg.setSentDate(new Date());
  71.  
  72. BodyPart messageBodyPart = new MimeBodyPart();
  73. messageBodyPart.setText(body);
  74. multi.addBodyPart(messageBodyPart);
  75.  
  76. msg.setContent(multi);
  77.  
  78. Transport transport = session.getTransport("smtps");
  79. transport.connect(host, 25, user, password);
  80. transport.sendMessage(msg, msg.getAllRecipients());
  81. transport.close();
  82. return true;
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. return false;
  86. }
  87. }
  88.  
  89. public void addAttachment(String filename) throws Exception {
  90. BodyPart messageBodyPart = new MimeBodyPart();
  91. DataSource source = new FileDataSource(filename);
  92. messageBodyPart.setDataHandler(new DataHandler(source));
  93. messageBodyPart.setFileName(filename);
  94.  
  95. multi.addBodyPart(messageBodyPart);
  96. }
  97.  
  98. @Override
  99. public PasswordAuthentication getPasswordAuthentication() {
  100. return new PasswordAuthentication(user, password);
  101. }
  102.  
  103. private Properties setProperties() {
  104. Properties props = new Properties();
  105.  
  106. props.put("mail.smtp.host", host);
  107.  
  108. if(debuggable) {
  109. props.put("mail.debug", "true");
  110. }
  111.  
  112. if(auth) {
  113. props.put("mail.smtp.auth", "true");
  114. }
  115.  
  116. //props.put("mail.smtp.ssl.enable", "false");
  117. //props.put("mail.smtp.ssl.trust", "*");
  118.  
  119. props.put("mail.smtp.port", port);
  120. props.put("mail.smtp.socketFactory.port", sport);
  121. //props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
  122. //props.put("mail.smtp.socketFactory.fallback", "true");
  123. props.setProperty("mail.smtp.ssl.enable", "true");
  124. props.setProperty("mail.smtp.ssl.socketFactory.class",
  125. "DummySSLSocketFactory");
  126. props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false");
  127.  
  128. //props.put("mail.smtp.starttls.enable", "false");
  129.  
  130. return props;
  131. }
  132.  
  133. public void setTo(String[] toAddress) {
  134. this.to = toAddress;
  135. }
  136.  
  137. public void setFrom(String fromAddress) {
  138. this.from = fromAddress;
  139. }
  140.  
  141. public void setSubject(String subject) {
  142. this.subject = subject;
  143. }
  144.  
  145. public void setBody(String body) {
  146. this.body = body;
  147. }
  148. }
  149.  
  150. public class DummySSLSocketFactory extends SSLSocketFactory {
  151. private SSLSocketFactory factory;
  152.  
  153. public DummySSLSocketFactory() {
  154. try {
  155. SSLContext sslcontext = SSLContext.getInstance("TLS");
  156. sslcontext.init(null,
  157. new TrustManager[] { new DummyTrustManager()},
  158. null);
  159. factory = (SSLSocketFactory)sslcontext.getSocketFactory();
  160. } catch(Exception ex) {
  161. // ignore
  162. }
  163. }
  164.  
  165. public static SocketFactory getDefault() {
  166. return new DummySSLSocketFactory();
  167. }
  168.  
  169. public Socket createSocket() throws IOException {
  170. return factory.createSocket();
  171. }
  172.  
  173. public Socket createSocket(Socket socket, String s, int i, boolean flag)
  174. throws IOException {
  175. return factory.createSocket(socket, s, i, flag);
  176. }
  177.  
  178. public Socket createSocket(InetAddress inaddr, int i,
  179. InetAddress inaddr1, int j) throws IOException {
  180. return factory.createSocket(inaddr, i, inaddr1, j);
  181. }
  182.  
  183. public Socket createSocket(InetAddress inaddr, int i)
  184. throws IOException {
  185. return factory.createSocket(inaddr, i);
  186. }
  187.  
  188. public Socket createSocket(String s, int i, InetAddress inaddr, int j)
  189. throws IOException {
  190. return factory.createSocket(s, i, inaddr, j);
  191. }
  192.  
  193. public Socket createSocket(String s, int i) throws IOException {
  194. return factory.createSocket(s, i);
  195. }
  196.  
  197. public String[] getDefaultCipherSuites() {
  198. return factory.getDefaultCipherSuites();
  199. }
  200.  
  201. public String[] getSupportedCipherSuites() {
  202. return factory.getSupportedCipherSuites();
  203. }
  204. }
  205.  
  206. public class DummyTrustManager implements X509TrustManager {
  207. public void checkClientTrusted(X509Certificate[] cert, String authType) {
  208. // everything is trusted
  209. }
  210.  
  211. public void checkServerTrusted(X509Certificate[] cert, String authType) {
  212. // everything is trusted
  213. }
  214.  
  215. public X509Certificate[] getAcceptedIssuers() {
  216. return new X509Certificate[0];
  217. }
  218. }
  219.  
  220. 08-15 16:08:59.338: W/System.err(16163): javax.mail.MessagingException: Could not connect to SMTP host: me.myserver.com, port: 25;
  221. 08-15 16:08:59.338: W/System.err(16163): nested exception is:
  222. 08-15 16:08:59.338: W/System.err(16163): javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5bfaf480: Failure in SSL library, usually a protocol error
  223. 08-15 16:08:59.338: W/System.err(16163): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0x580b87de:0x00000000)
  224. 08-15 16:08:59.338: W/System.err(16163): at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
  225. 08-15 16:08:59.338: W/System.err(16163): at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
  226. 08-15 16:08:59.346: W/System.err(16163): at javax.mail.Service.connect(Service.java:288)
  227. 08-15 16:08:59.346: W/System.err(16163): at Android.sender.MailSender.send(MailSender.java:100)
  228. 08-15 16:08:59.346: W/System.err(16163): at Android.sender.Sender$SendMail.doInBackground(Sender.java:73)
  229. 08-15 16:08:59.346: W/System.err(16163): at Android.sender.Sender$SendMail.doInBackground(Sender.java:1)
  230. 08-15 16:08:59.354: W/System.err(16163): at android.os.AsyncTask$2.call(AsyncTask.java:287)
  231. 08-15 16:08:59.354: W/System.err(16163): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  232. 08-15 16:08:59.354: W/System.err(16163): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  233. 08-15 16:08:59.354: W/System.err(16163): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  234. 08-15 16:08:59.354: W/System.err(16163): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
  235. 08-15 16:08:59.354: W/System.err(16163): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
  236. 08-15 16:08:59.354: W/System.err(16163): at java.lang.Thread.run(Thread.java:856)
  237. 08-15 16:08:59.354: W/System.err(16163): Caused by: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5bfaf480: Failure in SSL library, usually a protocol error
  238. 08-15 16:08:59.354: W/System.err(16163): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0x580b87de:0x00000000)
  239. 08-15 16:08:59.362: W/System.err(16163): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
  240. 08-15 16:08:59.362: W/System.err(16163): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:647)
  241. 08-15 16:08:59.362: W/System.err(16163): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:618)
  242. 08-15 16:08:59.362: W/System.err(16163): at com.sun.mail.smtp.SMTPTransport.initStreams(SMTPTransport.java:1449)
  243. 08-15 16:08:59.362: W/System.err(16163): at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1366)
  244. 08-15 16:08:59.362: W/System.err(16163): ... 12 more
  245. 08-15 16:08:59.362: W/System.err(16163): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5bfaf480: Failure in SSL library, usually a protocol error
  246. 08-15 16:08:59.362: W/System.err(16163): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0x580b87de:0x00000000)
  247. 08-15 16:08:59.362: W/System.err(16163): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
  248. 08-15 16:08:59.362: W/System.err(16163): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
  249. 08-15 16:08:59.362: W/System.err(16163): ... 16 more
  250.  
  251. 08-15 17:18:13.986: W/System.err(21399): javax.mail.MessagingException: Could not convert socket to TLS;
  252. 08-15 17:18:13.986: W/System.err(21399): nested exception is:
  253. 08-15 17:18:13.986: W/System.err(21399): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  254. 08-15 17:18:13.986: W/System.err(21399): at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1339)
  255. 08-15 17:18:13.986: W/System.err(21399): at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:420)
  256. 08-15 17:18:13.986: W/System.err(21399): at javax.mail.Service.connect(Service.java:288)
  257. 08-15 17:18:13.986: W/System.err(21399): at Android.sender.MailSender.send(MailSender.java:100)
  258. 08-15 17:18:13.986: W/System.err(21399): at Android.sender.Sender$SendMail.doInBackground(Sender.java:73)
  259. 08-15 17:18:13.986: W/System.err(21399): at Android.sender.Sender$SendMail.doInBackground(Sender.java:1)
  260. 08-15 17:18:13.986: W/System.err(21399): at android.os.AsyncTask$2.call(AsyncTask.java:287)
  261. 08-15 17:18:13.986: W/System.err(21399): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  262. 08-15 17:18:13.986: W/System.err(21399): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  263. 08-15 17:18:13.986: W/System.err(21399): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  264. 08-15 17:18:13.986: W/System.err(21399): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
  265. 08-15 17:18:13.986: W/System.err(21399): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
  266. 08-15 17:18:13.986: W/System.err(21399): at java.lang.Thread.run(Thread.java:856)
  267. 08-15 17:18:13.986: W/System.err(21399): Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  268. 08-15 17:18:13.986: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:398)
  269. 08-15 17:18:13.986: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:647)
  270. 08-15 17:18:13.986: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:618)
  271. 08-15 17:18:13.986: W/System.err(21399): at com.sun.mail.smtp.SMTPTransport.initStreams(SMTPTransport.java:1449)
  272. 08-15 17:18:13.986: W/System.err(21399): at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1336)
  273. 08-15 17:18:13.986: W/System.err(21399): ... 12 more
  274. 08-15 17:18:13.986: W/System.err(21399): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  275. 08-15 17:18:13.986: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:192)
  276. 08-15 17:18:13.994: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:163)
  277. 08-15 17:18:13.994: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:597)
  278. 08-15 17:18:13.994: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
  279. 08-15 17:18:13.994: W/System.err(21399): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
  280. 08-15 17:18:13.994: W/System.err(21399): ... 16 more
  281. 08-15 17:18:13.994: W/System.err(21399): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  282. 08-15 17:18:13.994: W/System.err(21399): ... 21 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement