import java.util.Properties;
/**
* @author FJ
* @createTime 2016年1月6日 下午3:42:49
* 类说明,自行编写
*/
public class MailSenderInfo {
private int id;
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String[] attachFileNames;
//创建人
private String createuser;
//创建时间
private String createtime;
//修改人
private String updateuser;
//修改时间
private String updatetime;
/**
* 获得邮件会话属性
*/
public Properties getProperties(){
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
public String getCreateuser() {
return createuser;
}
public void setCreateuser(String createuser) {
this.createuser = createuser;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getUpdateuser() {
return updateuser;
}
public void setUpdateuser(String updateuser) {
this.updateuser = updateuser;
}
public String getUpdatetime() {
return updatetime;
}
public void setUpdatetime(String updatetime) {
this.updatetime = updatetime;
}
}
package com.ott.Utils;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import org.apache.log4j.Logger;
import com.ott.beans.MailSenderInfo;
import com.ott.beans.MyAuthenticator;
import com.ott.beans.SysUser;
import com.ott.controller.CDNContentController;
/**
* @author FJ
* @createTime 2016年1月6日 下午3:42:49
* 类说明,自行编写
*/
public class MailUtils {
private static Logger logger = Logger.getLogger(CDNContentController.class);
public static void main(String[] args) {
}
/**
* @param time 1:一审;2:二审
* @param contract 合同
* @return
*/
public static Map<String, Object> contractReviewSend(String verifyflag,MailSenderInfo mailInfo,List<SysUser> users,Map<String, Object> contractMap){
Map<String, Object> map =new HashMap<String, Object>();
String fverify_usernos="";
String tverify_usernos="";
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DecimalFormat df = new DecimalFormat("######0.00");
try {
if(verifyflag.equals("1")){
mailInfo.setSubject("合同一审提醒"+format.format(new Date()));
for(SysUser user:users){
fverify_usernos=user.getUserno()+","+fverify_usernos;
}
map.put("fverify_usernos", fverify_usernos.substring(0,fverify_usernos.length()-1));
}else{
mailInfo.setSubject("合同二审提醒"+format.format(new Date()));
for(SysUser user:users){
tverify_usernos=user.getUserno()+","+tverify_usernos;
}
map.put("tverify_usernos", tverify_usernos.substring(0,tverify_usernos.length()-1));
}
String content = "<table><tr><td><div>"
+ "<p>"+"您有需要审核的合同:"+"</p></div></td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="影吧名称:";
content +="</td><td>";
content +=contractMap.get("cinema_name");
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="合同编号:";
content +="</td><td>";
content +=contractMap.get("contract_code");
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="合同名称:";
content +="</td><td>";
content +=contractMap.get("contract_name");
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="合同类型:";
content +="</td><td>";
if(String.valueOf(contractMap.get("contract_type")).equals("0")){
content +="普通合同";
}else if(String.valueOf(contractMap.get("contract_type")).equals("1")){
content +="有效场次合同";
}
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="合同有效期:";
content +="</td><td>";
content +=contractMap.get("validstartdate")+"~"+contractMap.get("expiredate");
content +="</td></tr>";
if(String.valueOf(contractMap.get("contract_type")).equals("1")){
content +="<tr><td style ='padding-left:20px;'>";
content +="合同有效场次(次):";
content +="</td><td>";
content +=contractMap.get("playtime");
content +="</td></tr>";
}
content +="<tr><td style ='padding-left:20px;'>";
content +="合同金额(元):";
content +="</td><td>";
content +=df.format(Double.parseDouble(String.valueOf(contractMap.get("contract_amount"))));
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="订单下发方式:";
content +="</td><td>";
if(Integer.parseInt(String.valueOf(contractMap.get("orderflag")))==1){
content +="自动下发";
}else{
content +="手动下发";
}
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="服务器数量(台):";
content +="</td><td>";
content +=contractMap.get("server_sum");
content +="</td></tr>";
content +="<tr><td style ='padding-left:20px;'>";
content +="播放器数量(台):";
content +="</td><td>";
content +=contractMap.get("terminal_sum");
content +="</td></tr>";
if(!contractMap.get("contract_describe").equals("") && contractMap.get("contract_describe")!=null){
content +="<tr><td style ='padding-left:20px;'>";
content +="描述:";
content +="</td><td>";
content +=contractMap.get("contract_describe");
content +="</td></tr>";
}
content +="<tr><td style ='padding-left:20px;'>";
content +="产品金额(元):";
content +="</td><td>";
content +="(服务器价格)"+df.format(Double.parseDouble(String.valueOf(contractMap.get("serverPrice"))))+"+"+"(播放器价格)"+df.format(Double.parseDouble(String.valueOf(contractMap.get("terminalPrice"))))+"+"+"(产品包价格)"+df.format(Double.parseDouble(String.valueOf(contractMap.get("package_price"))))+"="
+String.valueOf(df.format(Double.parseDouble(String.valueOf(contractMap.get("serverPrice")))+Double.parseDouble(String.valueOf(contractMap.get("terminalPrice")))+Double.parseDouble(String.valueOf(contractMap.get("package_price")))));
content +="</td></tr>";
content +="<tr><td><div>"
+ "<p>"+"谢谢!"+"</p></div></td></tr></table>";
String toAddress="";
for(SysUser user:users){
if (user.getEmail()==null) {
System.out.println(user.getUsername()+"邮箱为空");
}
toAddress=user.getEmail()+","+toAddress;
}
mailInfo.setToAddress(toAddress.substring(0,toAddress.length()-1));
mailInfo.setContent(content);
boolean result=send(mailInfo);
if(result==true){
map.put("result",true);
map.put("contract_code", contractMap.get("contract_code"));
map.put("contract_name", contractMap.get("contract_name"));
map.put("sendmail_date", new Date());
map.put("mail_content", content);
return map;
}
map.put("result", false);
return map;
} catch (Exception e) {
logger.error("合同审核发送mail error", e);
map.put("result", false);
return map;
}
}
/**
* @param mailInfo 邮件配置信息
* @return
*/
public static boolean send(MailSenderInfo mailInfo) {
try {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
pro.setProperty("mail.smtp.auth", "true");
pro.put("mail.debug", "true");
if (mailInfo.isValidate()) {
// 如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
String toAddress=mailInfo.getToAddress();
if (toAddress!= null && toAddress.trim().length() > 0) {
String[] arr = toAddress.split(",");
int receiverCount = arr.length;
if (receiverCount > 0) {
InternetAddress[] address = new InternetAddress[receiverCount];
for (int i = 0; i < receiverCount; i++) {
address[i] = new InternetAddress(arr[i]);
}
mailMessage.addRecipients(Message.RecipientType.TO, address);
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
mailMessage.setContent(mailInfo.getContent(), "text/html;charset=UTF-8");
// 发送邮件
//Transport.send(mailMessage);
Transport transport = sendMailSession.getTransport("smtp");
transport.connect(mailInfo.getMailServerHost(), mailInfo.getUserName(), mailInfo.getPassword());
transport.sendMessage(mailMessage, mailMessage.getRecipients(RecipientType.TO));
System.out.println("message yes");
return true;
} else {
System.out.println("None receiver!");
return false;
}
} else {
System.out.println("None receiver!");
return false;
}
} catch (MessagingException ex) {
logger.error("发送邮件error", ex);
return false;
}
}
}
提示:如果邮件在短期内发送多了,就会被视为垃圾邮件,于是在一段时间内不能发送邮件,邮箱必须开始SMTP服务,随后会有一个随机第三方登录密码发送给你,只有这个密码才能在第三方软件登录你的邮箱,每一个账号只能申请三次