Java 二级域名邮箱的正则和代发邮件笔记

正则不怎么关注,需要代发邮件,配置什么都不麻烦,做笔记主要两块:

1.二级域名邮箱的正则

一般是直接搜出的是

      String regex = "[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?";

然后使用

            //compile()方法生成模式对象
                Pattern p = Pattern.compile(regex);
                Matcher m = p.matcher(content);
                while (m.find()) {
                    //do sth 
                     System.err.println(m.group());
                }
注意,这个正则不能识别二级域名邮箱,使用下面这个正则可以识别二级域名邮箱。

网上找了很多终于找了个很长但是好用的,二级三级域名邮箱都可以实现。

    String regex="(?:(?:[A-Za-z0-9\\-_@!#$%&'*+/=?^`{|}~]|(?:\\\\[\\x00-\\xFF]?)|(?:\"[\\x00-\\xFF]*\"))+(?:\\.(?:(?:[A-Za-z0-9\\-@!#$%&'*+/=?^`{|}~])|(?:\\\\[\\x00-\\xFF]?)|(?:\"[\\x00-\\xFF]*\"))+)*)@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.)+(?:(?:[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*)(?:[A-Za-z0-9-]*[A-Za-z0-9])?))";

2. java mail创建带图片 附件的邮件

配置过程没有什么要记录的/一些邮箱需要把服务提供鉴权码替换密码。

正文可以用html标签格式实现

        MimeMessage msg  =new MimeMessage(session);
        String subjecy=MimeUtility.encodeWord("这是一个测试邮件", "UTF-8", "Q");
        msg.setSubject(subjecy); //主题
        
        
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("<p class=\"p1\"><b>您好,</b></p>\r\n" + 
                "\r\n" + 
                "<p class=\"p1\"><font size=\"2\"><b><a href=\"http://baidu.com\">百度</a></b></font></p>\r\n" + 
                "<p class=\"p1\"><b>图片</b></p><br><img src='cid:aaa.jpg' width='200' hight='100'>\"<br>", "text/html;charset=UTF-8");
        
          //图片  
        MimeBodyPart image = new MimeBodyPart();
        image.setDataHandler(new DataHandler(new FileDataSource("E:\\3.jpg")));
        image.setContentID("aaa.jpg");


        // 描述关系:正文和图片
        MimeMultipart mp1 = new MimeMultipart();
        mp1.addBodyPart(text);
        mp1.addBodyPart(image);
        mp1.setSubType("related"); ////     

        msg.setContent(mp1);
        msg.saveChanges();

3.中文乱码

虽然读取的时候标注了utf-8,还是出现乱码现象。
解决办法,主题设置的时候使用javax.mail.internet.MimeUtility.encodeWord();

    String subjecy=MimeUtility.encodeWord("这是一个测试邮件", "UTF-8", "Q");
   msg.setSubject(subjecy);//设置主题

4.频率

本来是for 循环直接发的,然后大概100+失败,看了发件箱,结果好多被退回的。
说是超出频率。

所以,改了三分钟发一封。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容