JavaMail轉發郵件


最近要做一個郵件轉發功能,看了好多blog,都是接受郵件,再解析郵件內容,再組裝成新的郵件發出!

我按照這個不夠,不錯!郵件發出去了。但是好麻煩啊,接受郵件是個Message,發送郵件也是個Message,是不是可以可以修修改改直接用啊!

但是我有不想修改原郵件,怎么辦。copy啊!

發送郵件需要那些基本內容啊?

如下:

forward.setSubject(message.getSubject());
forward.setFrom(new InternetAddress("XXX"));
forward.setRecipient(Message.RecipientType.TO, new InternetAddress("OOO"));
forward.setSentDate(new Date());
forward.setContent(message.getContent(), message.getContentType());

對就是這些內容,而這些內容都可以直接從原郵件中獲得,特別是Content這個字段,不需要解析這個Object具體是啥,直接拿來用就行了!

轉發是不是很簡單。

實用demo:

public void forwardMail(Session session, Message message) throws MessagingException, IOException {
        Message forward = new MimeMessage(session);
        forward.setSubject(message.getSubject());
        forward.setFrom(new InternetAddress("xxx@126.com"));
        forward.setRecipient(Message.RecipientType.TO, new InternetAddress("ooo@126.com"));
        forward.setSentDate(new Date());
        forward.setContent(message.getContent(), message.getContentType());

        Transport smtp = session.getTransport("smtp");
        smtp.connect();
        smtp.sendMessage(forward, forward.getAllRecipients());
        smtp.close();
    }

 最后附上,接受郵件,發送郵件的屬性設置:(有些郵箱的用戶名不帶后綴,只用@前面的部分就行了)

        Properties properties = new Properties();
        // 發送郵件使用的協議
        properties.setProperty("mail.transport.protocol", sendProtocol);
        properties.setProperty("mail.smtp.host", mailHost);
        properties.setProperty("mail.smtp.timeout", "20000");
        properties.setProperty("mail.smtp.connectiontimeout", "20000");
        // 接收郵件使用的協議
        properties.setProperty("mail.store.protocol", storeProtocol);
        properties.setProperty("mail.imap.host", mailHost);
        properties.setProperty("mail.imap.starttls.enable", "true");

        Session session = Session.getDefaultInstance(properties);
//        session.setDebug(true);
        Store store = session.getStore(storeProtocol);
        // 接受郵件
        store.connect(mailHost, user, password);
        Folder folder = store.getFolder("INBOX");
        folder.open(Folder.READ_WRITE);
        //使用完關閉資源
        folder.close(false);
        store.close();
        
        // 發送郵件
        Transport smtp = session.getTransport("smtp");
        smtp.connect();
        smtp.sendMessage(forward, forward.getAllRecipients());
        smtp.close();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM