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();
  • 相关阅读:
    IE7下总提示" 缺少标识符、字符串或数字"
    #pragma 用法
    破解win7开机密码
    教你怎么样设计一块好的PCB板精华教程
    Object reference not set to an instance of an object. 'Infinity' is not a valid value for property 'width'.
    验证时出错,HRESULT = '8000000A'
    WIN7打补丁后VS2012出现版本不兼容
    VS的快捷键
    WPF学习记录1:ListView的一个模板
    使用Xposed Installer实现Android Hook
  • 原文地址:https://www.cnblogs.com/halu126/p/6679610.html
Copyright © 2011-2022 走看看