SSH实战 · JAVA发送邮件相关

  • 发送激活邮件

电子邮箱:邮件服务器上的一块空间;

    邮件服务器:类比于web服务器(tomcat),有相应的服务器软件;

    邮件协议:大公司发送和接收服务器分开,也可以都用一个服务器。

                           SMTP:简单的邮件发送协议;
                           POP3:接收邮件的一个协议;

    邮件发送的全过程:理论上需要联网,但是通过搭建在本地的服务器,可以在本地进行邮件的发送。

  • 搭建邮箱服务器:
    • 安装邮箱服务器(易邮邮箱服务器,就按默认的安装在C盘)
    • 打开该服务器,修改域名:工具-->服务器设置-->单域名改为自定义,例如:shop.com。
    • 注册几个内部账号:账号-->新建账号。密码设为55555
    • 注册一个自定义的官方账号:service    密码:55555
  • 安装邮件客户端软件(可以接发邮件):避免了网页版session的过期离线问题。
    • 流行的有软件有:outlook(微软收费)、foxmail(免费,选用foxmail)
    • 配置
                    * 配置发送邮件服务器:localhost
                    * 配置接收邮件服务器:localhost
  • 编码实现邮件发送(见MailUtils.java)
  • 用户激活
    • 在邮箱客户端中点击激活链接:
      • 根据链接中传递的激活码进行查询                         
      • 如果用户不为空:修改用户状态:0  -->  1,向前台传递激活成功消息。
      • 如果用户为空:激活码失效或被篡改,向前台传递激活失败消息。
 代码如下:
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
 * 发送邮件工具类
 */
public class MailUtils {
    /**
     * 发送邮件的方法
     * @param to 收件人
     * @param code 激活码
     */
    public static void sendMail(String to, String code){
        /**
         * 1.获得一个session对象
         * 2.创建一个代表邮件的对象的Message
         * 3.发送邮件Transport
         */
        //1.获得一个session对象
        Properties props = new Properties();
        props.setProperty("mail.host", "localhost");//指定发送邮件的主机是谁:localhost
        Session session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("service@XXX.com", "55555");
            }
        });
        //2.创建一个代表邮件的对象的Message
        Message message = new MimeMessage(session);
        try {
            //2.1:设置发件人
            message.setFrom(new InternetAddress("service@shop.com"));
            //2.2:设置收件人
            /*抄送:CC ; 密送:BCC*/
            message.addRecipient(RecipientType.TO, new InternetAddress(to));
            //2.3:设置邮件标题
            message.setSubject("官方账号激活邮件!");
            //2.4:设置邮件正文
            message.setContent("<h2>欢迎您XXXX,这是官方发送的账号激活邮件正文,请勿泄露<br/>此邮件,以免给用户带来损失!请点击后面的链接完成账户激活操作。</h2><h3><a href='http://127.0.0.1:8080/XXXX/user_active.action?code="+code+"'>http://127.0.0.1:8080/XXX/user_active.action/code="+code+"</a></h3>", "text/html;charset=UTF-8");
            //3.发送邮件
            Transport.send(message);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
     public static void main(String[] args){
        sendMail("aaa@XXX.com", "55555");
    }
}


用户激活的action方法:
     /**
      * 用户激活的方法
      */
      public String active () {
           // 根据激活码查询用户:
          User existUser = userService . findByCode ( user . getCode ()) ;
           // 判断
           if ( existUser == null ) {
               // 激活码错误的
               this. addActionMessage ( "激活失败:激活码错误!" ) ;
           } else {
               // 激活成功
               // 修改用户的状态
               existUser . setState ( 1 ) ;
               existUser . setCode ( null ) ;
               userService . update ( existUser ) ;
               this. addActionMessage ( "激活成功:请去登录!" ) ;
           }
           return "msg" ;
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值