Сохранение Файла Из Email.

Тема в разделе "Java", создана пользователем Izver84, 12 фев 2013.

  1. Izver84

    Izver84 New Member

    Регистрация:
    3 ноя 2009
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Есть почтовый ящик.
    Там есть письмо с файлом.
    Нужно взять этот файл и сохранить на компьютер. И потом удалить письмо.
    Нашел такой пример:
    Код (Text):
    //переменные
    private Session session;
    private POP3SSLStore store;
    private String username;
    private String password;
    private POP3Folder folder;
    public static String numberOfFiles = null;
    public static int toCheck = 0;
    public static Writer output = null;
    URLName url;
    public static String receiving_attachments="/home/pavel/email/pavel/receive";

    //присваивает переменной значения пользователя и пароль
    public void setUserPass(String username, String password)
    {
    this.username = username;
    this.password = password;
    }
    //соединение с почтой
    public void connect()
    throws Exception
    {
    String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    Properties pop3Props = new Properties();
    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
    pop3Props.setProperty("mail.pop3.port", "995");
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995");
    url = new URLName("pop3", "pop.mail.ru",995, "", username, password);
    session = Session.getInstance(pop3Props, null);
    store = new POP3SSLStore(session, url);
    store.connect();
    }
    //чтение почты
    public void openFolder(String folderName)
    throws Exception
    {
    folder = (POP3Folder)store.getFolder(folderName);
    System.out.println((new StringBuilder("For test----")).append
    (folder.getParent().getFullName()).toString());
    if(folder == null)
    throw new Exception("Invalid folder");
    try
    {
    folder.open(2);
    System.out.println((new StringBuilder("Folder name----")).append
    (folder.getFullName()).toString());
    }
    catch(Exception ex)
    {
    System.out.println((new StringBuilder("Folder Opening Exception..")).append(ex).toString());
    }
    }
    //проверка
    public void printAllMessages()
    throws Exception
    {
    Message msgs[] = folder.getMessages();
    FetchProfile fp = new FetchProfile();
    folder.fetch(msgs, fp);
    for(int i = 0; i < msgs.length; i++){
    Message message = msgs[i];
    dumpEnvelope(msgs[i]);/сохранение
    System.out.println("==============================");
    System.out.println("Email #" + (i + 1));
    System.out.println("Subject: " + message.getSubject());
    System.out.println("From: " + message.getFrom()[0]);
    System.out.println("Text: " + message.getContent().toString());
    }
    }
    //запуск
    try
    {
    Pop3 gmail = new Pop3();
    gmail.setUserPass("user@mail.ru", "***");
    gmail.connect();
    gmail.openFolder("INBOX");
    gmail.printAllMessages();
    }
    catch(Exception e)
    {
    e.printStackTrace();
    System.exit(-1);
    }
    Все работает.

    Само сохранение
    Код (Text):
    //как я понимаю идет чтения письма и вызов сохранения
    private static void dumpEnvelope(Message m) throws Exception
    {
    String body="";
    String path="";
    int size=0;
    Object content = m.getContent();
    if(content instanceof String){
    body = (String)content;
    }
    else if(content instanceof Multipart)
    {
    Multipart mp = (Multipart)content;
    for (int j=0; j < mp.getCount(); j++)
    {
    Part part = mp.getBodyPart(j);
    String disposition = part.getDisposition();
    //System.out.println("test disposition---->>"+disposition);
    if (disposition == null) {
    // Check if plain
    MimeBodyPart mbp = (MimeBodyPart)part;
    if (mbp.isMimeType("text/plain")) {
    body += mbp.getContent().toString();
    }
    else if (mbp.isMimeType("TEXT/HTML")) {
    body += mbp.getContent().toString();
    }
    else {
    //unknown
    }
    } else if ((disposition != null) &&
    (disposition.equals(Part.ATTACHMENT) || disposition.equals
    (Part.INLINE) || disposition.equals("ATTACHMENT") || disposition.equals
    ("INLINE")) )
    {
    // Check if plain
    MimeBodyPart mbp = (MimeBodyPart)part;
    if (mbp.isMimeType("text/plain")) {
    body += (String)mbp.getContent();
    }
    else if (mbp.isMimeType("TEXT/HTML")) {
    body += mbp.getContent().toString();
    }
    else {
    File savedir = new File(receiving_attachments);
    savedir.mkdirs();
    File savefile = new File(savedir+"/"+part.getFileName());
    path = savefile.getAbsolutePath();
    size = saveFile( savefile, part);
    }
    }
    }
    }
    }
    //сохранение
    public static int saveFile(File saveFile, Part part) throws Exception {
    BufferedOutputStream bos = new BufferedOutputStream( new
    FileOutputStream(saveFile) );
    byte[] buff = new byte[2048];
    InputStream is = part.getInputStream();
    int ret = 0, count = 0;
    while( (ret = is.read(buff)) > 0 ){
    bos.write(buff, 0, ret);
    count += ret;
    }
    bos.close();
    is.close();
    return count;
    }
    Я чего-то не понимаю.

    Программа сохраняет не вложенный файл, общею информацию о письме?

    Что не так?

    P.S.

    Задача.
    Пользователь нажимает на кнопку, программа скачивает файл с почты.
    Если другие методы сохранения?
    Или нельзя с почты сохранить файл?
     
Загрузка...
Похожие Темы - Сохранение Файла Из
  1. ESWANT
    Ответов:
    1
    Просмотров:
    812
  2. Izver84
    Ответов:
    0
    Просмотров:
    1.352
  3. JohnLemon
    Ответов:
    9
    Просмотров:
    957
  4. jonson88
    Ответов:
    2
    Просмотров:
    1.023
  5. ksmak
    Ответов:
    1
    Просмотров:
    1.336

Поделиться этой страницей