In meinem Programm rufe ich emails von einem mailServer hab und durchsuche dabei ihren Header nachdem Datum, an dem sie empfangen werden. Dabei erhalte ich
als Rückgabe und mit
dann einen String raus, alldings gibt mir der Compiler bei
den Fehler aus:
Gesamter Code:
Code:
Received: (qmail invoked by alias); 26 Mar 2012 00:17:10 -0000
Java:
emailRec = recvreply.substring(36, 56)
Java:
SimpleDateFormat stringToDate = new SimpleDateFormat("dd MMM yyyy hh:mm:ss");
emailDate = stringToDate.parse(emailRec)
Code:
java.text.ParseException: Unparseable date: "26 Mar 2012 00:17:10"
Gesamter Code:
Java:
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.apache.commons.codec.binary.Base64;
public class EmailClient {
// eMail + Kommunikations Variablen
private String emailAdress = null;
private String pw = null;
private String emailBase = null;
private String pwBase = null;
private String popServer = null;
private String smtpServer = null;
private int popPort;
private int smtpPort;
private int emailNumber;
private String emailRec;
private Date startDate = null;
private Date endDate = null;
private String[] emails = null;
// Swing Varaiablen
JFrame frame;
JLabel label;
JLabel startData;
JLabel endData;
GridLayout layout;
JLabel emailAdressText;
JLabel pwText;
JLabel popServerText;
JLabel smtpServerText;
JLabel popPortText;
JLabel smtpPortText;
JLabel startDataText;
JLabel endDataText;
JTextArea message;
JLabel rightSide;
JLabel messageText;
JLabel buttons;
JButton start;
JButton end;
JTextField emailAdressField;
JPasswordField pwField;
JTextField popServerField;
JTextField smtpServerField;
JTextField popPortField;
JTextField smtpPortField;
JTextField startDataDay;
JTextField startDataMonth;
JTextField startDataYear;
JTextField startDataHour;
JTextField startDataMinute;
JTextField endDataDay;
JTextField endDataMonth;
JTextField endDataYear;
JTextField endDataHour;
JTextField endDataMinute;
JLabel dot;
JLabel slash;
public EmailClient() {
frame = new JFrame("email Abwesendheitsnachricht");
layout = new GridLayout(0, 2);
frame.setLayout(layout);
label = new JLabel();
label.setLayout(layout);
dot = new JLabel(":");
slash = new JLabel("/");
startData = new JLabel();
startData.setLayout(new FlowLayout());
endData = new JLabel();
endData.setLayout(new FlowLayout());
emailAdressText = new JLabel("email Adresse:");
pwText = new JLabel("email Passwort: ");
popServerText = new JLabel("POP3 Server URL/IP: ");
smtpServerText = new JLabel("SMTP Server URL/IP: ");
popPortText = new JLabel("POP3 Port: ");
smtpPortText = new JLabel("SMTP Server Port: ");
startDataText = new JLabel("Startzeitpunkt: ");
endDataText = new JLabel("Endzeitpunkt: ");
emailAdressField = new JTextField();
pwField = new JPasswordField();
popServerField = new JTextField();
smtpServerField = new JTextField();
popPortField = new JTextField();
smtpPortField = new JTextField();
startDataDay = new JTextField("01");
startDataMonth = new JTextField("01");
startDataYear = new JTextField("2000");
startDataHour = new JTextField("00");
startDataMinute = new JTextField("00");
endDataDay = new JTextField("01");
endDataMonth = new JTextField("01");
endDataYear = new JTextField("2000");
endDataHour = new JTextField("00");
endDataMinute = new JTextField("00");
label.add(emailAdressText);
label.add(emailAdressField);
label.add(pwText);
label.add(pwField);
label.add(popServerText);
label.add(popServerField);
label.add(popPortText);
label.add(popPortField);
label.add(smtpServerText);
label.add(smtpServerField);
label.add(smtpPortText);
label.add(smtpPortField);
label.add(startDataText);
label.add(endDataText);
startData.add(startDataMinute);
startData.add(new JLabel(":"));
startData.add(startDataHour);
startData.add(startDataDay);
startData.add(new JLabel("/"));
startData.add(startDataMonth);
startData.add(new JLabel("/"));
startData.add(startDataYear);
endData.add(endDataMinute);
endData.add(dot);
endData.add(endDataHour);
endData.add(endDataDay);
endData.add(new JLabel("/"));
endData.add(endDataMonth);
endData.add(new JLabel("/"));
endData.add(endDataYear);
start = new JButton("start");
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
getData();
}
});
end = new JButton("stop");
buttons = new JLabel();
buttons.setLayout(new FlowLayout());
label.add(startData);
label.add(endData);
message = new JTextArea();
message.setLineWrap(true);
message.setWrapStyleWord(true);
messageText = new JLabel("Abwesenheitsnachricht");
buttons.add(start);
buttons.add(end);
rightSide = new JLabel();
rightSide.setLayout(new GridLayout(0, 1));
rightSide.add(messageText);
rightSide.add(message);
rightSide.add(buttons);
frame.add(label);
frame.add(rightSide);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640, 480);
frame.setVisible(true);
}
public static void main(String[] argc) {
new EmailClient();
}
@SuppressWarnings("deprecation")
public void getData() {
String start = startDataDay.getText() + "." + startDataMonth.getText()
+ "." + startDataYear.getText() + " "
+ startDataMinute.getText() + ":" + startDataHour.getText();
SimpleDateFormat dataToDate = new SimpleDateFormat("dd.MM.yyyy HH:mm");
String end = endDataDay.getText() + "." + endDataMonth.getText() + "."
+ endDataYear.getText() + " " + endDataMinute.getText() + ":"
+ endDataHour.getText();
try {
startDate = dataToDate.parse(start);
endDate = dataToDate.parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
if (endDate.getTime() > startDate.getTime()) {
emailAdress = emailAdressField.getText();
pw = pwField.getText();
emailBase = Base64.encodeBase64String(emailAdress.getBytes());
pwBase = Base64.encodeBase64String(pw.getBytes());
popServer = popServerField.getText();
smtpServer = smtpServerField.getText();
popPort = Integer.parseInt(popPortField.getText());
smtpPort = Integer.parseInt(smtpPortField.getText());
} else {
JOptionPane.showMessageDialog(frame,
"Der Endzeitpunkt muss nach dem Startzeitpunkt liegen. ",
"Warnung", JOptionPane.WARNING_MESSAGE);
}
getMail();
}
@SuppressWarnings("deprecation")
public void sendEmail(String retriever, String subject) {
Socket socket;
PrintStream out;
DataInputStream in;
String recvreply;
try {
socket = new Socket(smtpServer, smtpPort);
in = new DataInputStream(new BufferedInputStream(
socket.getInputStream(), 2500));
out = new PrintStream(new BufferedOutputStream(
socket.getOutputStream(), 2500), true);
recvreply = in.readLine();
if (recvreply.startsWith("220")) {
System.out.println("Server Response : " + recvreply);
out.println("HELO " + emailAdress);
recvreply = in.readLine();
if (recvreply.startsWith("250")) {
System.out.println("Server Response : " + recvreply);
out.println("AUTH LOGIN");
recvreply = in.readLine();
if (recvreply.startsWith("334")) {
System.out.println("Server Response : " + recvreply);
out.println(emailBase);
recvreply = in.readLine();
if (recvreply.startsWith("334")) {
System.out
.println("Server Response : " + recvreply);
out.println(pwBase);
recvreply = in.readLine();
if (recvreply.startsWith("235")) {
System.out.println("Server Response : "
+ recvreply);
out.println("MAIL FROM:<" + emailAdress + ">");
recvreply = in.readLine();
if (recvreply.startsWith("250")) {
System.out.println("Server Response : "
+ recvreply);
out.println("RCPT TO:<" + retriever + ">");
recvreply = in.readLine();
if (recvreply.startsWith("250")) {
System.out.println("Server Response : "
+ recvreply);
out.println("DATA");
recvreply = in.readLine();
if (recvreply.startsWith("354")) {
System.out
.println("Server Response : "
+ recvreply);
out.println("FROM:<lukaseichler@gmx.de>");
out.println("TO:<" + retriever
+ ">");
out.println("Subject: " + subject
+ "\n");
out.println(message);
out.println(".");
recvreply = in.readLine();
if (recvreply.startsWith("250")) {
System.out
.println("Server Response : "
+ recvreply);
out.println("QUIT");
recvreply = in.readLine();
if (recvreply.startsWith("221")) {
System.out
.println("Server Response : "
+ recvreply);
}
}
}
}
}
}
}
}
}
}
} catch (IOException e) {
System.out.println("could not connect to port");
}
}
@SuppressWarnings("deprecation")
public int getMail() {
Socket socket;
PrintStream out;
DataInputStream in;
String recvreply;
String email = "";
SimpleDateFormat stringToDate = new SimpleDateFormat(
"dd MMM yyyy hh:mm:ss");
Date emailDate = null;
int j = 0;
emailAdress = "lukaseichler@gmx.de";
try {
socket = new Socket("pop.gmx.net", 110);
in = new DataInputStream(new BufferedInputStream(
socket.getInputStream(), 2500));
out = new PrintStream(new BufferedOutputStream(
socket.getOutputStream(), 2500), true);
recvreply = in.readLine();
if (recvreply.startsWith("+OK")) {
System.out.println("Server Response : " + recvreply);
out.println("user [email]lukaseichler@gmx.de[/email]");
recvreply = in.readLine();
if (recvreply.startsWith("+OK password required for user")) {
System.out.println("Server Response : " + recvreply);
out.println("pass @@@uppedBy-Polo@@@");
recvreply = in.readLine();
if (recvreply.startsWith("+OK")) {
System.out.println("Server Response : " + recvreply);
emailNumber = Integer.parseInt(recvreply.substring(
19 + emailAdress.length(),
recvreply.indexOf(" ",
19 + emailAdress.length())));
do {
out.println("Top " + (emailNumber - j) + " 0");
recvreply = in.readLine();
System.out
.println("Server Response : " + recvreply);
for (int i = 0; i <= 8; i++) {
recvreply = in.readLine();
System.out.println("Server Response : "
+ recvreply);
if (i == 2) {
emailRec = recvreply.substring(36, 56);
emailDate = stringToDate.parse(emailRec);
}
}
emails[j] = recvreply.substring(6);
} while (emailDate.getTime() >= startDate.getTime());
startDate = new Date();
System.out.println(startDate);
socket.close();
System.out.println("Closed Connection with Server");
}
}
}
}
catch (IOException e) {
email = "Error in Connecting to Port";
} catch (ParseException e) {
e.printStackTrace();
}
return j;
}
}