자 바 는 Spring 로 메 일 을 보 내 는 실현 코드 를 사용 합 니 다.
Spring 이 자체 적 으로 MailSender 를 가 져 오 는 실현 은 바로 자바 MailSenderImpl 입 니 다.이것 은 자바 메 일 API 를 사용 하여 이메일 을 보 내 는 것 입 니 다.사용 하기 전에 자바 MailSenderImpl 을 Spring 응용 컨 텍스트 의 bean 으로 설치 해 야 합 니 다.다음 과 같 습 니 다.
@Bean
public MailSender mailSender (Environment env) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(env.getProperty("mailserver.host"));
return mailSender;
}
기본 적 인 상황 에서 자바 MailSenderImpl 은 메 일 서버 감청 25 포트 를 가정 합 니 다.메 일 서버 가 서로 다른 포트 를 감청 하면 port 속성 으로 포트 번 호 를 지정 하여 위의 mailSender()방법 에 추가 할 수 있 습 니 다.
mailSender.setPort(env.getProperty("mailserver.port"));
메 일 서버 에 인증 이 필요 하 다 면 username 과 password 를 설정 해 야 합 니 다.
mailSender.setUsername(env.getProperty("mailserver.username"));
mailSender.setPassword(env.getProperty("mailserver.password"));
이렇게 하면 자바 메 일 SenderImpl 설정 이 완료 되 었 습 니 다.여기에 메 일 세 션 을 만 들 수 있 습 니 다.JNDI 에 자바 x.mail.MailSession 을 설정 했다 면 자바 메 일 SenderImpl 에 자세 한 서버 디 테 일 을 설정 할 필요 가 없습니다.JNDI 에 설 치 된 MailSession 을 사용 하도록 설정 할 수 있 습 니 다.JndiObject Factory Bean 을 사용 하면 다음@Bean 방법 에서 bean 을 설정 할 수 있 습 니 다.JNDI 에서 MailSession 을 찾 을 수 있 습 니 다.
@Bean
public JndiObjectFactoryBean mailSession ( ) {
JndiObjectFactoryBean jndi = new JndiObjectFactoryBean();
jndi.setJndiName("mail/Session");
jndi.setProxyInterface(MailSession.class);
jndi.setResourceRef(true);
return jndi;
}
이 어 Spring 의
<jee:jndi-lookup id="mailSession" jndi-name="mail/Session" resource-ref="true">
메 일 세 션 이 준비 되면 mailSender bean 에 설치 할 수 있 습 니 다.
@Bean
public MailSender mailSender (MailSession mailSession) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setSession(mailSession);
return mailSender;
}
메 일 세 션 을 자바 MailSenderImpl 의 session 속성 에 설치 하면 원래 의 서버 설정 을 완전히 바 꿉 니 다.현재 메 일 세 션 은 JNDI 를 통 해 설정 하고 관리 합 니 다.자바 MailSenderImpl 은 메 일 서비스 기 를 처리 하지 않 고 메 일 을 보 내 는 데 전념 할 수 있 습 니 다.이 어 mailsender 를 우리 의 업무 층 실현 류 에 설치 해 야 합 니 다(SpitterEmail ServiceImpl 류 로 가정).다음 과 같 습 니 다.
@Autowired
JavaMailSender mailSender;
이 어 Spitter 사용자 에 게 이메일 을 보 내 친구 에 게 새로운 Spittle 을 쓰 라 고 알 리 려 면 이메일 을 보 내 는 방법 이 필요 합 니 다.이 방법 은 이메일 주소 와 Spittle 대상 정 보 를 받 아들 여야 합 니 다.다음 과 같은 방법 은 메 일 발송 기 를 사용 하여 이 기능 을 완성 하 는 것 입 니 다.
public void sendSimpleSpittleEmail (Stirng to, Spittle spittle) {
SimpleMailMessage message = new SimpleMailMessage();
String spitterName = spittle.getSpitter().getFullName();
message.setFrom("[email protected]"); // email
message.setTo(to);
message.setSubject("New spittle from " + spitterName);
message.setText(spitterName + "says: " + spittle.getText());
mailSender.send(message);
}
위의 코드 에서 마지막 으로 메 일 송신기 에 메 시 지 를 전달 하 는 send()방법 은 메 일 을 보 냅 니 다.첨부 파일 을 보 내 는 이메일
메시지 발송 에 성 공 했 습 니 다.첨부 파일 이 있 는 Email 을 보 내 려 고 합 니 다.첨부 파일 을 보 내 려 면 multipart 형식의 메 시 지 를 만들어 야 합 니 다.Email 은 여러 부분 으로 구성 되 어 있 습 니 다.그 중 일 부 는 Email 체 이 고 다른 부분 은 첨부 파일 입 니 다.multipart 형식의 Email 을 보 내 려 면 MIME 메 시 지 를 만들어 야 합 니 다.메 일 발송 기의 createMimeMessage()방법 부터 시작 할 수 있 습 니 다.
MimeMessage message = mailSender.createMimeMessage();
그러나 자바 x.mail.internet.MimeMessage 의 API 를 사용 하 는 것 은 상대 적 으로 번 거 롭 습 니 다.Spring 에서 제공 하 는 MimeMessage Helper 를 사용 하여 간편 하 게 조작 할 수 있 습 니 다.예화 할 때 MimeMessage 를 전달 할 수 있 습 니 다.
MimeMessageHelper helper = new MimeMessageHelper(message, true); // true multipart
MimeMessage Helper 인 스 턴 스 를 받 으 면 Email 메 시 지 를 조립 할 수 있 습 니 다.
String spitterName = spittle.getSpitter().getFullName();
helper.setForm("[email protected]");
helper.setTo(to);
helper.setSubject("New spittle from " + spitterName);
helper.setText(spitterName + " says: " +spittle.getText());
다음은 첨부 파일 을 추가 합 니 다.그림 을 예 로 들 면 이 자원 을 helper 의 addAttachment 방법 에 전달 하면 됩 니 다.
FileSystemResource image = new FileSystemResource("/file/test.png");
helper.addAttachment("test.png", image);
여 기 는 Spring 의 FileSystem Resource 를 사용 하여 클래스 경로 에 있 는 test.png 를 불 러 오고 addAttachment()를 호출 합 니 다.첫 번 째 매개 변 수 는 Email 에 첨부 된 이름 을 추가 하 는 것 이 고 두 번 째 매개 변 수 는 자원 파일 입 니 다.여기에 multipart 형식의 Email 이 구축 되 었 습 니 다.이제 MimeMessageHelper 를 사용 하여 첨부 파일 이 있 는 Email 을 보 내 려 고 합 니 다.전체 코드 는 다음 과 같 습 니 다.
public void sendSpittleEmailWithAttachment (Stirng to, Spittle spittle) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
String spitterName = spittle.getSpitter().getFullName();
helper.setForm("[email protected]");
helper.setTo(to);
helper.setSubject("New spittle from " + spitterName);
helper.setText(spitterName + " says: " +spittle.getText());
FileSystemResource image = new FileSystemResource("/file/test.png");
helper.addAttachment("test.png", image);
mailSender.send(message);
}
첨부 파일 이 있 는 이메일 을 성공 적 으로 보 냈 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.