EmailNotification.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package api;
  2. import java.awt.BorderLayout;
  3. import java.awt.ComponentOrientation;
  4. import java.awt.Dimension;
  5. import java.awt.FlowLayout;
  6. import java.awt.GridLayout;
  7. import java.util.prefs.*;
  8. import javax.swing.BorderFactory;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13. import javax.swing.JTextField;
  14. import org.apache.commons.mail.*;
  15. import utility.ImageImport;
  16. public class EmailNotification {
  17. private static Preferences _prefs;
  18. private static EmailSmtpInformation _info = new EmailSmtpInformation();
  19. public static class EmailSmtpInformation{
  20. public String Hostname;
  21. public int Port;
  22. public String Username;
  23. public String Password;
  24. public String FromEmail;
  25. public String ToEmail;
  26. }
  27. public static void main(String[] args) {
  28. System.out.println("hello");
  29. String subject = "TestMail123";
  30. String message = "This is a test mail ... :-)";
  31. //sendEmail(info, subject, message);
  32. OpenEmailSettings(null);
  33. }
  34. public static void OpenEmailSettings(JPanel parent) {
  35. loadPreferences();
  36. JFrame frame = new JFrame();
  37. frame.setTitle("Email Settings");
  38. frame.setIconImage(ImageImport.loadImage("/Images/Holeg.png",30,30));
  39. frame.setContentPane(createEditFormular(frame));
  40. frame.pack();
  41. frame.setPreferredSize(new Dimension(400,frame.getHeight()));
  42. frame.pack();
  43. frame.setVisible(true);
  44. frame.setLocationRelativeTo(parent);
  45. frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  46. }
  47. private static JPanel createEditFormular(JFrame frame) {
  48. JPanel panel = new JPanel();
  49. panel.setLayout(new BorderLayout());
  50. panel.setBorder(BorderFactory.createEmptyBorder(0,5,0,5));
  51. JPanel infoPanel = new JPanel();
  52. GridLayout infoLayout= new GridLayout(0,2);
  53. infoPanel.add(new JLabel("SMTP Hostname:"));
  54. JTextField hostnameTextField = new JTextField(_info.Hostname);
  55. infoPanel.add(hostnameTextField);
  56. infoPanel.add(new JLabel("Port:"));
  57. JTextField portTextField = new JTextField(Integer.toString(_info.Port));
  58. infoPanel.add(portTextField);
  59. infoPanel.add(new JLabel("Username:"));
  60. JTextField usernameTextField = new JTextField(_info.Username);
  61. infoPanel.add(usernameTextField);
  62. infoPanel.add(new JLabel("Password:"));
  63. JTextField passwordTextField = new JTextField(_info.Password);
  64. infoPanel.add(passwordTextField);
  65. infoPanel.add(new JLabel("From Email:"));
  66. JTextField fromEmailTextField = new JTextField(_info.FromEmail);
  67. infoPanel.add(fromEmailTextField);
  68. infoPanel.add(new JLabel("To Email:"));
  69. JTextField toEmailTextField = new JTextField(_info.ToEmail);
  70. infoPanel.add(toEmailTextField);
  71. infoPanel.setLayout(infoLayout);
  72. panel.add(infoPanel, BorderLayout.CENTER);
  73. JPanel controlPanel = new JPanel();
  74. controlPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
  75. controlPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
  76. JButton cancelButton = new JButton("Cancel");
  77. cancelButton.addActionListener(event -> {
  78. frame.dispose();
  79. });
  80. controlPanel.add(cancelButton);
  81. JButton applyButton = new JButton("Apply and Close");
  82. applyButton.addActionListener(event -> {
  83. // parse Textfields
  84. _info.Hostname = hostnameTextField.getText();
  85. _info.Port = Integer.valueOf(portTextField.getText());
  86. _info.Username = usernameTextField.getText();
  87. _info.Password = passwordTextField.getText();
  88. _info.FromEmail = fromEmailTextField.getText();
  89. _info.ToEmail = toEmailTextField.getText();
  90. // Save Preferences
  91. savePreferences();
  92. frame.dispose();
  93. });
  94. controlPanel.add(applyButton);
  95. JButton testButton = new JButton("Send Test-Email");
  96. testButton.addActionListener(event -> {
  97. // parse Textfields
  98. EmailSmtpInformation testinfo = new EmailSmtpInformation();
  99. testinfo.Hostname = hostnameTextField.getText();
  100. testinfo.Port = Integer.valueOf(portTextField.getText());
  101. testinfo.Username = usernameTextField.getText();
  102. testinfo.Password = passwordTextField.getText();
  103. testinfo.FromEmail = fromEmailTextField.getText();
  104. testinfo.ToEmail = toEmailTextField.getText();
  105. sendEmail(testinfo, "Holeg Notification Test", "Success.");
  106. });
  107. controlPanel.add(testButton);
  108. panel.add(controlPanel, BorderLayout.PAGE_END);
  109. return panel;
  110. }
  111. public static void sendEmail(String subject, String message) {
  112. loadPreferences();
  113. sendEmail(_info, subject, message);
  114. }
  115. public static void sendEmail(EmailSmtpInformation info, String subject, String message) {
  116. Email email = new SimpleEmail();
  117. email.setHostName(info.Hostname);
  118. email.setSmtpPort(info.Port);
  119. email.setAuthenticator(new DefaultAuthenticator(info.Username, info.Password));
  120. email.setSSLOnConnect(true);
  121. email.setSubject(subject);
  122. try {
  123. email.setFrom(info.FromEmail);
  124. email.setMsg(message);
  125. email.addTo(info.ToEmail);
  126. email.send();
  127. } catch (EmailException e) {
  128. e.printStackTrace();
  129. }
  130. }
  131. private static void savePreferences() {
  132. _prefs = Preferences.userRoot().node("EmailNotification");
  133. _prefs.put("Hostname", _info.Hostname);
  134. _prefs.putInt("Port", _info.Port);
  135. _prefs.put("Username", _info.Username);
  136. _prefs.put("Password", _info.Password);
  137. _prefs.put("FromEmail", _info.FromEmail);
  138. _prefs.put("ToEmail", _info.ToEmail);
  139. }
  140. private static void loadPreferences() {
  141. _prefs = Preferences.userRoot().node("EmailNotification");
  142. _info.Hostname = _prefs.get("Hostname", "");
  143. _info.Port = _prefs.getInt("Port", 465);
  144. _info.Username = _prefs.get("Username", "");
  145. _info.Password = _prefs.get("Password", "");
  146. _info.FromEmail= _prefs.get("FromEmail", "");
  147. _info.ToEmail = _prefs.get("ToEmail", "");
  148. }
  149. }