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

我点击回复,

这里展示了用户留言的信息,我填写我想回复的留言,点击提交即可,会给留言的那个用户的邮箱发送一封邮件。

这里面有留言的内容,留言标题,回复内容,还有发件人信息标题的设置,文章标题的设置等。
这也就是实现了邮件的发送功能。
二 实现代码
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;
}
}
}
这样就实现了邮件的发送功能了。
网友评论