美文网首页技术干货程序员
java如何实现邮件发送功能

java如何实现邮件发送功能

作者: 程序员小哥哥 | 来源:发表于2017-07-26 22:02 被阅读0次

一 需求:

前台注册用户对文章有自己的看法,往往会评论,这时做为管理员应该可以给予用户回复,当然,对不好的言论,也是可以删除的,这就是留言板管理功能。
前台

email1.png
我点击回复,
email2.png
这里展示了用户留言的信息,我填写我想回复的留言,点击提交即可,会给留言的那个用户的邮箱发送一封邮件。
email3.png
这里面有留言的内容,留言标题,回复内容,还有发件人信息标题的设置,文章标题的设置等。
这也就是实现了邮件的发送功能。

二 实现代码

Mail.Java(邮件的实体类)

package com.jetsen.model;  
  
  
import java.io.Serializable;    
  
/**   
 * Mail属性实体   
 *    
 * @author shadow   
 *    
 */    
@SuppressWarnings("serial")    
public class Mail implements Serializable {    
    
    public static final String ENCODEING = "UTF-8";    
    
    private String host; // 服务器地址    
    
    private String sender; // 发件人的邮箱    
    
    private String receiver; // 收件人的邮箱    
    
    private String name; // 发件人昵称    
    
    private String username; // 账号    
    
    private String password; // 密码    
    
    private String subject; // 主题    
    
    private String message; // 信息(支持HTML)    
    
    public String getHost() {    
        return host;    
    }    
    
    public void setHost(String host) {    
        this.host = host;    
    }    
    
    public String getSender() {    
        return sender;    
    }    
    
    public void setSender(String sender) {    
        this.sender = sender;    
    }    
    
    public String getReceiver() {    
        return receiver;    
    }    
    
    public void setReceiver(String receiver) {    
        this.receiver = receiver;    
    }    
    
    public String getName() {    
        return name;    
    }    
    
    public void setName(String name) {    
        this.name = name;    
    }    
    
    public String getUsername() {    
        return username;    
    }    
    
    public void setUsername(String username) {    
        this.username = username;    
    }    
    
    public String getPassword() {    
        return password;    
    }    
    
    public void setPassword(String password) {    
        this.password = password;    
    }    
    
    public String getSubject() {    
        return subject;    
    }    
    
    public void setSubject(String subject) {    
        this.subject = subject;    
    }    
    
    public String getMessage() {    
        return message;    
    }    
    
    public void setMessage(String message) {    
        this.message = message;    
    }    
    
}    

FapController:

 @RequestMapping("/save")  
public String save(Faq faqJsp, String query_all_like, String queryTitle, String queryIsbn, String queryAuthor,  
        String queryOrderBy, String queryOrderType,Integer pageNo, Integer pageSize, HttpServletRequest request,  
        RedirectAttributes redirectAttributes) {  
      
    // 参数不对,容易引起400错误  
    boolean isNewBook = true;  
    Long faq_id = faqJsp.getId();  
    // 保存当前登录名(与权限框架结合使用)  
    // book.setId(null);  
    Faq faqSave = null;  
    if (faq_id == null) {  
        faqJsp.setPubdate(new Date());  
        faqSave = faqJsp;  
          
    } else {  
        isNewBook = false;  
        Faq bookPersistence = faqService.getFaq(faq_id);  
        if(bookPersistence == faqJsp){  
            faqSave = faqJsp;  
        }else{  
            String loginName = (String) request.getSession().getAttribute("loginname");  
            String createUser = bookPersistence.getLoginname();  
            faqJsp.setLoginname(createUser);  
            faqJsp.setAnswerUser(loginName);  
            faqJsp.setAnswerTime(new Date());  
            faqJsp.setAuditStatus("1");  
            //这里开始email的设置  
            Mail mail = new Mail();  
            mail.setHost("smtp.163.com"); // 设置邮件服务器,如果不用163的,自己找找看相关的    
            mail.setSender(Constant.EMAIL_NAME);    
            mail.setName("复合出版数据传递平台");  
            mail.setReceiver(faqJsp.getEmail());     
            mail.setUsername(Constant.EMAIL_NAME);   
            mail.setPassword(Constant.EMAIL_PWD);   
            mail.setSubject("您的留言已被回复(复合出版数据传递平台)");    
            String htmlMessage = "<center><b>"+faqJsp.getTitle()+"</b></center><b>您的留言内容</b>:<br><span style='margin-left:50px;'>"+faqJsp.getContent()+"<span><br/><b>回复的留言内容</b>:<br/><span style='margin-left:50px;'>"+faqJsp.getAnswerContent()+"</span>";  
            mail.setMessage(htmlMessage);    
            new MailUtil().send(mail);    
            faqJsp.setPubdate(new Date());  
            faqSave = (Faq) WebForm.form2Obj(bookPersistence, faqJsp);  
              
            //留言板留言日志  
            String operate = "信息发布留言板:"+ faqSave.getTitle();  
            LogInfo logInfo = BaseUtil.addOperateLog(request, operate);  
            if(null != logInfo){  
                sysLogInfoService.addLogInfo(logInfo);  
            }  
        }  
    }  
      
    faqSave = faqService.updateFaq(faqSave);  
    redirectAttributes.addFlashAttribute("message", "保存成功");  
      
    // " Flash attributes 在对请求的重定向生效之前被临时存储(通常是在session)中" 看到这个就感觉不好;  
    addAttibuteForQuery(null, redirectAttributes, query_all_like, queryOrderBy, queryOrderType, pageNo, pageSize);  
    return "redirect:/faq/list?operate=reAtt";  
}  

这里Constant我写成了常量,读配置文件里的邮箱地址和密码,这里根据的实际邮箱地址设置即可(设置成163邮箱,QQ邮箱有失败的情况)
MailUtil:

package com.jetsen.common.util;  
  
  
import org.apache.commons.mail.HtmlEmail;  
  
import com.jetsen.model.Mail;  
  
  
/**   
 * 邮件发送工具实现类   
 *    
 * @author shadow   
 * @create 2013/07/12   
 */    
public class MailUtil {    
    
    
    public boolean send(Mail mail) {    
        // 发送email    
        HtmlEmail email = new HtmlEmail();    
        try {    
            // 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"    
            email.setHostName(mail.getHost());    
            // 字符编码集的设置    
            email.setCharset(Mail.ENCODEING);    
            // 收件人的邮箱    
            email.addTo(mail.getReceiver());    
            // 发送人的邮箱    
            email.setFrom(mail.getSender(), mail.getName());    
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码    
            email.setAuthentication(mail.getUsername(), mail.getPassword());    
            // 要发送的邮件主题    
            email.setSubject(mail.getSubject());    
            // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签    
            email.setMsg(mail.getMessage());    
            // 发送    
            email.send();   
            System.out.println("OK");  
            return true;    
        } catch (Exception e) {  
            System.out.println("No");  
            e.printStackTrace();  
            return false;    
        }    
    }    
    
}    

这样就实现了邮件的发送功能了。

相关文章

  • java如何实现邮件发送功能

    一 需求: 前台注册用户对文章有自己的看法,往往会评论,这时做为管理员应该可以给予用户回复,当然,对不好的言论,也...

  • java发送邮件(附件可选)

    java实现发送邮件,可以带附件发送。。。。。。 pom.xml: java代码:

  • 邮件发送注册验证码

    如何实现网站注册验证码邮件自动发送功能?如何接入邮件API接口?免费使用 网站通过接入邮件验证码接口(邮件api接...

  • java发送邮件

    使用java mail forAndroid实现发送邮件 1.邮件发送协议smtp协议 smtp用户连接上邮件服务...

  • Python库-zmail

    zmail可实现发送邮件与获取你邮件信息的功能

  • java发送邮件功能

    一、问题 日常业务中,我们需要使用发送邮件的形式提醒运营者,突发的问题或者数据汇总。 二、方案 1、采用163邮箱...

  • 如何实现发送邮件的功能

    发送电邮的功能,如何实现? 以购物网站为例,当消费者下单后,系统会自动发封订单通知的电邮给消费者,说已经收到消费者...

  • Springboot 快速实现邮件发送功能

    本文主要介绍如何使用SpringBoot自带的spring-boot-starter-mail实现邮件发送功能(支...

  • nodejs邮件发送功能

    借助nodemailer能快速实现发送邮件的功能

  • Java实现邮箱发送邮件验证功能

    本文是说明springboot+maven完成邮箱发送验证功能。 参考:https://www.cnblogs.c...

网友评论

    本文标题:java如何实现邮件发送功能

    本文链接:https://www.haomeiwen.com/subject/bafakxtx.html