1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 发送会议邮件模板_使用javamail发送会议邀请

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

时间:2022-01-19 08:06:54

相关推荐

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

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

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

关于icalendar的规范,请看:https://rsync./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", "");

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:0302T060000Z\n"

+ "DTEND:0302T070000Z\n"

+ "LOCATION:Conference room\n"

+ "UID:"+UUID.randomUUID().toString()+"\n"//如果id相同的话,outlook会认为是同一个会议请求,所以使用uuid。

+ "CATEGORIES:SuccessCentral Reminder\n"

+ "DESCRIPTION:This the description of the meeting.

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();

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。