- package util;
- import java.io.InputStream;
- import java.util.Properties;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.mail.BodyPart;
- import javax.mail.Message;
- 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;
- /***
- * Send edm to mail
- */
- public class EdmMail {
- private static String MAIL_TITLE = null;
- private String mailServerHost = "";
- private String fromAddress = ""; //发送人邮箱地址
- private String toAddress = ""; //收件人邮箱地址
- private MimeMessage mimemsg; //Mime邮件对象
- private Session session; //邮件会话对象
- private Properties properties; //系统属性
- private Multipart part; //Multipart对象:邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
- private String username = ""; //设置smtp的用户名
- private String password = ""; //设置smtp的密码
- private String profile = "search.properties";
- private EdmMail(){
- getValues();
- setSmtpHost(mailServerHost);
- getMailSession();
- }
- public EdmMail(String sub){
- this();
- MAIL_TITLE = sub;
- }
- private boolean getValues(){
- Properties proties = null;
- InputStream input = null;
- try {
- input = EdmMail.class.getClassLoader().getResourceAsStream(profile);
- proties = new Properties();
- proties.load(input);
- mailServerHost = proties.getProperty("MAIL_HOST");
- fromAddress = proties.getProperty("MAIL_FROM");
- username = proties.getProperty("MAIL_USERNAME");
- password = proties.getProperty("MAIL_PASSWORD");
- toAddress = proties.getProperty("MAILTO_LIST");
- return true;
- } catch (Exception e) {
- System.out.println("读取配置文件出错!"+e);
- return false;
- }
- }
- /***
- * 设置SMTP主机
- */
- private void setSmtpHost(String mailhost){
- if(properties == null){
- properties = System.getProperties(); //获得系统属性
- }
- properties.setProperty("mail.smtp.host", mailhost);
- }
- /***
- * 获得邮件会话对象
- * 创建MimeMessage对象
- */
- private boolean getMailSession(){
- try {
- session = Session.getDefaultInstance(properties,null);
- } catch (Exception e) {
- System.out.println("获取邮件会话对象出错,原因:"+e);
- return false;
- }
- try {
- mimemsg = new MimeMessage(session);
- part = new MimeMultipart();
- return true;
- } catch (Exception e) {
- System.out.println("创建Mime邮件对象出错,原因:"+e);
- return false;
- }
- }
- /***
- * 设置smtp身份认证
- * mail.smtp.auth = true
- */
- private void setSmtpAuth(boolean bool){
- if(properties == null){
- properties = System.getProperties(); //获得系统属性
- }
- if(bool){
- properties.put("mail.smtp.auth", "true");
- }else{
- properties.put("mail.smtp.auth", "false");
- }
- }
- /***
- * 设置邮件的主题
- */
- private boolean setMailSub(String mailsubject){
- try {
- mimemsg.setSubject(mailsubject, "GBK");
- return true;
- } catch (Exception e) {
- System.out.println("设置邮件标题出错,原因:"+e);
- return false;
- }
- }
- /***
- * 设置邮件体格式
- */
- private boolean setMailBody(String mailBody){
- BodyPart bdyPart = new MimeBodyPart();
- try {
- bdyPart.setContent(mailBody, "text/html;charset=GBK");
- part.addBodyPart(bdyPart);
- return true;
- } catch (Exception e) {
- System.out.println("设置邮件体格式出错,原因:"+e);
- return false;
- }
- }
- /***
- * 添加邮件附件
- */
- private boolean addAttach(String filePath){
- BodyPart bdy = new MimeBodyPart();
- try {
- FileDataSource dataSource = new FileDataSource(filePath);
- bdy.setDataHandler(new DataHandler(dataSource));
- bdy.setFileName(dataSource.getName()); //设置附件名
- part.addBodyPart(bdy);
- return true;
- } catch (Exception e) {
- System.out.println("添加附件:"+filePath+"出错,原因:"+e);
- return false;
- }
- }
- /***
- * 设置邮件发送人
- */
- private boolean setMailFrom(String from){
- try {
- mimemsg.setFrom(new InternetAddress(from));
- return true;
- } catch (Exception e) {
- System.out.println("设置邮件发送人:"+from+"出错,原因:"+e);
- return false;
- }
- }
- /***
- * 设置邮件接收人
- */
- private boolean setMailTo(String mailto){
- if(mailto == null){
- return false;
- }
- try {
- mimemsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailto));
- return true;
- }catch (Exception e) {
- System.out.println("设置邮件接收人:"+mailto+"出错,原因:"+e);
- return false;
- }
- }
- /***
- * 发送邮件
- */
- private boolean sendout(){
- try {
- mimemsg.setContent(part);
- mimemsg.saveChanges();
- System.out.println("开始发送邮件......");
- Session mailSession = Session.getInstance(properties, null);
- Transport tsport = mailSession.getTransport("smtp");
- tsport.connect((String)properties.get("mail.smtp.host"), username, password);
- tsport.sendMessage(mimemsg, mimemsg.getRecipients(Message.RecipientType.TO));
- tsport.close();
- System.out.println("发送邮件成功!");
- return true;
- } catch (Exception e) {
- System.out.println("发送邮件出错原因:"+e);
- return false;
- }
- }
- //
- public void sendMail(String fileAttach){
- //拼接整个邮件的内容
- StringBuffer content = new StringBuffer();
- //头部
- content.append("<html>");
- content.append("<head><META content='text/html; charset=gbk' http-equiv=Content-Type>");
- content.append("<META name=GENERATOR content='MSHTML 8.00.6001.18702'>");
- content.append("<style type='text/CSS'>");
- content.append(".STYLE1 {color: #000000}");
- content.append("TABLE {FONT-SIZE: 12px; COLOR: #444444;LINE-HEIGHT: 14px; FONT-FAMILY: '宋体', 'Arial'; TEXT-DECORATION: none;}");
- content.append(".STYLE3 { font-size: 13px;color: #FD9800; font-weight: bold;}");
- content.append("</style>");
- content.append("</head>");
- //显示邮件内容
- content.append("<body>");
- content.append("<table width='749px' align='left'>");
- content.append("<tr><td width='749' height='10px'></td></tr>");
- content.append("<tr><td><p align='left'><font size=2>for test!</font></p></td></tr>");
- content.append("</table>");
- //content.append("");
- content.append("</body>");
- content.append("</html>");
- System.out.println("content********"+content);
- setSmtpAuth(false);
- if(setMailSub(MAIL_TITLE) == false){
- return;
- }
- if(setMailBody(content.toString()) == false){
- return;
- }
- if(setMailTo(toAddress) == false){
- return;
- }
- if(setMailFrom(fromAddress) == false){
- return;
- }
- if(addAttach(fileAttach) == false){
- return;
- }
- if(sendout()== false){
- return;
- }
- }
- public static void main(String[] args) {
- EdmMail m = new EdmMail("test");
- //附件的位置
- m.sendMail("D:\\workspace\\test.xls");
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1708201513469.html
来源: http://www.codesnippet.cn/detail/1708201513469.html