能够对发送的邮件进行加密和解密,并且能够发送和收取邮件

解决方案 »

  1.   

    邮件传输的 POP3 SMTP 协议已经封装加密,如果不想被他人拦截,建议另外定义钥密
      

  2.   

    package ran.one;import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*;public class TestEmail {

    public static void main(String args[]) throws Exception {

    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.qq.com");
    props.put("mail.smtp.auth", "true"); //允许smtp校验   
    Session session = Session.getInstance(props);
    session.setDebug(true);//显示发送调试信息
    MimeMessage message = new MimeMessage(session);
    //设置发件人
    InternetAddress sendAddress=new InternetAddress("[email protected]");//发件人
    message.setFrom(sendAddress);
    //设置收件人
    InternetAddress reviceAddress=new InternetAddress("[email protected]");//收件人
    message.setRecipient(Message.RecipientType.TO, reviceAddress);
    message.setSubject("冉鹏革来信");//主题
    //message.setText("我们都有一个家,名字叫中国");//不带附件就用这句
    message.setSentDate(new Date());
    //发送附件部份,可删除,无影响-------------------------------
    Multipart multipart = new MimeMultipart(); 
    //如果邮件带有附件,就用下面这三句设置正文内容,没有带附件就用上面的message.setText("我们都有一个家,名字叫中国");
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setText("我们都有一个家,名字叫中国");
            multipart.addBodyPart(contentPart);
            //添加附件
            BodyPart messageBodyPart= new MimeBodyPart();
            DataSource source = new FileDataSource("G:\\文档.rtf");
            //添加附件的内容
            messageBodyPart.setDataHandler(new DataHandler(source));
    //这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
            messageBodyPart.setFileName("=?GBK?B?"+enc.encode("文档.rtf".getBytes())+"?=");//附件的标题
            multipart.addBodyPart(messageBodyPart);
            message.setContent(multipart);//将multipart对象放到message中
    //--------------------------------
    message.saveChanges();//保存邮件信息
    //发送
    Transport ts=session.getTransport("smtp");
    ts.connect("smtp.qq.com", "[email protected]","ranshaoweng");
    ts.sendMessage(message, message.getAllRecipients());
    ts.close();
    System.out.println("send email to [email protected] over!");
    }
    }