正则不怎么关注,需要代发邮件,配置什么都不麻烦,做笔记主要两块:
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+失败,看了发件箱,结果好多被退回的。
说是超出频率。
所以,改了三分钟发一封。
网友评论