java实现outlook calendar日历功能

项目中有需要对outlook 日历进行管理的需求,熟悉outlook的同学提醒用EWS的方式对日历进行创建,更新跟取消操作,度娘了一圈,发现还可以通过ics的方式操作outlook日历,可能不想走寻常路吧,所以采用了第二种方式,支持日历操作,已经测试通过,记录下以免忘记也是方便他人。

第一步

引入lombok和javaMail相关的jar

        <!-- lombok 简化代码 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>

 第二步

核心代码,日历功能由方式sendCalendarMail实现

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CalendarMail {

    public static final String SCHEDULED = "SCHEDULED";

    public static final String RECURRING = "RECURRING";

    /**
     * 发起者
     */
    private String organizerAddress;

    /**
     * 发起者显示名
     */
    private String organizerName;

    /**
     * 接收人
     */
    private String[] toAddresses;

    /**
     * 主题
     */
    private String subject;

    /**
     * 地点
     */
    private String location;

    /**
     * 开始时间
     */
    private String startTime;

    /**
     * 兼容旧版本
     */
    private String endTime;

    /**
     * 时长
     */
    private Integer duration;

    /**
     * 类型
     * SCHEDULED、RECURRING
     */
    private String type;

    /**
     * 如果 type = RECURRING,此字段生效,用于填充周期信息
     */
    private CalendarRecurrence recurrence;

    /**
     * 邮件正文
     */
    private String content;

    /**
     * 会议取消/更新
     */
    private String cancelId;

    /**
     * METHOD:CANCEL 取消会议  METHOD:REQUEST 创建和更新会议
     */
    private String method = "REQUEST";

}
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.UUID;

/**
 * 简单邮件(以HTML带附件的邮件)发送器
 */
@Service("SimpleMailSender")
public class SimpleMailSender implements IMailSender {

    @QConfig("config.properties")
    private Properties config;

    /**
     * 以文本格式发送邮件
     *
     * @param toAddress 收件人列表
     * @param subject   标题
     * @param content   内容
     */
    public void sendTextMail(List<String> toAddress, List<String> ccAddress, String subject, String content) {
        this.sendMail(toAddress, ccAddress, subject, content, true, null, null);
    }

    /**
     * 以HTML格式发送邮件
     *
     * @param toAddress 收件人列表
     * @param subject   标题
     * @param content   内容
     */
    public void sendHtmlMail(List<String> toAddress, List<String> ccAddress, String subject, String content) {
        this.sendMail(toAddress, ccAddress, subject, content, false, null, null);
    }

    /**
     * 发邮件
     *
     * @param toAddress                             收件人列表
     * @param subject                               标题
     * @param content                               内容
     * @param textType:true是text类型发送,false是html类型发送
     */
    public void sendMail(List<String> toAddress, List<String> ccAddress, String subject, String content,
                         boolean textType, String[] attachFileNames, List<Image> imageList) {
        MailSenderInfo mailInfo = new MailSenderInfo();
        mailInfo.setMailServerHost(config.getProperty("mailServerHost"));
        mailInfo.setMailServerPort(config.getProperty("mailServerPort"));
        mailInfo.setFromAddress(config.getProperty("mailFromAddress"));
        mailInfo.setUserName(config.getProperty("mailUser
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Java读取Outlook邮件的附件功能本身是不收费的。Java是一种通用的编程语言,它本身并不限制对Outlook邮件附件的读取操作。因此,可以使用Java的各种库和API来实现读取Outlook邮件附件的功能,而这些库和API大多都是免费提供的。 在Java中,常用的库和API包括JavaMail、Apache POI、Apache Commons IO等。通过这些库和API,可以连接到邮件服务器,获取邮件列表,并获取邮件的附件信息。这些库和API提供了丰富的功能和方法,可以灵活地操作Outlook邮件附件,如下载附件、保存附件到本地文件系统等。 需要注意的是,虽然Java本身是免费的,但如果要读取Outlook邮件附件,仍然需要在程序中提供连接到邮件服务器的相关信息,比如用户名、密码等。有些邮件服务器可能对API接入有一定的限制或收费要求,这可能需要与邮件服务器的提供商进行沟通。另外,若使用第三方库或API,可能会涉及到其自身的许可证或使用限制,需要遵守相关规定。 总的来说,Java本身不收费,可以使用免费的库和API来实现读取Outlook邮件附件的功能。但具体是否需要支付费用还需要根据实际情况来决定,包括邮件服务器的限制或要求、第三方库或API的许可证规定等。 ### 回答2: Java读取Outlook邮件的附件功能是免费的。在Java中,可以使用JavaMail API来读取和处理邮件附件,无需支付额外费用。JavaMail API是Java SE的一部分,可用于开发电子邮件应用程序,包括读取Outlook邮件的附件。 使用JavaMail API,可以连接到Outlook邮件服务器,通过IMAP或POP3协议收取邮件,并获取邮件附件。可以使用Java代码编写一个邮件客户端,通过API提供的方法来读取邮件的内容以及附件。具体步骤包括连接到邮件服务器、选择邮件夹、获取邮件列表、遍历邮件并判断是否有附件,如果有附件则可以保存到本地或进行其他处理。 虽然JavaMail API本身是免费的,但要使用该功能,需要确保计算机上已安装Java运行环境(JRE)或开发环境(JDK)。Java开发工具、IDE(如Eclipse、IntelliJ IDEA)等可能需要付费,但可以使用免费的开源工具进行开发,如Apache NetBeans等。 需要注意的是,读取Outlook邮件的附件需要具备正确的邮件服务器连接配置以及邮件帐户的凭据。另外,要读取Outlook邮件,还需要具备合法的授权权限,通常需要与Outlook邮件服务器管理员联系。 总之,Java读取Outlook邮件的附件功能本身是免费的,但可能需要确保相关的开发工具、环境的合法性以及所需的授权权限。 ### 回答3: Java读取Outlook邮件的附件功能在大多数情况下是免费的。Java提供了JavaMail API,可以用于读取和处理电子邮件。使用JavaMail API,我们可以通过IMAP或POP3协议连接到邮箱服务器,并读取邮件的内容和附件。 不过,需要注意的是,有些Outlook服务器可能需要进行身份验证,而身份验证可能需要使用收费的许可证或证书。具体是否需要付费取决于访问的邮件服务器和其设置。 此外,如果我们希望使用更高级的功能,如自动下载附件或处理复杂的附件类型(如嵌入式图像或媒体文件),可能需要使用其他第三方库或服务,这些库或服务可能会有一定的费用。 总结来说,Java读取Outlook邮件的附件功能本身是免费的,但具体是否收费取决于服务器设置和我们所需的功能。如果功能需求较简单,那么使用JavaMail API即可满足需求,而不需要额外费用。但如果我们需要更高级的功能,则可能需要考虑使用其他费用相关的第三方库或服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值