|
@@ -1,56 +1,181 @@
|
|
|
package api;
|
|
|
+import java.awt.BorderLayout;
|
|
|
+import java.awt.ComponentOrientation;
|
|
|
+import java.awt.Dimension;
|
|
|
+import java.awt.FlowLayout;
|
|
|
+import java.awt.GridLayout;
|
|
|
+import java.util.prefs.*;
|
|
|
+
|
|
|
+import javax.swing.BorderFactory;
|
|
|
+import javax.swing.JButton;
|
|
|
+import javax.swing.JFrame;
|
|
|
+import javax.swing.JLabel;
|
|
|
+import javax.swing.JPanel;
|
|
|
+import javax.swing.JTextField;
|
|
|
+
|
|
|
import org.apache.commons.mail.*;
|
|
|
|
|
|
+import utility.ImageImport;
|
|
|
|
|
|
|
|
|
public class EmailNotification {
|
|
|
+ private static Preferences _prefs;
|
|
|
+ private static EmailSmtpInformation _info = new EmailSmtpInformation();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public static class EmailSmtpInformation{
|
|
|
-
|
|
|
- public String hostName;
|
|
|
- public int port;
|
|
|
-
|
|
|
- public String username;
|
|
|
- public String password;
|
|
|
- public String fromEmail;
|
|
|
- public String toEmail;
|
|
|
+ public String Hostname;
|
|
|
+ public int Port;
|
|
|
+ public String Username;
|
|
|
+ public String Password;
|
|
|
+ public String FromEmail;
|
|
|
+ public String ToEmail;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public static void main(String[] args) {
|
|
|
System.out.println("hello");
|
|
|
|
|
|
- EmailSmtpInformation info = new EmailSmtpInformation();
|
|
|
- info.hostName = "smtp.googlemail.com";
|
|
|
- info.port = 465;
|
|
|
- info.username = "holeg.nuc.notification";
|
|
|
- info.password = "";
|
|
|
- info.fromEmail = "holeg.nuc.notification@gmail.com";
|
|
|
- info.toEmail = "";
|
|
|
String subject = "TestMail123";
|
|
|
String message = "This is a test mail ... :-)";
|
|
|
- sendEmail(info, subject, message);
|
|
|
+ //sendEmail(info, subject, message);
|
|
|
+ OpenEmailSettings(null);
|
|
|
}
|
|
|
|
|
|
+ public static void OpenEmailSettings(JPanel parent) {
|
|
|
+ loadPreferences();
|
|
|
+ JFrame frame = new JFrame();
|
|
|
+ frame.setTitle("Email Settings");
|
|
|
+ frame.setIconImage(ImageImport.loadImage("/Images/Holeg.png",30,30));
|
|
|
+ frame.setContentPane(createEditFormular(frame));
|
|
|
+ frame.pack();
|
|
|
+ frame.setPreferredSize(new Dimension(400,frame.getHeight()));
|
|
|
+ frame.pack();
|
|
|
+ frame.setVisible(true);
|
|
|
+ frame.setLocationRelativeTo(parent);
|
|
|
+ frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private static JPanel createEditFormular(JFrame frame) {
|
|
|
+ JPanel panel = new JPanel();
|
|
|
+ panel.setLayout(new BorderLayout());
|
|
|
+ panel.setBorder(BorderFactory.createEmptyBorder(0,5,0,5));
|
|
|
+
|
|
|
+ JPanel infoPanel = new JPanel();
|
|
|
+ GridLayout infoLayout= new GridLayout(0,2);
|
|
|
+ infoPanel.add(new JLabel("SMTP Hostname:"));
|
|
|
+ JTextField hostnameTextField = new JTextField(_info.Hostname);
|
|
|
+ infoPanel.add(hostnameTextField);
|
|
|
+ infoPanel.add(new JLabel("Port:"));
|
|
|
+ JTextField portTextField = new JTextField(Integer.toString(_info.Port));
|
|
|
+ infoPanel.add(portTextField);
|
|
|
+ infoPanel.add(new JLabel("Username:"));
|
|
|
+ JTextField usernameTextField = new JTextField(_info.Username);
|
|
|
+ infoPanel.add(usernameTextField);
|
|
|
+ infoPanel.add(new JLabel("Password:"));
|
|
|
+ JTextField passwordTextField = new JTextField(_info.Password);
|
|
|
+ infoPanel.add(passwordTextField);
|
|
|
+ infoPanel.add(new JLabel("From Email:"));
|
|
|
+ JTextField fromEmailTextField = new JTextField(_info.FromEmail);
|
|
|
+ infoPanel.add(fromEmailTextField);
|
|
|
+ infoPanel.add(new JLabel("To Email:"));
|
|
|
+ JTextField toEmailTextField = new JTextField(_info.ToEmail);
|
|
|
+ infoPanel.add(toEmailTextField);
|
|
|
+ infoPanel.setLayout(infoLayout);
|
|
|
+ panel.add(infoPanel, BorderLayout.CENTER);
|
|
|
+
|
|
|
+ JPanel controlPanel = new JPanel();
|
|
|
+ controlPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
|
|
+ controlPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
|
|
|
+ JButton cancelButton = new JButton("Cancel");
|
|
|
+ cancelButton.addActionListener(event -> {
|
|
|
+ frame.dispose();
|
|
|
+ });
|
|
|
+ controlPanel.add(cancelButton);
|
|
|
+ JButton applyButton = new JButton("Apply and Close");
|
|
|
+ applyButton.addActionListener(event -> {
|
|
|
+ // parse Textfields
|
|
|
+ _info.Hostname = hostnameTextField.getText();
|
|
|
+ _info.Port = Integer.valueOf(portTextField.getText());
|
|
|
+ _info.Username = usernameTextField.getText();
|
|
|
+ _info.Password = passwordTextField.getText();
|
|
|
+ _info.FromEmail = fromEmailTextField.getText();
|
|
|
+ _info.ToEmail = toEmailTextField.getText();
|
|
|
+ // Save Preferences
|
|
|
+ savePreferences();
|
|
|
+ frame.dispose();
|
|
|
+ });
|
|
|
+ controlPanel.add(applyButton);
|
|
|
+
|
|
|
+ JButton testButton = new JButton("Send Test-Email");
|
|
|
+ testButton.addActionListener(event -> {
|
|
|
+ // parse Textfields
|
|
|
+ EmailSmtpInformation testinfo = new EmailSmtpInformation();
|
|
|
+ testinfo.Hostname = hostnameTextField.getText();
|
|
|
+ testinfo.Port = Integer.valueOf(portTextField.getText());
|
|
|
+ testinfo.Username = usernameTextField.getText();
|
|
|
+ testinfo.Password = passwordTextField.getText();
|
|
|
+ testinfo.FromEmail = fromEmailTextField.getText();
|
|
|
+ testinfo.ToEmail = toEmailTextField.getText();
|
|
|
+ sendEmail(testinfo, "Holeg Notification Test", "Success.");
|
|
|
+ });
|
|
|
+ controlPanel.add(testButton);
|
|
|
+
|
|
|
+ panel.add(controlPanel, BorderLayout.PAGE_END);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return panel;
|
|
|
+ }
|
|
|
+ public static void sendEmail(String subject, String message) {
|
|
|
+ loadPreferences();
|
|
|
+ sendEmail(_info, subject, message);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- private static void sendEmail(EmailSmtpInformation info, String subject, String message) {
|
|
|
+ public static void sendEmail(EmailSmtpInformation info, String subject, String message) {
|
|
|
Email email = new SimpleEmail();
|
|
|
- email.setHostName(info.hostName);
|
|
|
- email.setSmtpPort(info.port);
|
|
|
- System.out.println(info.username);
|
|
|
- email.setAuthenticator(new DefaultAuthenticator(info.username, info.password));
|
|
|
+ email.setHostName(info.Hostname);
|
|
|
+ email.setSmtpPort(info.Port);
|
|
|
+ email.setAuthenticator(new DefaultAuthenticator(info.Username, info.Password));
|
|
|
email.setSSLOnConnect(true);
|
|
|
email.setSubject(subject);
|
|
|
try {
|
|
|
- email.setFrom(info.fromEmail);
|
|
|
+ email.setFrom(info.FromEmail);
|
|
|
email.setMsg(message);
|
|
|
- email.addTo(info.toEmail);
|
|
|
+ email.addTo(info.ToEmail);
|
|
|
email.send();
|
|
|
} catch (EmailException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private static void savePreferences() {
|
|
|
+ _prefs = Preferences.userRoot().node("EmailNotification");
|
|
|
+ _prefs.put("Hostname", _info.Hostname);
|
|
|
+ _prefs.putInt("Port", _info.Port);
|
|
|
+ _prefs.put("Username", _info.Username);
|
|
|
+ _prefs.put("Password", _info.Password);
|
|
|
+ _prefs.put("FromEmail", _info.FromEmail);
|
|
|
+ _prefs.put("ToEmail", _info.ToEmail);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void loadPreferences() {
|
|
|
+ _prefs = Preferences.userRoot().node("EmailNotification");
|
|
|
+ _info.Hostname = _prefs.get("Hostname", "");
|
|
|
+ _info.Port = _prefs.getInt("Port", 465);
|
|
|
+ _info.Username = _prefs.get("Username", "");
|
|
|
+ _info.Password = _prefs.get("Password", "");
|
|
|
+ _info.FromEmail= _prefs.get("FromEmail", "");
|
|
|
+ _info.ToEmail = _prefs.get("ToEmail", "");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|