EmailNotification.java 5.6 KB

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