zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    jQuery offset获取坐标不精确的问题
    RPG Maker VX地图随机气泡对话 Ver1.0
    Qt绘图控件qwt绘制等比例坐标图
    Java服务端极光推送整合Ios、Android
    Jpush给 iOS 平台推送 title 值失败
    java之Hibenate中监听事件的重写和二级cache缓存
    java之Hibeante中SQL语句的使用
    Hibernate注解符合主键关联关系、持久化传播、继承映射
    hibernate之数据库注解关联关系
    hibernate(四) 双向多对多映射关系
  • 原文地址:https://www.cnblogs.com/halu126/p/6679610.html
Copyright © 2011-2022 走看看