JavaMail转发邮件

Posted halu126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("[email protected]"));
        forward.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
        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();

 

以上是关于JavaMail转发邮件的主要内容,如果未能解决你的问题,请参考以下文章

JavaMail:利用JavaMail发送复杂邮件

javamail发送邮件(转)

Android Java使用JavaMail API发送和接收邮件的代码示例

javamail发邮件

javamail接收邮件报错

javamail电子邮件不发送