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("

您好,

\r\n" + "\r\n" + "

百度

\r\n" + "

图片


\"
", "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+失败,看了发件箱,结果好多被退回的。
说是超出频率。

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

你可能感兴趣的:(Java 二级域名邮箱的正则和代发邮件笔记)