EmailNotification.java 5.7 KB

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