在公司开发和维护邮件发送相关api及web,有客户反映通过我们平台发送出去的会议日历部分邮件客户端如outlook打开的时候存在时区差的问题,有的存在8个小时是去查的问题,有的存在1个小时(也就是所谓夏令时的问题,这个是历史遗留问题,相关描述大家可以自行某度),公司开发语言为java,发送会议日历相关采用第三方jar包ical4j,版本为1.0.5.2(版本可能有点落后)。出现时区问题之后上某度和Google搜索,相关信息很少,而且都没有好的回答,后来通过查看ical4j源码包中的相关日历文件,如下图所示

,发现源码包中的shanghai.ics就存在问题,于是就想办法修改shanghai.ics源码,但是苦于找不到正确的shanghai.ics文件,只能不停的给自己发测试邮件,通过Foxmail查看日历邮件源码,发现有一行关键代码:TZURL:http://tzurl.org/zoneinfo/Asia/Shanghai,后来通过在浏览器中输入http://tzurl.org/zoneinfo/Asia/Shanghai,并一级一级回退到上次目录,定位在http://tzurl.org/时候如下图所示:

点进去zoneinfo-outlook发现和zoneinfo目录下面一样有很多日历文件,并且看zoneinfo-outlook名字和后面的英文注释应该是兼容outlook的,于是点进去zoneinfo-outlook目录后下载Shanghai.ics和原来的Shanghai.ics文件对比,发现zoneinfo-outlook中的Shanghai.ics中采用的是通用的CST+8的时区设置,于是将zoneinfo-outlook中的Shanghai.ics替换源码中的Shanghai.ics文件,测试发送夏令时问题得以解决

后面还遇到过网易闪电邮客户端打开时区差8个小时的问题,其他客户端都正常的情况,通过不断测试发送发现在代码加入两行代码,如下所示

问题也得到解决。

总结:smtp协议是一个开放的协议,各个邮件客户端比如outlook、foxmail等在接到邮件的时候在解析的时候可能会略有不同,导致测试的时候总是有的客户端有问题,有的客户端没有问题这种蛋疼的问题,但是通过仔细分析邮件原文,还是能发现一些问题,并解决。后面我还会谈到同样关于会议日历发送的另外一个问题,如果取消和修改已经发送出去的会议日历

ical4j发送会议日历时差问题相关推荐

  1. 利用javamail、ical4j发送会议邀请(日历)邮件、注意ical4j需要修改

    一.pom添加依赖         <dependency>             <groupId>org.mnode.ical4j</groupId>    ...

  2. java邮件会议邀请_javamail+ical4j发送会议邀请

    (edit by king)最近要搞个提醒系统,也就是能够设置个时间,在那个时间发封邮件提醒的系统.为了能够更好的起到提醒的效果,暂定的方案是发送会议邀请. 以前知道outlook的会议邀请格式不能仅 ...

  3. Java发送会议邮件 时区_【上海校区】基于JavaMail的日历(会议)邮件发送实现

    [Java] 纯文本查看 复制代码/** * 发送会议邀请邮件 * * @param toMailAddress 收件人(邀约人),支持多个 * @param mailSubject 邮件主题 * @ ...

  4. java 发送会议邮件模板_使用javamail发送会议邀请

    网上找了很多关于javamail发送会议请求的文章,终于成功了,没有使用ical4j,发送的outlook直接打开就是一个会议请求,而不是以附件的形式存在.具体的注意点在代码中以注释的形式标明. DE ...

  5. Java 发送会议邀请到 Outlook

    Java 发送会议邀请到 Outlook Java 发送会议邀请到 Outlook 1.发件服务器配置 2.发送邮件代码 3.测试代码 Java 发送会议邀请到 Outlook 系统:Win10 ID ...

  6. 使用数据库邮件发送会议邀请

    http://social.microsoft.com/Forums/it-IT/3ba417d6-6548-48ed-9e9f-1a6549edc569 大家好, 在此提供一个示例展示如何使用数据库 ...

  7. java 邮件提醒功能_利用ical4j和javamail发送会议邀请实现邮件发送提醒功能

    /*** *@paramsenderAccount 发件人账号 *@paramsenderPassword 发件人密码 *@paramtoAddress 收件人邮箱地址 *@paramccAddres ...

  8. java发送会议邀请邮件模板_使用java发送每封电子邮件的日历邀请

    我正在尝试使用 java发送每封电子邮件的日历邀请.收件人收到电子邮件,但该活动不会显示接受或拒绝的邀请,而是自动添加到他的日历中. 我正在使用ical4j.jar构建活动/邀请 private Ca ...

  9. java 发送会议邮件模板_使用ical4j和javamail发送会议邀请

    /** *将会议邀请信息生成标准格式的字符串 * @param startTime 开始时间 * @param endTime 结束时间 * @param title 会议名称 * @param or ...

最新文章

  1. java 友好时间显示_java 友好的显示时间
  2. 极大似然估计_计量经济学 | 极大似然估计
  3. 引起SQL数据库超时的问题分析及解决办法
  4. kettle连接不上es7_kettle8.2连接ElasticSearch7
  5. io密集型和cpu密集型java,如何设计CPU密集型与I/O密集型程序
  6. Boost:双图bimap与双向地图的测试程序
  7. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态
  8. jvm_垃圾收集算法讲解(一)
  9. 公司网站Silverlight版^_^
  10. Mysql主备延迟的原因
  11. 字符串常量与字符串变量
  12. php udp发送和接收_63、php利用原生socket创建udp服务
  13. 35岁大龄程序员都去哪了?一位网友分享的身边几个真实案例,过于真实!!
  14. 201621123058 《java课程设计》第九周学习总结
  15. 华为鸿蒙系统发展时间2021年,耗时八年打造国产系统,华为鸿蒙OS质疑声不断,它才是真正未来...
  16. 【转】vb OPen文本文件的操作
  17. 1057. 数零壹(20)-PAT乙级真题
  18. iOS中都有什么设计模式?各个设计模式的作用?
  19. 送一些专属红包封面。
  20. 教你百度网盘文件转阿里云

热门文章

  1. 为什么GPIO置位与清零要分开?
  2. 阿里云centos7自带mysql_阿里云CentOS7部署MySql8.0
  3. 01. 禁止指定的 IP 上网 ❀ 飞塔 (Fortinet5.4) 防火墙
  4. android NFC读写卡Demo
  5. fiddler 连接手机IP+端口不能够打开证书下载页如何处理。
  6. MATLAB出现”警告: 名称不存在或不是目录“的解决方案
  7. Amlogic Linux系列(二)新增测试驱动
  8. 使用思科n9kv注意事项
  9. JavaScript 字符串加密和解密
  10. iPhone 微信多开,如何在苹果手机上安装多个微信,爱思助手怎么用?IPA文件怎么弄?