Ich möchte gern das gesendet Datum meiner E-Mails auf einen anderen Zeitpunkt setzen. (auf meinem eigenen Mailserver)
Hier bekomme ich aber immer : javax.mail.IllegalWriteException: IMAPMessage is read-only
Die Nachrichten als komplett ungelesen bekomme ich hin. Wer kann mir hier helfen?
[Java]
package EMailDatum;
import java.util.*;
import java.text.*;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
public class EMailDatum {
public static void getMail() {
String imapHost = "192.168.1.12";
String username = "user";
String password = "pass";
try {
// Get system properties
Properties props = System.getProperties();
// Mail-Server properties: Session verlangt die Informationen ueber
// Host, User, Passwd etc.
props.put("mail.imap.host", imapHost);
props.put("mail.imap.auth", "true");
// Initialisierung der Auth-Klasse zur Mail-Account-Authentisierung;
// in Session benutzt
MailAuthenticator auth = new MailAuthenticator(username, password);
// Session: steht für die Verbindung mit dem Mail-Server
Session session = Session.getDefaultInstance(props, auth);
// Gibt in der Console Debug-Meldungen zum Verlauf aus
session.setDebug(false);
// Store: dient dem zum Ablegen der Nachrichten
Store store = session.getStore("imap");
store.connect();
// Folder: ist ein Ordner-Object für Mails
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
Date dt = new Date();
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.S" );
dt = df.parse( "2001-02-03 04:05:06.7" );
for (int i = 0; i < message.length; i++) {
Message m = message;
//MimeMessage mm = new MimeMessage();
System.out.println("-----------------------\nNachricht: " + i);
// markiere alle Nachrichten als ungelesen
m.setFlag(Flags.Flag.SEEN, false);
// setzen des neuen Datums der Nachrichten
m.setSentDate(dt); //<---------------------------hier ist das Problem
System.out.println("Send Date: " + m.getSentDate());
// markiere alle Nachrichten als gelesen
//m.setFlag(Flags.Flag.SEEN, true);
}
folder.close(false);
store.close();
} catch (Exception err) {
System.out.println(err);
}
}
public static void main(String[] args) {
getMail();
}
}
[/Java]
[Java]
package EMailDatum;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
class MailAuthenticator extends Authenticator {
/**
* Ein String, der den Usernamen nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String user;
/**
* Ein String, der das Passwort nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String password;
/**
* Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
* aus den beiden Parametern user und passwort.
*
* @param user
* String, der Username fuer den Mailaccount.
* @param password
* String, das Passwort fuer den Mailaccount.
*/
public MailAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
/**
* Diese Methode gibt ein neues PasswortAuthentication
* Objekt zurueck.
*
* @see javax.mail.Authenticator#getPasswordAuthentication()
*/
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.user, this.password);
}
}
[/Java]
Hier bekomme ich aber immer : javax.mail.IllegalWriteException: IMAPMessage is read-only
Die Nachrichten als komplett ungelesen bekomme ich hin. Wer kann mir hier helfen?
[Java]
package EMailDatum;
import java.util.*;
import java.text.*;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
public class EMailDatum {
public static void getMail() {
String imapHost = "192.168.1.12";
String username = "user";
String password = "pass";
try {
// Get system properties
Properties props = System.getProperties();
// Mail-Server properties: Session verlangt die Informationen ueber
// Host, User, Passwd etc.
props.put("mail.imap.host", imapHost);
props.put("mail.imap.auth", "true");
// Initialisierung der Auth-Klasse zur Mail-Account-Authentisierung;
// in Session benutzt
MailAuthenticator auth = new MailAuthenticator(username, password);
// Session: steht für die Verbindung mit dem Mail-Server
Session session = Session.getDefaultInstance(props, auth);
// Gibt in der Console Debug-Meldungen zum Verlauf aus
session.setDebug(false);
// Store: dient dem zum Ablegen der Nachrichten
Store store = session.getStore("imap");
store.connect();
// Folder: ist ein Ordner-Object für Mails
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages();
Date dt = new Date();
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.S" );
dt = df.parse( "2001-02-03 04:05:06.7" );
for (int i = 0; i < message.length; i++) {
Message m = message;
//MimeMessage mm = new MimeMessage();
System.out.println("-----------------------\nNachricht: " + i);
// markiere alle Nachrichten als ungelesen
m.setFlag(Flags.Flag.SEEN, false);
// setzen des neuen Datums der Nachrichten
m.setSentDate(dt); //<---------------------------hier ist das Problem
System.out.println("Send Date: " + m.getSentDate());
// markiere alle Nachrichten als gelesen
//m.setFlag(Flags.Flag.SEEN, true);
}
folder.close(false);
store.close();
} catch (Exception err) {
System.out.println(err);
}
}
public static void main(String[] args) {
getMail();
}
}
[/Java]
[Java]
package EMailDatum;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
class MailAuthenticator extends Authenticator {
/**
* Ein String, der den Usernamen nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String user;
/**
* Ein String, der das Passwort nach der Erzeugung eines
* Objektes<br>
* dieser Klasse enthalten wird.
*/
private final String password;
/**
* Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
* aus den beiden Parametern user und passwort.
*
* @param user
* String, der Username fuer den Mailaccount.
* @param password
* String, das Passwort fuer den Mailaccount.
*/
public MailAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}
/**
* Diese Methode gibt ein neues PasswortAuthentication
* Objekt zurueck.
*
* @see javax.mail.Authenticator#getPasswordAuthentication()
*/
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.user, this.password);
}
}
[/Java]