Попытка отправить календарный приглашение на мой Gmail с помощью JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Попытка отправить календарный приглашение на мой Gmail с помощью Java

Сообщение Anonymous »

Я пытаюсь отправить календарный приглашение с помощью Java и Spring Boot. Вот мой код. < /p>
package com.mail;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import jakarta.mail.internet.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import jakarta.mail.util.ByteArrayDataSource;

@SpringBootApplication
public class SendMailApplication implements CommandLineRunner {

@Value("${spring.mail.username}")
private String username;

@Value("${spring.mail.password}")
private String password;

public static void main(String[] args) {
SpringApplication.run(SendMailApplication.class, args);
}

@Override
public void run(String... args) throws ParseException {
sendEmail();
}

private JavaMailSender getMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername(username);
mailSender.setPassword(password);

Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");

return mailSender;
}

private void sendEmail() throws ParseException {
JavaMailSender mailSender = getMailSender();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse("2025-04-02");
String startTime = "11:30 AM";
String lab = "Home";
List attendees = Arrays.asList("[email protected]");

MimeMessagePreparator preparator = mimeMessage -> {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setTo("[email protected]");
helper.setFrom(username);
helper.setSubject("Lab Appointment Confirmation");

// Email Body with ICS Inline
String emailBody = "Hi,

Your lab appointment has been scheduled.

Thanks!";
helper.setText(emailBody, true);

// Generate ICS Content
String icsContent = generateICSContent(date, startTime, lab, attendees);

// Attach ICS file
ByteArrayDataSource dataSource = new ByteArrayDataSource(icsContent, "text/calendar; charset=UTF-8; method=REQUEST");
helper.addAttachment("invite.ics", dataSource);

// Add Calendar Invite as an inline alternative content
helper.getMimeMessage().setContent(icsContent, "text/calendar; charset=UTF-8; method=REQUEST");
};

try {
mailSender.send(preparator);
System.out.println("Email sent successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}

private String generateICSContent(Date date, String startTime, String lab, List attendees) {
try {
ZoneId estZone = ZoneId.of("America/New_York");
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(estZone).toLocalDate();

DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("hh:mm a", Locale.US);
LocalTime startTimeParsed = LocalTime.parse(startTime, timeFormatter);
LocalTime endTime = startTimeParsed.plusHours(1);

ZonedDateTime start = ZonedDateTime.of(localDate, startTimeParsed, estZone).withZoneSameInstant(ZoneOffset.UTC);
ZonedDateTime end = ZonedDateTime.of(localDate, endTime, estZone).withZoneSameInstant(ZoneOffset.UTC);

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'");

StringBuilder icsContent = new StringBuilder();
icsContent.append("BEGIN:VCALENDAR\n")
.append("VERSION:2.0\n")
.append("CALSCALE:GREGORIAN\n")
.append("METHOD:REQUEST\n")
.append("BEGIN:VEVENT\n")
.append("UID:").append(UUID.randomUUID()).append("\n")
.append("DTSTAMP:").append(ZonedDateTime.now(ZoneOffset.UTC).format(dtf)).append("\n")
.append("DTSTART:").append(start.format(dtf)).append("\n")
.append("DTEND:").append(end.format(dtf)).append("\n")
.append("SUMMARY: Lab Appointment\n")
.append("DESCRIPTION:Lab Appointment at ").append(lab).append("\n")
.append("LOCATION:").append(lab).append("\n")
.append("ORGANIZER;CN=LAB:mailto:").append(username).append("\n");

for (String attendee : attendees) {
icsContent.append("ATTENDEE;CN=").append(attendee).append(";RSVP=TRUE:mailto:").append(attendee).append("\n");
}

icsContent.append("STATUS:CONFIRMED\n")
.append("END:VEVENT\n")
.append("END:VCALENDAR");

return icsContent.toString();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
< /code>

Я в настоящее время использую Localhost для тестирования, и это мой пример кода, может кто -нибудь, пожалуйста, помогите мне с этим. Я вижу файл тела и ICS в моем Gmail.

Подробнее здесь: https://stackoverflow.com/questions/795 ... using-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Попытка отправить календарный приглашение на мой Gmail с помощью Java
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Календарный формат даты: dd/mm/yyyy - приглашение на встречу [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Календарный формат даты: dd/mm/yyyy - приглашение на встречу [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как отправить приглашение в LinkedIn на Android
    Гость » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Как отправить приглашение по электронной почте для Testflight для внутреннего тестера?
    Anonymous » » в форуме IOS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»