`
whoosh
  • 浏览: 234889 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

使用javamail发送会议邀请

    博客分类:
  • J2EE
阅读更多

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

DESCRIPTION中如果想换行,换行符为:=0D=0A

关于icalendar的规范,请看:https://rsync.tools.ietf.org/html/rfc5545

public class Email {
	private static String EMAIL_CONFIG = "email_config.properties";
	private Properties emailProp = new Properties();
	public Email() {
		InputStream is = getClass().getResourceAsStream("/"+EMAIL_CONFIG);
		try {
			emailProp.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private class EmailAuthenticator extends Authenticator {
		protected PasswordAuthentication getPasswordAuthentication() {
			String userId = emailProp.getProperty("userId", "");
			String password = emailProp.getProperty("password", "");
			return new PasswordAuthentication(userId, password);
		}
	}

	public void send() throws Exception {

		try {
			String fromEmail = emailProp.getProperty("fromEmail", "");
			String toEmail=emailProp.getProperty("toEmail", ""); 
			Properties props = new Properties();
			try {
				props.put("mail.smtp.port", "587");
				props.put("mail.smtp.host", "smtp.gmail.com");
				props.put("mail.transport.protocol", "smtp");
				props.put("mail.smtp.auth", "true");
				props.put("mail.smtp.starttls.enable", "true");
				props.put("mail.smtp.ssl", "true");

			} catch (Exception e) {
				e.printStackTrace();
			}

			Session session;
			Authenticator authenticator = new EmailAuthenticator();
			session = Session.getInstance(props, authenticator);
			MimeMessage message = new MimeMessage(session);
			message.setFrom(new InternetAddress(fromEmail));
			message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
			message.setSubject("Outlook Meeting Request Using JavaMail");
			StringBuffer buffer = new StringBuffer();
			buffer.append("BEGIN:VCALENDAR\n"
					+ "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n"
					+ "VERSION:2.0\n"
					+ "METHOD:REQUEST\n"
					+ "BEGIN:VEVENT\n"
					+ "ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:"+toEmail+"\n"
					+ "ORGANIZER:MAILTO:"+toEmail+"\n"
					+ "DTSTART:20120302T060000Z\n"
					+ "DTEND:20120302T070000Z\n"
					+ "LOCATION:Conference room\n"
					+ "UID:"+UUID.randomUUID().toString()+"\n"//如果id相同的话,outlook会认为是同一个会议请求,所以使用uuid。
					+ "CATEGORIES:SuccessCentral Reminder\n"
					+ "DESCRIPTION:This the description of the meeting.<br>asd;flkjasdpfi\n\n"
					+ "SUMMARY:Test meeting request\n" + "PRIORITY:5\n"
					+ "CLASS:PUBLIC\n" + "BEGIN:VALARM\n"
					+ "TRIGGER:-PT15M\n" + "ACTION:DISPLAY\n"
					+ "DESCRIPTION:Reminder\n" + "END:VALARM\n"
					+ "END:VEVENT\n" + "END:VCALENDAR");
			BodyPart messageBodyPart = new MimeBodyPart();
			// 测试下来如果不这么转换的话,会以纯文本的形式发送过去,
			//如果没有method=REQUEST;charset=\"UTF-8\",outlook会议附件的形式存在,而不是直接打开就是一个会议请求
			messageBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(buffer.toString(), 
					"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(messageBodyPart);
			message.setContent(multipart);
			Transport.send(message);
		} catch (MessagingException me) {
			me.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		try {
			Email email = new Email();
			email.send();
			System.out.println("success");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
分享到:
评论
6 楼 whoosh 2014-12-11  
elmar 写道
你好,如何用java mail回复一个会议邀请,以及如果用程序来收集回复?

不好意思,没做到这种需求。请问你现在有解决方案了吗?
5 楼 elmar 2013-10-31  
你好,如何用java mail回复一个会议邀请,以及如果用程序来收集回复?
4 楼 whoosh 2012-03-11  
cfyme 写道
whoosh 写道
cfyme 写道
请问一下,我成功发送了一个会议邀请,怎么取消会议邀请,怎么更改会议邀请

你在outlook里面试了不能取消或者更改会议邀请?

我的意思 用java代码去 取消或者更新



这就要用ical4j了,自己研究他的文档吧
3 楼 cfyme 2012-03-09  
whoosh 写道
cfyme 写道
请问一下,我成功发送了一个会议邀请,怎么取消会议邀请,怎么更改会议邀请

你在outlook里面试了不能取消或者更改会议邀请?

我的意思 用java代码去 取消或者更新
2 楼 whoosh 2012-03-09  
cfyme 写道
请问一下,我成功发送了一个会议邀请,怎么取消会议邀请,怎么更改会议邀请

你在outlook里面试了不能取消或者更改会议邀请?
1 楼 cfyme 2012-03-05  
请问一下,我成功发送了一个会议邀请,怎么取消会议邀请,怎么更改会议邀请

相关推荐

    JavaMail发送邮件(文本、html、附件)

    JavaMail是一种广泛使用的Java库,用于在应用程序中发送电子邮件。这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在Java编程环境中,使用JavaMail库发送电子邮件是一个常见的任务,特别是在需要自动化或程序化通信时。本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,...

    使用javaMail发送邮件

    在本篇文章中,我们将深入探讨如何使用JavaMail API来实现邮件的发送功能。 首先,我们需要引入JavaMail所需的依赖库。在提供的文件列表中,我们看到有以下jar文件: 1. mail.jar:这是JavaMail的核心库,包含了...

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将详细探讨这些问题的原因及相应的解决方案。 ##...

    Android 使用javamail发送邮件

    在Android平台上,使用JavaMail库发送邮件是一种常见的实践。JavaMail是一个开源的API,它提供了在Java环境中处理邮件的功能,包括发送、接收和管理电子邮件。在这个案例中,"LouisJavaMail-master"是一个项目仓库,...

    用javaMail发送邮件

    以上就是使用JavaMail发送邮件的基本过程。在实际开发中,可能还需要处理更多复杂情况,如SSL/TLS加密、HTML邮件、多部分消息等。JavaMail API提供了丰富的功能来应对这些需求,让开发者能够灵活地构建邮件系统。 ...

    使用javamail发送邮件

    下面我们将详细探讨如何使用JavaMail发送邮件,以及涉及的关键知识点。 首先,要发送邮件,你需要配置一些必要的参数,包括邮箱账号、密码和SMTP服务器地址(SERVERHOST)。例如,如果你使用的是 Gmail 邮箱,SMTP ...

    使用javaMail发送邮件功能

    在这个项目中,我们将探讨如何使用JavaMail来实现邮件发送的功能,这对于任何需要在应用中集成邮件通信的开发者来说都是至关重要的。 首先,你需要将`javaMail`压缩包中的JAR文件添加到你的项目类路径中。这些JAR...

    android使用javamail发送邮件jar包

    在Android平台上,发送电子邮件通常需要使用JavaMail API。JavaMail是一个开源库,它提供了一组API,使得在Java环境中发送和接收电子邮件变得简单。在Android项目中,由于原生的Android SDK并不直接支持JavaMail,...

    java使用javaMail发送邮件

    JavaMail 是一个强大的开源库,它为Java开发者提供了一套完整的API来处理电子邮件的发送和接收。这个项目源文件和包含的jar包是用于演示如何在Java应用中使用JavaMail来实现邮件服务功能的。下面将详细介绍JavaMail...

    javamail发送邮件实例

    在JavaMail中,我们主要关注如何使用它来实现邮件发送的功能。 首先,发送邮件的关键在于设置SMTP服务器的相关配置。SMTP服务器是邮件发送的载体,大多数邮件服务提供商如Gmail、Yahoo或Outlook都提供了SMTP服务器...

    WEB项目使用JavaMail 发送邮件

    在这个主题中,我们将深入探讨如何在WEB项目中使用JavaMail发送邮件。 首先,我们需要了解JavaMail的基本概念。JavaMail API是Java平台上的一个标准API,它提供了邮件服务器交互的能力,包括创建、发送和接收邮件。...

    javamail实现邮箱与邮箱发送邮件

    本示例将重点介绍如何使用JavaMail库来实现163邮箱向腾讯邮件发送邮件的流程。 首先,确保你的项目中已经包含了JavaMail所需的依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,如果你...

    使用JAVAMail代发邮件

    使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...

    javamail发送、接收邮件

    使用JavaMail API,开发者可以轻松地在Java应用中集成邮件功能,包括发送、接收、读取和管理邮件。 #### 发送邮件 发送邮件通常涉及到配置邮件会话、创建邮件消息、设置邮件属性和发送邮件等步骤。具体流程如下: ...

    使用JavaMail发送邮件的demo

    在这个"使用JavaMail发送邮件的demo"中,我们将深入探讨如何利用JavaMail发送带有附件且内容支持HTML格式的邮件。 首先,发送邮件的关键在于正确配置SMTP服务器的信息。SMTP(Simple Mail Transfer Protocol)是...

Global site tag (gtag.js) - Google Analytics