java实现邮箱发送邮件功能

1.创建MailAuthenticator类,这个类的作用是封装用户名和密码的

package com.sinosoft.antifraud.common.utils;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
 * 发件人账号和密码
 * @author lyl
 *
 */
public class MailAuthenticator extends   Authenticator{

    public static String USERNAME = "";
    public static String PASSWORD = "";

    public MailAuthenticator() {
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(USERNAME, PASSWORD);
    }

}

2.创建MailOperation类,这个类是提供发送操作类的

package com.sinosoft.antifraud.common.utils;

import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Authenticator;
				  
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;/**
/* 邮件发送操作类
 * 
 * @author lyl
 * 
 */
public class MailOperation {
    /**
     * 发送邮件
     * @param user 发件人邮箱
     * @param password 授权码(注意不是邮箱登录密码)
     * @param host 
     * @param from 发件人
     * @param to 接收者邮箱
     * @param subject 邮件主题
     * @param content 邮件内容
     * @return success 发送成功 failure 发送失败
     * @throws Exception
     */
    public String sendMail(String user, String password, String host,
            String from, String to, String subject, String content)
            throws Exception {
        if (to != null){
            Properties props = System.getProperties();
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true");
            MailAuthenticator auth = new MailAuthenticator();
            MailAuthenticator.USERNAME = user;
            MailAuthenticator.PASSWORD = password;
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);
            try {
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                if (!to.trim().equals(""))
                    message.addRecipient(Message.RecipientType.TO,
                            new InternetAddress(to.trim()));
                message.setSubject(subject);
                MimeBodyPart mbp1 = new MimeBodyPart(); // 正文
                mbp1.setContent(content, "text/html;charset=utf-8");
                Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
                mp.addBodyPart(mbp1);
                message.setContent(mp);
                message.setSentDate(new Date());
                message.saveChanges();
                Transport trans = session.getTransport("smtp");
                trans.send(message);
            } catch (Exception e){
                e.printStackTrace();
                return "failure";
            }
            return "success";
        }else{            
            return "failure";
        }
    }
}

3.测试类,验证是否生效

package com.sinosoft.antifraud.modules.action.as.claimcase.test;

import com.sinosoft.antifraud.common.utils.MailOperation;

public class MailTest {
	public static void main(String[] args) {

        MailOperation operation = new MailOperation();
        String user = "**********@163.com";//邮箱地址
        String MailPassword = "******";//邮箱授权码
        String host = "smtp.163.com";//SMTP服务器主机地址
        String from = "***********@163.com";//邮箱地址,与上边的user是同一个
        String to = "*************";// 收件人的邮箱
        String subject = "nihao";//输入邮件主题
        //邮箱内容
        StringBuffer sb = new StringBuffer();
        sb.append("<!DOCTYPE><div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'>"
        		+ "<span style='font-weight:bold;'>温馨提示:</span>"
        		+ "<div style='width:950px;font-family:arial;'>"
        		+ "欢迎使用数据服务平台,尊敬的用户"
        		+ "<br/>"
        		+ "<h2 style='color:green'>+"
        		+ "smUserDto.getUserRealName()"
        		+ "</h2>"
        		+ "数据服务平台业务权限已为您开通,有效期为"
        		+ "<h2 style='color:green'>"
        		+ "format.format(startDate)+" + "至" + "+format.format(endDate)。"
        		+ "</h2>"
				+ "登录名:"
				+ "<h2 style='color:green'>"
				+ "+smUserDto.getUserName(),"
				+ "</h2>"
				+ "密码:"
				+ "<h2 style='color:green'>"
				+ "password"
				+ "</h2>"
				+ "<br/>"
				+ "本邮件由系统自动发出,请勿回复。<br/>"
				+ "感谢您的使用。"
				+ "<br/>"
				+ "中科软科技股份有限公司"
				+ "</div>"
				+ "</div>");
        try {
            String res = operation.sendMail(user, MailPassword, host, from, to,
                    subject, sb.toString());
            System.out.println(res);
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
}

4.邮箱展示,已经生效

猜你喜欢

转载自blog.csdn.net/qq_39361518/article/details/81453769