📄 mailer.java
字号:
/*
* 邮件信息配置类
*/
package com.wondtech.mail;
/**
* @author Administrator
*/
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.Logger;
import com.wondtech.framework.util.StringHelper;
public class Mailer
{
private static Logger logger = Logger.getLogger(Mailer.class);
private MimeMessage mimeMsg; // MIME邮件对象
private Session session; // 邮件会话对象
private Properties props; // 系统属性
private String username = ""; // smtp验证用户名与密码
private String password = "";
private Multipart mp; // Multipart对象,邮件内容,标题,附件等內容均添加到其中后再生成MimeMessage对象
public Mailer()
{
setSmtpHost("mail.sms2job.com");// 指定邮件服务器地址
createMimeMessage();
}
public Mailer(String smtp)
{
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName
* String
*/
public void setSmtpHost(String hostName)
{
logger.info("设置系统属性:mail.smtp.host = " + hostName);
if (props == null)
{
props = System.getProperties(); // 获取系统属性
}
props.put("mail.smtp.host", hostName); // 设置SMTP主机
}
/**
* @return boolean
*/
public boolean createMimeMessage()
{
try
{
logger.info("准备获取邮件会话对象?!");
session = Session.getDefaultInstance(props, null);
}
catch (Exception e)
{
logger.error("获取邮件会话对象出错?!" + e);
return false;
}
logger.info("准备创建MIME邮件对象?!");
try
{
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
}
catch (Exception e)
{
logger.error("创建MIME邮件对象失败?!" + e);
return false;
}
}
/**
* @param need
* boolean
*/
public void setNeedAuth(boolean need)
{
logger.info("设置SMTP身份验证:mail.smtp.auth = " + need);
if (props == null)
{
props = System.getProperties();
}
if (need)
{
props.put("mail.smtp.auth", "true");
}
else
{
props.put("mail.smtp.auth", "false");
}
}
/**
* @param name
* String
* @param pass
* String
*/
public void setNamePass(String name, String pass)
{
username = name;
password = pass;
}
/**
* @param mailSubject
* String
* @return boolean
*/
public boolean setSubject(String mailSubject)
{
logger.info("设置邮件主题?!");
mailSubject = StringHelper.toGBK(mailSubject);
try
{
mimeMsg.setSubject(mailSubject);
return true;
}
catch (Exception e)
{
logger.error("设置邮件主题出错?!");
return false;
}
}
/**
* @param mailBody
* String
*/
public boolean setBody(String mailBody, boolean isHtml)
{
mailBody = StringHelper.toGBK(mailBody);
try
{
BodyPart bp = new MimeBodyPart();
if (isHtml)
{
bp.setContent("<META http-equiv=Content-Type content=text/html; charset=GBK>" + mailBody,
"text/html; charset=GBK");
}
else
{
bp.setText(mailBody);
}
mp.addBodyPart(bp);
return true;
}
catch (Exception e)
{
logger.error("设置邮件正文出错?!" + e);
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean addFileAffix(String filename)
{
logger.info("增加邮件附件?!" + filename);
try
{
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
}
catch (Exception e)
{
logger.error("增加邮件附件?!" + filename + "出错?!" + e);
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setFrom(String from)
{
logger.info("设置发信人!");
try
{
mimeMsg.setFrom(new InternetAddress(from));
return true;
}
catch (Exception e)
{
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setTo(String to)
{
if (to == null)
{
return false;
}
try
{
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
}
catch (Exception e)
{
return false;
}
}
public boolean addTo(String to)
{
if (to == null)
return false;
try
{
mimeMsg.addRecipients(Message.RecipientType.TO, to);
return true;
}
catch (MessagingException e)
{
e.printStackTrace();
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public boolean setCopyTo(String copyto)
{
if (copyto == null)
{
return false;
}
try
{
mimeMsg.setRecipients(Message.RecipientType.CC, (Address[])InternetAddress.parse(copyto));
return true;
}
catch (Exception e)
{
return false;
}
}
public boolean addCopyTo(String to)
{
if (to == null)
{
return false;
}
try
{
mimeMsg.addRecipients(Message.RecipientType.CC, to);
return true;
}
catch (MessagingException e)
{
e.printStackTrace();
return false;
}
}
/**
* @param name
* String
* @param pass
* String
*/
public void send() throws Exception
{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
logger.info("正在发发送邮件......");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"), username, password);
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
// transport.send(mimeMsg);
logger.info("邮件发送成功!");
transport.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -