@LSD логин и пароль в PM
| Код |
package test;
import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.Properties;
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; import javax.mail.internet.MimeUtility;
public class TestEmailSave {
private final static String host = "XXXXXXXXXXXXXXX"; private final static String login = "XXXXXXXXX"; private final static String passwd = "XXXXXXXX"; public static void main(String[] args) { TestEmailSave es = new TestEmailSave(); try { es.recieveMails(host, login, passwd); } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void recieveMails(String serverAddr, String login, String password) throws MessagingException, IOException { Properties properties = System.getProperties(); Session session = Session.getInstance(properties); Store store = session.getStore("pop3"); store.connect(serverAddr, login, password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); Message[] messages = folder.getMessages(); saveMessages(messages); folder.close(true); store.close(); }
private void saveMessages(Message[] messages) throws IOException, MessagingException { if(messages != null){ for(int i = 0; i < messages.length; i++) { MimeMessage currMessage = (MimeMessage)messages[i]; // можно и не кастить на MimeMessage ByteArrayOutputStream baos = new ByteArrayOutputStream(); currMessage.writeTo(baos); System.out.println(currMessage.getContent()); // вывод на консоль содержимого контента, на винде и на линухе все ок! currMessage.writeTo(System.out); // вывод на консоль, на линухе тут уже мертвый контент try { System.out.println(MimeUtility.getDefaultJavaCharset()); // для теста, у меня на винде Cp1252 на линухе utf-8 // так в оригинале : String fileOrig = "c:\\000000000-"+ i + "-orig.msg"; FileOutputStream fos = new FileOutputStream(fileOrig); fos.write(baos.toByteArray()); fos.flush(); fos.close();
// проба записи в других кодировках String file = "c:\\000000000-"+ i + ".msg"; FileOutputStream fos1 = new FileOutputStream(file); BufferedOutputStream ost = new BufferedOutputStream(fos1); OutputStreamWriter owr = new OutputStreamWriter(ost, "UTF-8"); // пробовал Cp1252, koi8-r, utf-8 - все никак.... owr.write(baos.toString()); owr.close(); ost.close(); fos.close(); // messages[i].setFlag(Flags.Flag.DELETED, true); для теста не надо } catch (Exception e) { e.printStackTrace(); } } if(messages.length == 0){ System.out.println("No new Message..."); }else{ System.out.println("geted " + messages.length + " new Messages..."); } } }
}
| |