EmailNotification.java 5.4 KB

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