最近做了一个项目,要根据客户定制的任务信息发日历提醒信息,上网查了些资料,发现网上的资料有些不全,这对于初次接触这个技术的人来说是件很麻烦的事,所以把代码分享一下,希望对大家有所帮助。
发送日历提醒有两种方式 ,一种通过纯文本方式,一种是通过iCal4j 自动生成一个提醒时间,不管哪种方式,都要有一下几个元素
BEGIN:VCALENDAR ------ 起始 VERSION:2.0 ------ 版本 PRODID:iCal4j v1.0//EN ------ 创建该对象的标志符 BEGIN:VEVENT ------ 事件开始 DTSTART:19970714T170000Z ------ 事件起始时间 DTEND:19970715T040000Z ------ 事件结束时间 SUMMARY:Bastille Day Party ------ 事件概要 END:VEVENT ------ 事件结束 END:VCALENDAR ------ 结束
上面的例子,它表示发生在 1997 年七月十四日下午五点与 1997 年七月十五日四点之间的事件“Bastille Day Party”。
较为详细的资料可以参考 iCalendar 编程基础:了解和使用 iCal4j 这篇文章。
下面我们通过代码来讲解
首先 需要几个jar 包 mail.jar(生成邮件的),ical4j-1.0.jar
下面是完整的java 代码
这个 类 是生成提醒时间的类
SalesFollowupScheduleImpl.java
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.net.SocketException;
import java.net.URI;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import net.fortuna.ical4j.data.CalendarOutputter;
import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.TimeZone;
import net.fortuna.ical4j.model.TimeZoneRegistry;
import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
import net.fortuna.ical4j.model.ValidationException;
import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.model.component.VTimeZone;
import net.fortuna.ical4j.model.parameter.Cn;
import net.fortuna.ical4j.model.parameter.PartStat;
import net.fortuna.ical4j.model.parameter.Role;
import net.fortuna.ical4j.model.parameter.Rsvp;
import net.fortuna.ical4j.model.property.Attendee;
import net.fortuna.ical4j.model.property.CalScale;
import net.fortuna.ical4j.model.property.Created;
import net.fortuna.ical4j.model.property.Location;
import net.fortuna.ical4j.model.property.Method;
import net.fortuna.ical4j.model.property.ProdId;
import net.fortuna.ical4j.model.property.Uid;
import net.fortuna.ical4j.model.property.Version;
import net.fortuna.ical4j.util.UidGenerator;
import org.apache.log4j.Logger;
import com.m3td.m3ssi.bussion.email.MailSendCustomerManagerImpl;
import com.m3td.m3ssi.common.util.FileUtil;
import com.m3td.m3ssi.entity.sales.SalesFollowupBean;
/**
* Sales Person 任务日程提醒(生成ICS)
*
* @author jet
* @time 2012-12-13
*
*/
public class SalesFollowupScheduleImpl {
private static final Logger log = Logger
.getLogger(SalesFollowupScheduleImpl.class);
//创建日历
public void createEvent(SalesFollowupBean salesFollowupBean) throws ParseException, IOException, ValidationException{
if(salesFollowupBean!=null)
{
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startDateV = new Date();
String date = salesFollowupBean.getTask_fulltime();
String content = salesFollowupBean.getTask_content();
startDateV = sdf.parse(date);
//创建时区
TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
//设置时区
TimeZone timezone = registry.getTimeZone("America/Mexico_City");
VTimeZone tz = timezone.getVTimeZone();
// Start Date