Java使用javax.mail.jar发送邮件例题

引言

一、导包

提取码:0nxi

基础知识

首先

  1. 邮件传输有两个协议:POP3和SMTP
  2. 发送邮件协议smtp

1. 创建Session会话: Session.getDefaultInstance()

  1. 再准备邮件发送上去
  2. 创建sessin会话之前,要为这个session对象设置一些参数 定义在Properties属性文件中

2. 获取一个传输对象(ts):session.getTransport()

  1. 通过session.getTransport() 代码如下
Transport ts = null;
        try {
          
   
            //获取到传输的对象 发送邮件
            ts = session.getTransport();
        } catch (Exception e) {
          
   
            e.printStackTrace();
        }
  1. ts.connect()方法给3个参数,

4. 构建一封邮件:MimeMessage

MimeMessage message = new MimeMessage(session);

5. 为message配置发件人、收件人、主题、正文等信息

  1. 发件人:message.setFrom();//给定参数是一个new InternetAddress()对象,再把文我的账号给他
  2. 收件人:message.setRecipient(); //Message.RecipientType.TO表示收件人 //Message.RecipientType.CC抄送//A发邮件给B,但希望领导C也看见,就抄送给C //Message.RecipientType.BCC暗送
  3. 主题:message.setSubject();
  4. 正文:message.setContent();//还要给个编码格式

6. 保存message、传输对象ts发送

//保存邮件
            message.saveChanges();
            //发送邮件
            ts.sendMessage(message,message.getAllRecipients());

7. 关闭传输对象ts

finally {
          
   
            if(ts!=null){
          
   
                try {
          
   
                    ts.close();
                } catch (MessagingException e) {
          
   
                    e.printStackTrace();
                }
            }
        }

完整代码

封装成一个Utils工具类

  1. 可以通过传一个user类,里面定义了邮箱地址u_email,也就是收件人的邮箱账号
  2. 邮件的正文message.setContent发送的是给这个user类一个激活连接
String ip = InetAddress.getLocalHost().getHostAddress();
  String url = "http://"+ip+":8080/user?method=active&c="+user.getUcode();
  message.setContent(user.getUname()+",您好<br>欢迎注册myshop商城!请点击连接进行激活:<a href="+url+">"+url+"</a>","text/html;charset=utf-8");
  1. MimeMessage对象通过写一个creatMsg方法,返回message
  2. private static MimeMessage createMsg(Session session,String myAccount,User user){}

完整代码EmailUtils工具类

经验分享 程序员 微信小程序 职场和发展