JavaMail简单收发邮件

JavaMail简单收发邮件

首先准备 javax.mail.jar,将jar包导入java工程,开始编写代码

邮件参数类,定义好邮件需要的一些参数字段

/**
 * @Title: MailParam.java
 * @desc: 邮件参数bean
 * @author mengchuan.li
 */
public class MailParam {
    private int port;// 端口
    private String host;// 服务器
    private String user;// 登录名
    private String password;// 密码
    private String from;// 发送邮箱
    private String to;// 接受邮箱
    private boolean isSSL;// SSL加密
    private String agreement;// 协议类型
    private String contant;//正文
    private String subject;//标题
    /****get set****/
    ..............
}

邮件发送

    /**
     * 
     * @Title: sendMessage
     * @Desc: 发送邮件 stmp
     * @param mail
     */
    public void sendMessage(MailParam mail) {
        System.out.println("开始发送邮件");
        Properties props = new Properties();
        props.put("mail.transport.protocol", mail.getAgreement());
        props.put("mail.smtp.host", mail.getHost());
        props.put("mail.smtp.port", mail.getPort());

        //邮件服务器ssl加密
//      if (mail.isSSL()) {
//          props.put("mail.smtp.starttls.enable", "true");
//          MailSSLSocketFactory sf = null;
//          try {
//              sf = new MailSSLSocketFactory();
//          } catch (Exception e) {
//              e.printStackTrace();
//          }
//          sf.setTrustAllHosts(true);//跳过证书认证
//          props.put("mail.smtp.ssl.enable", "true");
//          props.put("mail.smtp.ssl.socketFactory", sf);
//      }

        Session mailSession = Session.getInstance(props);
        Message msg = new MimeMessage(mailSession);
        Transport transport = null;

        try {
            msg.setSubject(mail.getSubject());
            msg.setFrom(new InternetAddress(mail.getFrom()));
            msg.setContent(mail.getContant(), "text/html;charset=UTF-8");
            InternetAddress to = new InternetAddress(mail.getTo());
            msg.setRecipient(RecipientType.TO, to);

            transport = mailSession.getTransport();
            transport.connect(mail.getUser(), mail.getPassword());
            transport.sendMessage(msg, msg.getAllRecipients());

        } catch (Exception e) {
            System.out.println("邮件发送失败" + " subject:" + mail.getSubject());
            e.printStackTrace();
        } finally {
            try {
                transport.close();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
        System.out.println("邮件发送成功");
    }

邮件接收,和邮件发送类似

    /**
     * 
     * @Title: receiveMessage
     * @Desc: 接收邮件 pop3
     * @param mail
     */
    public void receiveMessage(MailParam mail) {
        Properties props = new Properties();
        props.put("mail.transport.protocol", mail.getAgreement());
        props.put("mail.pop3.host", mail.getHost());
        props.put("mail.pop3.port", mail.getPort());

//      if (mail.isSSL()) {
//          props.put("mail.pop3.starttls.enable", "true");
//          MailSSLSocketFactory sf = null;
//          try {
//              sf = new MailSSLSocketFactory();
//          } catch (Exception e) {
//              e.printStackTrace();
//          }
//          sf.setTrustAllHosts(true);
//          props.put("mail.pop3.ssl.enable", "true");
//          props.put("mail.pop3.ssl.socketFactory", sf);
//
//      }

        Session session = Session.getDefaultInstance(props);
        Folder folder = null;
        Store store = null;
        try {
            store = session.getStore(mail.getAgreement());
            store.connect(mail.getUser(), mail.getPassword());
            folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
            Message[] msgs = folder.getMessages();

            //遍历邮件,简单打印邮件信息
            for (Message msg : msgs) {
                System.out.println("***************************************");
                System.out.println("from:   " + msg.getFrom()[0]);
                System.out.println("sub:    " + msg.getSubject());
                System.out.println("content:" + msg.getContent().toString());
                System.out.println("***************************************");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                folder.close(false);
                store.close();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值