E-Mail Attribute IMAP ändern

Status
Nicht offen für weitere Antworten.

Lenzen

Aktives Mitglied
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]
 

maxxi

Bekanntes Mitglied
Kannst du das /SEEN echt permanent auf false ändern? Wundert mich. Noch mehr würde es mich wundern, wenn du die Zeit ändern könntest. Das wäre ja schlecht. Dann könnte jeder Mails eines anderen lesen (sofern er die Zugangsdaten hat) und dann wieder alles so zurückändern, als wäre das nie geschehen.

Die Exception, die bei dir ausgelöst, soll wohl folgendes heißen: der E-Mail-Server erlaubt dir das nicht. Würde ich mal vermuten. Könntest mal beim Provider nachfragen.
 
Zuletzt bearbeitet:

Lenzen

Aktives Mitglied
Ja, als ungelesen kann man die Mails auch so. :) Übrigens ist das mein MailServer - wegen der Aussage des Providers.

Ich hab es nun geschafft danke für die Mühe. Man muss eine lokale Kopie über den Copy Constructor machen. Dann die alten Nachrichten löschen und im anschluss die geänderten Mails speichern. Hier die Lösung:

[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.MessagingException;
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( "2005-02-03 04:05:06.7" );



for (int i = 0; i < message.length; i++) {
Message m = message;
MimeMessage newmsg = new MimeMessage((MimeMessage) message);

try {
if (folder != null && folder.exists()) {
System.out.println("-----------------------\nNachricht: " + i);

//setzen des neuen Datums der Nachrichten
newmsg.setSentDate(dt);

// markiere alle Nachrichten als ungelesen
newmsg.setFlag(Flags.Flag.SEEN, false);

//speichern der Aenderungen
newmsg.saveChanges();
folder.appendMessages(new Message[]{newmsg});
m.setFlag(Flags.Flag.DELETED,true);
folder.expunge();
}
} catch (MessagingException e) {
e.printStackTrace();
}
}
folder.close(false);
store.close();
} catch (Exception err) {
System.out.println(err);
}
}

public static void main(String[] args) {
getMail();
}

}

[/Java]
 

Lenzen

Aktives Mitglied
Das war einfach ein Projekt. Eine weitere Applikation prüft, ob die Mails älter als einen Monat sind und löscht alle die älter sind. Und um das zu testen, brauchte ich ein Programm. Hatte keine Lust einen Monat zu warten. :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Mail Programm Java Basics - Anfänger-Themen 4
Z E-Mail senden mit Bibliotheken Java Basics - Anfänger-Themen 1
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
T PDF-Formula (XFDF) via Mail - Betreff mit Werten aus PDF-Formular ergänzen Java Basics - Anfänger-Themen 2
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
I Java Mail (IMAP -> Empfangen) und Google Mail Java Basics - Anfänger-Themen 1
K Mail senden, nachdem Anwendung beendet wurde (gleich wie) Java Basics - Anfänger-Themen 4
TimoN11 Mail Programm mit Java? Java Basics - Anfänger-Themen 1
B Java Mail -> Mail senden, ist aber nich in IMAP unter "Gesendet" Java Basics - Anfänger-Themen 3
F String auf E-Mail kürzen Java Basics - Anfänger-Themen 11
B Java Mail: suchen von mehreren Emailadressen Java Basics - Anfänger-Themen 5
B java.mail - Email antworten und Content ausgeben Java Basics - Anfänger-Themen 4
J Mail body verschwindet Java Basics - Anfänger-Themen 2
R Java E-mail versenden. SMTP Port Fehler Java Basics - Anfänger-Themen 8
Henri Mail zu einer Gruppe versenden Java Basics - Anfänger-Themen 10
F Mail empfangen mit JAVA Java Basics - Anfänger-Themen 3
S JavaMail API E-Mail versenden Probleme Java Basics - Anfänger-Themen 5
S E-Mail über Java Java Basics - Anfänger-Themen 9
Mike90 Anhänge einer Mail abrufen Java Basics - Anfänger-Themen 6
timbeau Javax.Mail: Check this out Java Basics - Anfänger-Themen 10
T Java-Mail API Java Basics - Anfänger-Themen 11
V JavaApplet versendet keine mail Java Basics - Anfänger-Themen 8
0 Mail Versand Java Basics - Anfänger-Themen 65
A Java Mail 1.4.4 - Email versenden (HOTMAIL SMTP auth) Java Basics - Anfänger-Themen 9
F Java Mail mit Anhang Java Basics - Anfänger-Themen 5
M Java Mail API Java Basics - Anfänger-Themen 7
StrikeTom Javax.mail frage(zu code) Java Basics - Anfänger-Themen 17
J Dateien automatisch per Mail versenden Java Basics - Anfänger-Themen 3
F E-Mail Java Basics - Anfänger-Themen 24
M Ist Mail API im Core? Java Basics - Anfänger-Themen 2
M Mail-Programm Java Basics - Anfänger-Themen 8
F mail mit anhang Java Basics - Anfänger-Themen 5
F Anhang mi Java Mail Java Basics - Anfänger-Themen 13
F "From" bei Mail ändern Java Basics - Anfänger-Themen 6
F Mail Java Basics - Anfänger-Themen 3
W Mail problem Java Basics - Anfänger-Themen 3
H ist eine "neue Session" für Mail möglich? Java Basics - Anfänger-Themen 3
T E-mail programm Java Basics - Anfänger-Themen 2
M Mail senden - Problem connect to SMTP host Java Basics - Anfänger-Themen 5
F java mail api Java Basics - Anfänger-Themen 4
M Javamail: Mail als separate Datei speichern? Java Basics - Anfänger-Themen 6
G Mehrere E-Mail Adressaten Java Basics - Anfänger-Themen 3
G Mail versenden, wenn Mikrofon einen bestimmten Pegel erreich Java Basics - Anfänger-Themen 3
D Problem beim E-Mail versenden Java Basics - Anfänger-Themen 6
G mail verschicken Java Basics - Anfänger-Themen 3
G Mail Client öffnen Java Basics - Anfänger-Themen 9
R Javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
D Suchen nach E-Mail Adressen mit RegEx? Java Basics - Anfänger-Themen 14
F E-Mail Programm Java Basics - Anfänger-Themen 4
R JAVA Mail Java Basics - Anfänger-Themen 5
G mail.jar und activation.jar Java Basics - Anfänger-Themen 3
M regulärer Ausdruck zum Parsen einer E-Mail Signatur Java Basics - Anfänger-Themen 16
C wo ist mein javax.mail? Java Basics - Anfänger-Themen 2
M Einfache HTML Mail versenden , suche Beispiel Java Basics - Anfänger-Themen 5
L package com.sun.mail does not exist Java Basics - Anfänger-Themen 8
L Import von mail.jar Java Basics - Anfänger-Themen 10
N Header für Mail Java Basics - Anfänger-Themen 5
L JavaMail: javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
A E-Mail via SMTP Java Basics - Anfänger-Themen 7
R die /ext klassen nutzen (Mail API) - klassen laden Java Basics - Anfänger-Themen 7
M E-Mail im Netzwerk über Microsoft Exchange Server versenden? Java Basics - Anfänger-Themen 3
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
S Attribute zurücksetzen? Java Basics - Anfänger-Themen 2
K Sichtbarkeit protected: Attribute trotzdem aufrufbar. Java Basics - Anfänger-Themen 4
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
L Attribute aus Klasse in berechnungs Methode übergeben Java Basics - Anfänger-Themen 1
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
B Infos zu Attribute in einer Klasse speichern Java Basics - Anfänger-Themen 3
S Objekt-Attribute "variabel" gestalten Java Basics - Anfänger-Themen 10
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
R Zwei Attribute gleichzeitig ausgeben Java Basics - Anfänger-Themen 12
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C OOP Array Objektverweise und Attribute Java Basics - Anfänger-Themen 5
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
O Unterschiedliche Attribute in Objekklasse? Java Basics - Anfänger-Themen 5
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben