Email_demo

来源:互联网 发布:外汇交易软件下载 编辑:程序博客网 时间:2024/06/05 07:32

步骤一:

package com.bw.pojo;public class MyEmail {    private static MyEmail email;    private String host = "smtp.163.com";    // 发送方邮箱host    private String from = "17600246280@163.com";   // 发送方邮箱    private String user = "17600246280";   // 发送方邮箱账号    private String pwd = "ovel1314.21";     // 发送方邮箱密码    public static MyEmail getEmail(){        if(email!=null){            return email;        }else{            email = new MyEmail();            return email;        }    }    public String getFrom() {        return from;    }    public String getUser() {        return user;    }    public String getPwd() {        return pwd;    }    public String getHost() {        return host;    }}


步骤二:

package com.bw.service;public interface ISendEmailService {    /**     * 写一个发送邮件的方法     * @param content     * @param title     * @param address     * @param affix     * @param affixName     */    void send(String content, String title, String address, String affix, String affixName);}


实现类:
package com.bw.service.Impl;import com.bw.pojo.MyEmail;import com.bw.service.ISendEmailService;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import java.util.ArrayList;import java.util.List;import java.util.Properties;public class SendEmailServiceImpl implements ISendEmailService {    @Override    public void send(String content, String title, String address, String affix, String affixName) {        MyEmail myEmail = MyEmail.getEmail();        String host = myEmail.getHost();        String user = myEmail.getUser();        String pwd = myEmail.getPwd();        String from = myEmail.getFrom();        Properties props = new Properties();        // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)  -->需要修改        props.put("mail.smtp.host", host);        // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)        props.put("mail.smtp.auth", "true");        // 用刚刚设置好的props对象构建一个session        Session session = Session.getDefaultInstance(props);        // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使        // 用(你可以在控制台(console)上看到发送邮件的过程)        session.setDebug(true);        // 用session为参数定义消息对象        MimeMessage message = new MimeMessage(session);        try {            // 加载发件人地址   -->需要修改            message.setFrom(new InternetAddress(from));            // 加载收件人地址   -->需要修改            message.addRecipients(Message.RecipientType.TO, address);            List<InternetAddress> list = new ArrayList();//不能使用string类型的类型,这样只能发送一个收件人            String []median=address.split(",");//对输入的多个邮件进行逗号分割            for(int i=0;i<median.length;i++){                list.add(new InternetAddress(median[i]));            }            InternetAddress[] addresses =(InternetAddress[])list.toArray(new InternetAddress[list.size()]);            message.addRecipients(Message.RecipientType.TO, addresses);            // 加载标题   --->也需要修改            message.setSubject(title);            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件            Multipart multipart = new MimeMultipart();            // 设置邮件的文本内容            BodyPart contentPart = new MimeBodyPart();            //需要修改的地方   写的内容            contentPart.setText(content);            multipart.addBodyPart(contentPart);            // 添加附件            if(affix != null && !"".equals(affix))            {                BodyPart messageBodyPart = new MimeBodyPart();                DataSource source = new FileDataSource(affix);                // 添加附件的内容                messageBodyPart.setDataHandler(new DataHandler(source));                // 添加附件的标题                // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码                sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();                messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(affixName.getBytes()) + "?=");                multipart.addBodyPart(messageBodyPart);            }            // 将multipart对象放到message中            message.setContent(multipart);            // 保存邮件            message.saveChanges();            // 发送邮件            Transport transport = session.getTransport("smtp");            // 连接服务器的邮箱            transport.connect(host, user, pwd);            // 把邮件发送出去            transport.sendMessage(message, message.getAllRecipients());            transport.close();        } catch (Exception e) {            e.printStackTrace();        }    }}


步骤三:

package com.bw.controller;import com.bw.pojo.User;import com.bw.service.IUserService;import com.bw.util.FileUtil;import com.bw.util.RandomUtil;import com.bw.util.TwoDimensionCode;import com.google.zxing.WriterException;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import java.io.IOException;import java.util.HashMap;import java.util.List;import java.util.Map;@Controller@RequestMapping("/user")public class UserController {    @Resource    private IUserService iUserService;    //查询所有    @RequestMapping("selUser")    public ModelAndView selUser(ModelAndView modelAndView) throws  Exception{     List<User> userList=   iUserService.selUser();    modelAndView.addObject("userList",userList);    modelAndView.setViewName("show");        return modelAndView;    }    //模糊查询    @RequestMapping("fuzzyUser")    public ModelAndView fuzzyUser(ModelAndView modelAndView,String name){        List<User> fuzzyUser=   iUserService.fuzzyUser(name);        modelAndView.addObject("fuzzyUser",fuzzyUser);        modelAndView.setViewName("show");        return modelAndView;    }    //注册    @RequestMapping("registerUser")    public ModelAndView registerUser(@RequestParam(value = "file",required = false)MultipartFile file, HttpServletRequest request, ModelAndView modelAndView, User user)throws Exception{        if (!file.isEmpty()){            String headPhoto= FileUtil.uploadFile(file,request);            user.setName(headPhoto);        }else {            user.setName(null);        }        iUserService.registerUser(user);        modelAndView.setViewName("redirect:/user/selUser.action");        return modelAndView;    }     //发送二维码验证     @RequestMapping(value = "sendCode",method = RequestMethod.GET)     @ResponseBody     public Map<String,Object> sendCode(String email) throws IOException, WriterException {         String title="XXX资讯后台管理系统";         String code= RandomUtil.getStringRandom();         String content="欢迎注册本平台,你的验证码是:"+code;         TwoDimensionCode.QRCodeTest qrCodeTest = new TwoDimensionCode.QRCodeTest();         qrCodeTest.testEncodeToEmail(content,300,300,"piao","png",title,email);         Map<String,Object> map=new HashMap<>();         map.put("checkCode",code);         return map;     }    //检查邮箱是否重复    @RequestMapping(value = "/checkEmail",method = RequestMethod.GET)    @ResponseBody    public Map<String,Object> checkEmail(String email){        Map<String,Object> map=new HashMap<>();        map.put("flag","邮箱没有重复!");        return map;    }    //批量删除    @RequestMapping("batchUser")    public ModelAndView batchUser(ModelAndView modelAndView,String ids){        iUserService.batchUser(ids);        modelAndView.setViewName("show");        return modelAndView;    }}


步骤四:

<%--  Created by IntelliJ IDEA.  User: Administrator  Date: 2017/9/21/021  Time: 15:31  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" isELIgnored="false" %><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;%><html><head>    <title>Title</title>    <script src="/resources/jquery/jquery-1.8.3.js"></script>    <script>        function sendCode() {            var email=$("#eml").val();            $.ajax({                type: "get",                url: "/user/sendCode.action",                data: {email:email},                dataType: "json",                success: function (data) {                    alert("验证码已发送到你的邮箱");                    $("#code2").val(data.code);                },                error: function () {                    alert("系统繁忙,请稍后重试");                }            });        }    </script></head><body><h2>首页</h2><form action="/user/registerUser.action" enctype="multipart/form-data" method="post">    上传图片:<input type="file" name="file" /><br>    用户邮箱:<input type="text" name="email" id="eml"/><br>    用户Miami:<input type="text" name="password"/><br>    用户余额:<input type="text" name="balance" /><br>    <input type="button" value="获取验证码" onclick="sendCode()"/>    <input type="submit" value="注册" /></form></body></html>