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个提醒,但 ...
随机推荐
- IT工具知识-14:如何通过adb操作安卓剪切板?
1.安装apk 下载地址 2.运行服务(每次重启系统都需要运行一次) adb shell am startservice ca.zgrs.clipper/.ClipboardService 3.设置剪 ...
- python openpyxl 多个sheet vlookup
import pandas as pdimport openpyxlfrom openpyxl.styles import Border, Side,colorswb = openpyxl.load_ ...
- centos安装k8s
1.确保每台机器上有docker http://get.daocloud.io/#install-docker 2.关闭 每台机器上的swap,selinux swapoff -a setenforc ...
- loadrunner获取时间戳
web_save_timestamp_param("tStamp", LAST); //取时间戳
- Apache与tomcat区别--转水漫金山
Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器 Ap ...
- html、css、js 压缩或混淆方法
普通的压缩代码的方法包括在线工具和服务器打包处理,有一个共同的痛点是:压缩后的代码无法还原成原始的带有注释的源代码.正如大家所知,在源代码中调试Bug事半功倍.在线工具HCJCompress(ihon ...
- windows 安装mysql57
1. 配置my.ini文件 在根目录下新建 "my.ini" 文件: 添加配置: [mysql] # 设置mysql客户端默认字符集 default-character-set=u ...
- 传输安全HTTPS
为什么要有 HTTPS 为什么要有 HTTPS?简单的回答是:"因为 HTTP 不安全".HTTP 怎么不安全呢? 通信的消息会被窃取,无法保证机密性(保密性):由于 HTTP 是 ...
- 从开源模型、框架到自研,声网 Web 端虚拟背景算法正式发布
根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情.同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐 ...
- arc145前三题
为什么只有前三题呢...第四题想了一个小时没思路(主要是半个小时的时候发现看错题了),然后看粉兔博客发现要用Cantor集一类的神奇玩意,手贱看了E题发现还是线性基.于是就run了.NOIP前再学吧 ...