Last active
February 9, 2025 04:23
-
-
Save cptdanko/6a54ae27d8cc1c3874b6fd082d3ee7cc to your computer and use it in GitHub Desktop.
How to send an email in Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MailService { | |
/** | |
* AES details | |
*/ | |
@Autowired | |
private org.springframework.mail.javamail.JavaMailSender javaMailSender; | |
public ServiceResponse sendEmail(EmailRequest emailRequest) { | |
log.info("In the sendEmail function"); | |
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage(); | |
StringBuilder builder = new StringBuilder(); | |
builder.append(emailRequest.getBody()); | |
try { | |
// if the email request contains any attachments, then send it | |
for (String filename : emailRequest.getFilesToAttach()) { | |
log.info("Filename is {}", filename); | |
org.springframework.mail.javamail.MimeMessageHelper messageHelper = new org.springframework.mail.javamail.MimeMessageHelper(mimeMailMessage, true); | |
byte[] fileData = s3Repository.getDataForFile(filename); | |
String name = filename.substring(filename.indexOf("/") + 1); | |
String extension = name.substring(name.lastIndexOf('.') + 1); | |
log.info("File extension is {}", extension); | |
ByteArrayResource fileDataResource = new ByteArrayResource(fileData); | |
messageHelper.addAttachment(name, fileDataResource); | |
messageHelper.setText(builder.toString(), true); | |
} | |
mimeMailMessage.setFrom("admin@mydaytodo.document-sharing.com"); | |
mimeMailMessage.setSubject(emailRequest.getSubject()); | |
addRecipients(Message.RecipientType.TO, new String[]{emailRequest.getTo()}, mimeMailMessage); | |
if(emailRequest.getCc() != null) | |
addRecipients(Message.RecipientType.CC, emailRequest.getCc(), mimeMailMessage); | |
if(emailRequest.getBcc() != null) | |
addRecipients(Message.RecipientType.BCC, emailRequest.getBcc(), mimeMailMessage); | |
javaMailSender.send(mimeMailMessage); | |
log.info("Sent email"); | |
return ServiceResponse.builder() | |
.data(builder.toString()) | |
.status(HttpStatus.SC_NO_CONTENT) | |
.build(); | |
} catch (MailException e) { | |
log.error(e.getMessage()); | |
log.error(e.getLocalizedMessage()); | |
throw new RuntimeException(e.getMessage()); | |
} catch (MessagingException me) { | |
log.error(me.getMessage()); | |
log.info("Messaging exception occurred with {}", me.getLocalizedMessage()); | |
throw new RuntimeException(me); | |
} catch (IOException ioe) { | |
log.error(ioe.getMessage()); | |
log.info("IO exception occurred while sending mail {}", ioe.getLocalizedMessage()); | |
throw new RuntimeException(ioe); | |
} | |
} | |
public void addRecipients(Message.RecipientType recipientType, String[] addresses, MimeMessage message) throws MessagingException, AssertionError { | |
assert addresses.length > 0; | |
jakarta.mail.internet.InternetAddress[] internetAddresses = new jakarta.mail.internet.InternetAddress[addresses.length]; | |
int idx = 0; | |
for (String s : addresses) { | |
internetAddresses[idx] = new InternetAddress(s); | |
idx += 1; | |
} | |
message.setRecipients(recipientType, internetAddresses); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment