Email发送邮件使用ical4j将时间同步日历中
1.Maven依赖
<!--邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--ical4j-->
<dependency>
<groupId>org.mnode.ical4j</groupId>
<artifactId>ical4j</artifactId>
<version>1.0.7</version>
</dependency>
2.认证
/**
* 邮箱认证
* @return
*/
private static JavaMailSenderImpl authEmail(){
JavaMailSenderImpl javaMailSender=new JavaMailSenderImpl();
javaMailSender.setHost(host);
javaMailSender.setPort(port);
javaMailSender.setUsername(email);
javaMailSender.setPassword(pwd);
//认证机制
Properties properties=new Properties();
//连接超时
properties.setProperty("mail.smtp.connectiontimeout","10000");
//开启认证
properties.setProperty("mail.smtp.auth","true");
//启动调试
properties.setProperty("mail.debug","true");
//设置端口
properties.setProperty("mail.smtp.port",Integer.toString(465));
//加密方式
System.out.println("启用加密方式");
properties.setProperty("mail.smtp.starttls.enable","true");
properties.setProperty("mail.smtp.starttls.required","true");
//是否设置ssl端口
System.out.println("启用ssl");
properties.setProperty("mail.smtp.socketFactory.port",prot);
properties.setProperty("mail.smtp.socketFactory.fallback","false");
properties.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.socketFactory.enable","true");
javaMailSender.setJavaMailProperties(properties);
return javaMailSender;
}
/**
* 测试连接
* @param args
*/
public static void main(String[] args) {
JavaMailSenderImpl javaMailSender = authEmail();
try {
javaMailSender.testConnection();
} catch (MessagingException e) {
e.printStackTrace();
}
System.out.println("成功");
}
3.发送
private void sendEmail() throws MessagingException, IOException, ValidationException, URISyntaxException {
JavaMailSenderImpl javaMailSender = authEmail();
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
//发送人邮箱
messageHelper.setFrom("sendEmail");
//接收者邮箱
String[] tos={"invit2","invit2"};
messageHelper.setTo(tos);
//标题
messageHelper.setSubject("信息通知:");
//内容
String content = content();
MimeMultipart multipart=new MimeMultipart();
MimeBodyPart bodyPart=new MimeBodyPart();
bodyPart.setContent(content,"text/html;charset=UTF-8");
//bodyPart.setText("会议在15分钟后");
multipart.addBodyPart(bodyPart);
//是否加入日历
if (true){
String calendar = getCalendar();
BodyPart bodyPartCal=new MimeBodyPart();
bodyPartCal.setDataHandler(new DataHandler(
new ByteArrayDataSource(calendar,"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
multipart.addBodyPart(bodyPartCal);
}
message.setContent(multipart);
message.setSentDate(new Date());
//保存
message.saveChanges();
//发送
javaMailSender.send(message);
}
3.日历-创建日程
/**
* 邮箱添加到日历
* @return
*/
private String getCalendar() throws SocketException, ValidationException, URISyntaxException {
//设置时区
TimeZoneRegistry zoneRegistry = TimeZoneRegistryFactory.getInstance().createRegistry();
net.fortuna.ical4j.model.TimeZone timeZone = zoneRegistry.getTimeZone("Asia/Shanghai");
VTimeZone tz = timeZone.getVTimeZone();
//创建日历
net.fortuna.ical4j.model.Calendar calendar=new net.fortuna.ical4j.model.Calendar();
calendar.getProperties().add(Version.VERSION_2_0);
// -//Events Calendar//iCal4j 1.0//EN
calendar.getProperties().add(new ProdId("-//Ben Fortuna//iCal4j 1.0//EN"));
calendar.getProperties().add(CalScale.GREGORIAN);
calendar.getProperties().add(Method.REQUEST);
//开始时间 接收时间
LocalDateTime currDate = LocalDateTime.now().plusDays(1L).with(LocalTime.MIN);
LocalDateTime start = currDate.with(LocalTime.parse("11:00"));
LocalDateTime end = currDate.with(LocalTime.parse("12:15"));
DateTime startTime =new DateTime(start.toInstant(ZonedDateTime.now().getOffset()).toEpochMilli());
startTime.setTimeZone(timeZone);
DateTime endTime =new DateTime(end.toInstant(ZonedDateTime.now().getOffset()).toEpochMilli());
endTime.setTimeZone(timeZone);
//创建事件
VEvent vEvent=new VEvent(startTime,endTime,"信息通知");
//地址
vEvent.getProperties().add(new Location("测试园区-F4"));
//唯一标识
vEvent.getProperties().add(new Uid(new UidGenerator("iCal4j").generateUid().getValue()));
//时区
vEvent.getProperties().add(tz.getTimeZoneId());
//组织者
Organizer organizer=new Organizer("mailto:email");
organizer.getParameters().add(new Cn("Booked or person"));
vEvent.getProperties().add(organizer);
//邀请者
String[] tos={};
for (int i = 0; i < tos.length; i++) {
Attendee dev = new Attendee(URI.create("mailto:"+tos[i]));
dev.getParameters().add(Role.REQ_PARTICIPANT);
dev.getParameters().add(new Cn("Developer"+i));
vEvent.getProperties().add(dev);
}
// 重复事件
// Recur recur = new Recur(Recur.WEEKLY, Integer.MAX_VALUE);
// recur.getDayList().add(WeekDay.MO);
// recur.getDayList().add(WeekDay.TU);
// recur.getDayList().add(WeekDay.WE);
// recur.getDayList().add(WeekDay.TH);
// recur.getDayList().add(WeekDay.FR);
// RRule rule = new RRule(recur);
// vEvent.getProperties().add(rule);
// 提醒,提前10分钟
VAlarm valarm = new VAlarm(new Dur(0, 0, -10, 0));
valarm.getProperties().add(new Summary("预订信息"));
valarm.getProperties().add(Action.DISPLAY);
valarm.getProperties().add(new Description("会议信息预订一个计划"));
// 将VAlarm加入VEvent
vEvent.getAlarms().add(valarm);
// 添加事件
calendar.getComponents().add(vEvent);
// 验证
calendar.validate();
return calendar.toString();
}
Email发送邮件使用ical4j将时间同步日历中的更多相关文章
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- grails email 发送邮件插件
1.配置email插件,在Config.groovy文件中配置: plugins { compile ":mail:1.0.5" } 2.配置Config.groovy文件: gr ...
- ci框架(codeigniter)Email发送邮件、收件人、附件、Email调试工具
ci框架(codeigniter)Email发送邮件.收件人.附件.Email调试工具 Email 类 CodeIgniter 拥有强大的 Email 类来提供如下的功能: 多 ...
- Android 向系统日历中添加事件
查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...
- Android向系统日历中添加日程事件
转自Android向系统日历中添加日程事件 总结 在项目开发中,我们有预约提醒.定时提醒需求时,可以使用系统日历来辅助提醒: 通过向系统日历中写入事件.设置提醒方式(闹钟),实现到时间自动提醒的功能: ...
- 「Django」Django内置email发送邮件
Django内置email发送邮件 1.首先在settings.py文件设置相关参数 STATIC_URL = '/static/' # 设置邮件域名 EMAIL_HOST = 'smtp.163.c ...
- Django内置email发送邮件
###Django内置email发送邮件 ####1.首先在settings.py文件设置相关参数 ```python STATIC_URL = '/static/' # 设置邮件域名 EMAIL_H ...
- 利用Python的smtplib和email发送邮件
原理 网上已经有了很多的教程讲解相关的发送邮件的原理,在这里还是推荐一下廖雪峰老师的Python教程,讲解通俗易懂.简要来说,SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本 ...
- iOS日历中给一个事件加入多个提醒
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) iOS自带的日历应用中,我们最多仅仅能给一个事件设置2个提醒, ...
- iOS日历中给一个事件添加多个提醒
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) iOS自带的日历应用中,我们最多只能给一个事件设置2个提醒,但 ...
随机推荐
- (十五).web字体
WEB字体 1.1 web 字体基本语法 /* 引入Web字体 给web字体取名字*/ @font-face { font-family: "FZSJ-WSMQSJW"; src: ...
- 什么是DI
属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的属性注入
- pycharm配置gitlab
一.安装Git 下载地址: https://git-scm.com/downloads 安装说明: https://git-scm.com/downloads 二.pycharm配置gitlab: 1 ...
- StoneDB 子查询优化
StoneDB 子查询优化 摘要: 说明如何优化 exists 的 join 查询优化器的处理 核心函数: TwoDimensionalJoiner::ChooseJoinAlgorithm Join ...
- Conda简单教程 - 搬运
Conda简单教程 转自:https://www.cnblogs.com/nuccch/p/15046969.html 目录 什么是Conda 安装Conda 虚拟环境管理 模块管理 何时使用Cond ...
- unidbgrid默认列排序
UniDBGrid -> ClientEvents -> ExtEvents ->... function reconfigure(sender, store, columns, o ...
- Grafana Dashboard
Grafana Dashboard jvm micrometer (4701) jmx_export (8563) https://grafana.com/grafana/dashboards/856 ...
- JDK 7 HashMap 并发情况下的死锁问题
目录 问题描述 详细解释 问题描述 JDK7的 HashMap 解决冲突用的是链表,在插入链表的时候用的是头插法,每次在链表的头部插入新元素.resize() 的时候用的依然是头插,头插的话,如果某个 ...
- MySQL根据经纬度和距离查询最近的数据
[lat]:输入的纬度 [lon]:输入的经度 [distance]:查询距离内的数据,单位m SELECT * FROM ( SELECT id lon, lat, vin, ROUND( 6378 ...
- 【ASP.NET Core】修改Blazor.Server的Hub地址后引发的问题
Blazor Server,即运行在服务器上的 Blazor 应用程序,它的优点是应用程序在首次运行时,客户端不需要下载运行时.但它的代码是在服务器上执行的,然后通过 SignalR 通信来更新客户端 ...