자 바 는 Spring 로 메 일 을 보 내 는 실현 코드 를 사용 합 니 다.

6010 단어 spring우편물
Spring Email 추상 적 인 핵심 은 MailSender 인터페이스 입 니 다.MailSender 의 실현 은 Email 서버 를 연결 하여 메 일 발송 기능 을 실현 할 수 있 습 니 다.다음 과 같 습 니 다.

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 의요 소 를 사용 하여 JNDI 에서 대상 을 가 져 올 수 있 습 니 다.여 기 는을 사용 하여 bean 을 만 들 수 있 습 니 다.JNDI 의 메 일 세 션 을 참조 합 니 다.

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

첨부 파일 이 있 는 이메일 을 성공 적 으로 보 냈 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기