jeffery_12 2017-12-01 02:25 采纳率: 0%
浏览 3685

ssm框架下前后台交互实现邮箱发送功能

工具类

 package com.arvato.tools;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.util.MailSSLSocketFactory;

public class EmailUtil {

    //测试(OK)
  /* public static void main(String[] args){
          try {
            sendEmail("13064845825@163.com", "好啊", "ssssssss");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }*/

  public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{
    Properties props = new Properties();

    // 开启debug调试
    props.setProperty("mail.debug", "true");
    // 发送服务器需要身份验证
    props.setProperty("mail.smtp.auth", "true");
    // 设置邮件服务器主机名
    props.setProperty("mail.host", "smtp.qq.com");
    // 发送邮件协议名称
    props.setProperty("mail.transport.protocol", "smtp");

    /**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    props.put("mail.smtp.ssl.enable", "true");
    props.put("mail.smtp.ssl.socketFactory", sf);

    //创建会话
    Session session = Session.getInstance(props);

    //发送的消息,基于观察者模式进行设计的
    Message msg = new MimeMessage(session);
    msg.setSubject(emailTitle);
    //使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错
    StringBuilder builder = new StringBuilder();
    builder.append("\n"+emailContent);
    builder.append("\n时间 " + new Date());
    msg.setText(builder.toString());
    msg.setFrom(new InternetAddress("970742915@qq.com"));

    Transport transport = session.getTransport();
    transport.connect("smtp.qq.com", "970742915@qq.com", "********");
    //发送消息
    transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) });
    transport.close();
  } 
}

Controller中代码

 @Controller
public class SendEmailAction {
    /**
     * 发送邮件
     * @return
     * @throws Exception
     */

    @RequestMapping(value="/sendEmail.json" , method=RequestMethod.POST,produces="application/json;charset=UTF-8")
    @ResponseBody
    public Object sendEmail(HttpServletRequest request)throws Exception, ClassNotFoundException {   
      Map<String,String> map = new HashMap<String,String>();
      String msg = "ok";   //发送状态
      String toEMAIL = "13064845825@163.com"; //对方邮箱
      String TITLE = "成绩单";          //标题
      String CONTENT ="你这次的考试成绩很棒";        //内容
      EmailUtil.sendEmail(toEMAIL, TITLE, CONTENT);
      map.put("result", msg);
      return map;
    }
}

js如下

 function goSendEmail(){
    parent.layer.confirm('您确定要发送邮件吗?', {
        btn: ['确定','取消'], //按钮
        shade: false //不显示遮罩
    }, function(){
    $.ajax({
        type: "POST",
        title: '推送邮箱',
        url: ctx+ '/sendEmail.json?',
        data: {CONTENT:CONTENT,TITLE:TITLE,CONTENT:CONTENT},
        dataType:'json',
        //beforeSend: validateData,
        cache: false,
        success: function(data){
            if("ok" == data.result){
                $("#msg").tips({
                    side:3,
                    msg:'发送成功!',
                    bg:'#68B500',
                    time:5
                });
            }else{
                $("#msg").tips({
                    side:3,
                    msg:'发送失败!',
                    bg:'#68B500',
                    time:5
                });
            }

        }
    });
    }, function(){
        parent.layer.msg("已取消", {icon: 1});
        return false;
    });
    }

前台代码段

 <button class="btn btn-success btn-primary" onclick="goSendEmail()">
                    <i class="fa fa-envelope-o"></i> 电子邮箱推送
                </button>

现在前台无法访问到后台数据
请问我这个问题出在哪?前后台交互这段不懂,求大神答疑,谢谢!
这个工具类没有问题已测试,可以正常发送的

  • 写回答

1条回答 默认 最新

  • 孤独不是寂寞 2017-12-01 03:03
    关注

    问题是我都不知道你代码出现了什么问题

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!