• java发送 email


    public class EmailUtils implements IAction
    {
        private static Logger logger = Logger.getLogger(EmailUtils.class.getName());
        
        private static EmailUtils instance;
        //邮件服务器
        private static String EMAIL_HOST = "mail.host";
        //邮件简单协议
        private static String MAIL_TRANSPORT_PROTOCOL = "mail.transport.protocol";
        //是否开启验证,必须能为true
        private static boolean MAIL_SMTP_AUTH_VALUE = true;
        //是否开启验证
        private static String MAIL_SMTP_AUTH = "mail.smtp.auth";
        
        private static String EAIL_FORMATTER = "text/html;charset=utf-8";
        
        private static String MAIL_SMTP_PORT = "mail.smtp.port";
        
        Map<String,String> map = null;
        List<String> receiverList;
    
        
        public static EmailUtils getInstance() throws BaseAppException {
            if(null == instance){
                instance = new EmailUtils();
            }
            return instance;
        }
        
        public EmailUtils() throws BaseAppException
        {
            logger.info("get email info   begain.....");
            //初始化邮件系统参数系统
            Base base = new Base(new DynamicDict().getConnection());
            String sql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE  PARA_CATEGORY =15 ORDER BY SEQ ASC";
            DynamicDict dict = base.query("get email info", "EMAIL", sql,new String[]{});
            map = new HashMap<String,String>();
            
            
            
    //        properties = new Properties();
            if(dict.getCount("EMAIL")>0){
                for (int i = 0; i < dict.getCount("EMAIL"); i++)
                {
                    Map<String,String> map_value = new HashMap<String,String>();
                    map_value = (Map<String, String>)dict.getValueByName("EMAIL",i);
                    map.put(map_value.get("PARA_CODE"), map_value.get("PARA_VALUE"));
                }
            }
            
            //获取邮件的接受者
            String rSql = "SELECT PARA_SUB_CODE,PARA_VALUE FROM TWF_SYSTEMPARAMETER WHERE  PARA_CATEGORY =16 ORDER BY SEQ ASC";
            //Base rBase = new Base(new DynamicDict().getConnection());
            receiverList = new LinkedList<String>();
            DynamicDict receiverDict = base.query("get email receiver", "EMAIL_RECEIVER", rSql,new String[]{});
            if(receiverDict.getCount("EMAIL_RECEIVER")>0){
                for (int i = 0; i < receiverDict.getCount("EMAIL_RECEIVER"); i++)
                {
                    Map<String,String> map_value = new HashMap<String,String>();
                    map_value = (Map<String, String>)receiverDict.getValueByName("EMAIL_RECEIVER",i);
                    receiverList.add(map_value.get("PARA_VALUE"));
                }
            }
        }
    
        @Override
        public int perform(DynamicDict dict)
            throws BaseAppException
        {
            //判断工单状态和等级
            String level_order = dict.getString("WORK_ORDER_LEVEL");
            String state_order = dict.getString("WORK_ORDER_STATE");
            //String receiver = dict.getString("STAFF_EMAIL");
            Properties prop=new Properties();
            //邮件主题、内容、发送者、密码、工单等级、状态
            String subject = "",content = "", sender = "",password = "" ,level = "", state = "";
            prop.put(MAIL_SMTP_AUTH, MAIL_SMTP_AUTH_VALUE);
            logger.info("get email config info map :"+map);
            if(!CollectionUtils.isEmpty(map)){
            	
                //邮件服务器
                prop.put(EMAIL_HOST, map.get("FOS_EMAIL_HOST"));
                //邮件简单协议
                prop.put(MAIL_TRANSPORT_PROTOCOL, map.get("FOS_EMAIL_TRANSPORT_PROTOCOL"));
                //邮件端口
                prop.put(MAIL_SMTP_PORT, map.get("FOS_EMAIL_PORT"));
                //密码(授权码非邮件用户登陆密码)
                password = map.get("FOS_EMAIL_SENDER_PASSWORD");
                //邮件主题
                subject = map.get("FOS_EMAIL_TITLE");
                //邮件内容
                content = map.get("FOS_EMAIL_CONTENT").replace("$(staffname)", dict.getString("STAFF_NAME")).replace("$(workorderno)", dict.getString("WORK_ORDER_NO"));
                //用户名
                sender = map.get("FOS_EMAIL_SENDER_USERNAME");
                //工单状态
                state = map.get("FOS_EMAIL_ORDER_STATE");
                //工单等级
                level = map.get("FOS_EMAIL_ORDER_LEVEL");
            }
           // if(level_order.equals(level) && state_order.equals(state)){
                try
                {
                	for (String receiver : receiverList) {
                		sendEamil(prop, subject, content, sender, password, receiver);
    				}
                }
                catch (MessagingException e)
                {
                    logger.error("send email fail caused by :"+e);
                    throw new BaseAppException("send email fail caused by :"+e);
                }
            //}
            return 0;
        }
        
        //发送邮件
        public void sendEamil (Properties prop,String subject,String content,String sender,String password,String receiver) throws MessagingException{
            System.out.println("prop..."+prop);
            //使用java发送邮件5步骤
            //1.创建sesssion
            Session session=Session.getInstance(prop);
            //开启session的调试模式,可以查看当前邮件发送状态
            session.setDebug(true);
            //2.通过session获取Transport对象(发送邮件的核心API)
            Transport ts=session.getTransport();
            System.out.println(ts);
            //3.通过邮件用户名密码链接
            ts.connect(sender, password);
            //4.创建邮件
            Message msg=createSimpleMail(session,subject,content,sender,receiver) ;
            //5.发送电子邮件
            ts.sendMessage(msg, msg.getAllRecipients());
        } 
        
        //創建一封郵件
        public static MimeMessage createSimpleMail(Session session,String subject,String content,String sender,String receiver) throws AddressException,MessagingException{
            //创建邮件对象
            MimeMessage mm=new MimeMessage(session);
            //设置发件人
            mm.setFrom(new InternetAddress(sender));
            //设置收件人
            mm.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
    //        //设置抄送人
    //        mm.setRecipient(Message.RecipientType.CC, new InternetAddress("632132852@qq.com"));
            mm.setSubject(subject);
            mm.setContent(content, EAIL_FORMATTER);
            return mm;
        }
        
        public static void main(String[] args) throws  MessagingException, BaseAppException
        {
            Properties localProperties = System.getProperties();
            localProperties.setProperty("ZSMART_HOME", "F:\zsmart");
            DynamicDict dict = new DynamicDict();
            dict.setValueByName("STAFF_NAME", "wudi");
            dict.setValueByName("WORK_ORDER_NO", "123456");
            //dict.setValueByName("STAFF_EMAIL", "wudi@redoornetwork.com");
            //dict.setValueByName("WORK_ORDER_LEVEL", "A");
            //dict.setValueByName("WORK_ORDER_STATE", "0");
            
            System.out.println(FOSCommonCache.getInstance().getListByCode("FOS_EMAIL"));
            
    //        EmailUtils.getInstance().perform(dict);
        }
        
    }
    

      上述代码中夹杂了具体业务中的代码,没有用的可以自行删除,发送邮件比较简单。

    还有就是需要mail.jar文件。 点此下载 

  • 相关阅读:
    MySQL的B+树索引底层构成
    Mybatis 使用注解和Provider类实现动态条件查询
    EF批量插入数据耗时对比
    NOPI Excel 读取公式生成后的数据
    EF 记录执行的sql语句
    c# Redis操作类
    c# ExpandoObject动态扩展对象
    微信小程序干货
    mysql中将多行数据合并成一行数据
    Flask 学习系列(四)---Jinjia2 模板继承
  • 原文地址:https://www.cnblogs.com/wudi521/p/6136801.html
Copyright © 2020-2023  润新知