JAVA代码发送邮件示例和解释(二)
package test;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class SendMailTest1 {
public static void main(String[] args) {
SendMailTest1 send = new SendMailTest1();
send.sendEmail();
}
/**
*
* @Title: sendTextMail
* @Description: TODO
* @param mailInfo
* @return
*/
// MailModel mailInfo
public boolean sendEmail() {
// 从配置文件中读取配置信息
Properties pro = new Properties();
pro.put("mail.smtp.host", "mail.chinamobilesz.com");
pro.put("mail.smtp.auth", "true");
// Properties pro = mailConfig.getProperties();
// 根据邮件的回话属性构造一个发送邮件的Session
MailAuthenticator authenticator = new MailAuthenticator("账号",
"密码");
Session session = Session.getInstance(pro, authenticator);
// 监控邮件命令
try {
// 根据Session 构建邮件信息
Message message = new MimeMessage(session);
// 创建邮件发送者地址
Address from = new InternetAddress("xtyw");
// 设置邮件消息的发送者
message.setFrom(from);
// 验证邮箱地址
List<String> auth = new ArrayList<String>();
auth.add("1160569243@qq.com");
String toAddress = validateEmail(auth);
if (!toAddress.isEmpty()) {
// 创建邮件的接收者地址
Address[] to = InternetAddress.parse(toAddress);
// 设置邮件接收人地址
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject("12345");
// 邮件容器
MimeMultipart mimeMultiPart = new MimeMultipart();
// 设置HTML
BodyPart bodyPart = new MimeBodyPart();
String htmlText = "123456";
bodyPart.setContent(htmlText, "text/html;charset=utf-8");
mimeMultiPart.addBodyPart(bodyPart);
// 添加附件
List<String> fileList = new ArrayList<String>();
fileList.add("C:\\Users\\tuzongxun123\\Desktop\\自主服务API.docx");
if (fileList != null) {
BodyPart attchPart = null;
for (int i = 0; i < fileList.size(); i++) {
if (!fileList.get(i).isEmpty()) {
attchPart = new MimeBodyPart();
// 附件数据源
DataSource source = new FileDataSource(
fileList.get(i));
// 将附件数据源添加到邮件体
attchPart.setDataHandler(new DataHandler(source));
// 设置附件名称为原文件名
attchPart.setFileName(MimeUtility.encodeText(source
.getName()));
mimeMultiPart.addBodyPart(attchPart);
}
}
}
message.setContent(mimeMultiPart);
message.setSentDate(new Date());
// 保存邮件
message.saveChanges();
// 发送邮件
Transport.send(message);
return true;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("邮件发送失败");
}
return false;
}
/**
* @title validateEmail
* @Description 验证邮箱格式
* @param emailList
* @return string
*/
public String validateEmail(List<String> emailList) {
StringBuffer buffer = new StringBuffer();
if (!emailList.isEmpty()) {
String regEx = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
Pattern p = Pattern.compile(regEx);
for (int i = 0; i < emailList.size(); i++) {
Matcher match = p.matcher(emailList.get(i));
if (match.matches()) {
buffer.append(emailList.get(i));
if (i < emailList.size() - 1) {
buffer.append(",");
}
}
}
}
return buffer.toString();
}
}
JAVA代码发送邮件示例和解释(二)的更多相关文章
- JAVA代码发送邮件示例和解释
下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,好在昨晚终于走通代码成功以163邮箱发送邮件到qq邮 ...
- demo1 spark streaming 接收 kafka 数据java代码WordCount示例
1. 首先启动zookeeper windows上的安装见zk 02之 Windows安装和使用zookeeper 启动后见: 2. 启动kafka windows的安装kafka见Windows上搭 ...
- javaMail (java代码发送邮件)
第一在邮件账户设置开启以下两个 需要发送短信获取 授权码. 代码如下: package com.hjb.javaMail; import javax.mail.*; import javax.mai ...
- spark streaming 接收 kafka 数据java代码WordCount示例
http://www.cnblogs.com/gaopeng527/p/4959633.html
- 使用Java代码发送邮件
- 在Android源码中查找Java代码中native函数对应的C++实现
Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码: static native Thread currentThread(); 如何根据方法名 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...
- Java发送邮件--web.xml配置,Java代码配置
前言:我目前总结的使用java发送邮件的方式有两种,分别是在spring框架xml配置文件使用bean标签,另一种方法是把发送功能封装成一个对象,废话不多说上代码, 边看代码边讲解,希望对需要的人能有 ...
- JMETER通过java代码通过代码/ JMETER API实现示例进行负载测试
本教程试图解释Jmeter的基本设计,功能和用法,Jmeter是用于在应用程序上执行负载测试的优秀工具.通过使用jmeter GUI,我们可以根据我们的要求为请求创建测试样本并执行具有多个用户负载的样 ...
随机推荐
- oracle pl/sql如何定义变量
目的:如何在pl/sql中定义基本类型,引用类型,记录型变量? 以下plsql程序用的scott用户的dept,emp表. 定义基本类型的变量 set serveroutput on ; --使用基本 ...
- useradd和adduser
1.Ubuntu中,adduser是一个脚本,而useradd是一个二进制程序,前者对后者进行了封装,更加智能. 2.Centos中,adduser和useradd完全相同,adduser是一个符号链 ...
- the first simple html page generated by div and table tags
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...
- python字符串常用的方法解析
这是本人在学习python过程中总结的一些关于字符串的常用的方法. 文中引用了python3.5版本内置的帮助文档,大致进行翻译,并添加了几个小实验. isalnum S.isalnum() -> ...
- Android Studio 3.1 Beta 1发布,如何及时下载更新
每次收到Android Studio更新提示,总是延迟一段时间才能下载的到或者更新成功.架梯子也不行.而且更新检测也是时断时续.Android Studio 3.0.1使用一段时间,多开几个工程.经常 ...
- 关于metaclass,我原以为我是懂的
关于Python2.x中metaclass这一黑科技,我原以为我是懂的,只有当被打脸的时候,我才认识到自己too young too simple sometimes native. 为什么之前我认为 ...
- vue2.0开发时导入组件时出错
导入自定义组件时出现了如下错误 ERROR Failed to compile with 1 errors 12:35:41 This dependency was not found: * comp ...
- CF 246E. Blood Cousins Return [dsu on tree STL]
题意: 一个森林,求k级后代中多少种不同的权值 用set维护每个深度出现的权值 一开始一直在想删除怎么办,后来发现因为当前全局维护的东西里都是当前子树里的,如果要删除那么当前一定是轻儿子,直接清空se ...
- POJ 2065 SETI [高斯消元同余]
题意自己看,反正是裸题... 普通高斯消元全换成模意义下行了 模模模! #include <iostream> #include <cstdio> #include <c ...
- XML+JSON面试题都在这里
XML+JSON常见面试题 什么是JSON和XML 什么是JSON和XML JSON:JavaScript Object Notation [JavaScript 对象表示法]. XML:extens ...