[SPRING] 속도 널 포인트 예외
SPRING속도 널 포인트 예외
속도 템플릿을 사용하여 메일을 보내고 싶습니다.
내 설정은 Spring 3.1 문서를 기반으로한다.
구성이있는 xml 파일이 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="sendMail" class="com.myclass.app.SendMail">
<property name="mailSender" ref="mailSender"/>
<property name="velocityEngine" ref="velocityEngine"/>
</bean>
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<value>
resource.loader=class
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</value>
</property>
</bean>
그런 다음 수업이 있습니다.
@Controller
public class SendMail{
private static final Logger logger = Logger.getLogger(SendMail.class);
private JavaMailSender mailSender;
private VelocityEngine velocityEngine;
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
this.velocityEngine = velocityEngine;
}
@RequestMapping(value = "/sendEmail", method = RequestMethod.GET)
public @ResponseBody void send(){
sentEmail();
}
private void sentEmail(){
try {
// SimpleMailMessage msg = new SimpleMailMessage(mailMessage);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,
true, "UTF-8");
helper.setFrom("from@from.com");
helper.setTo("myEmail");
helper.setSubject("title");
Map map = new HashMap();
map.put("user", "Piotr");
map.put("test", "TEST");
String text1 = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, "velocity.vm", map );
logger.info(text1);
String text = "test";
helper.setText(text, true);
mailSender.send(message);
} catch (Exception ex) {
System.out.println(ex.getStackTrace());
System.out.println(ex.getMessage());
}
}
}
내 VM 파일은 "resources"폴더에 있습니다.
그리고 나는 모두 ID "Null Point Exception"을 받는다;
응답은 아무것도 더주지 않는다.
어떤 아이디어가 있고, 무엇을해야합니까?
해결법
-
==============================
1.템플릿은 리소스에있을 수 없으며 velocityEngine에서 구성 할 수있는 클래스 경로에 있어야합니다. applicationContext.xml에서
템플릿은 리소스에있을 수 없으며 velocityEngine에서 구성 할 수있는 클래스 경로에 있어야합니다. applicationContext.xml에서
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="ADDRESS_OF_YOUR_SMTP_SERVER"/> <property name="defaultEncoding" value="UTF-8"/> <property name="port" value="XX_PORT_SERVER"/> <property name="javaMailProperties"> <props> <prop key="mail.smtps.auth">false</prop> <!-- depending on your smtp server --> <prop key="mail.smtp.starttls.enable">false</prop> </props> </property> </bean> <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean" p:resourceLoaderPath="classpath:META-INF/velocity" />
위 예제의 속성을 사용하려면 네임 스페이스 xmlns : p = "http://www.springframework.org/schema/p"를 잊지 마십시오.
Java 클래스 SendMail에서 @Autowired 주석을 추가하는 것을 잊지 마십시오.
@Autowired public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } @Autowired public void setVelocityEngine(VelocityEngine velocityEngine) { this.velocityEngine = velocityEngine; }
마지막으로 이메일을 보내려면 MimeMessagePreparator를 사용하십시오.
MimeMessagePreparator preparator = new MimeMessagePreparator() { @Override public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setTo("blabla@test.com"); message.setSubject("Email test"); String text = VelocityEngineUtils.mergeTemplateIntoString( velocityEngine, template, keywords); message.setText(text, true); } }; //Send email using the autowired mailSender this.mailSender.send(preparator);
from https://stackoverflow.com/questions/14522321/velocity-null-point-exception by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring + Mongo에서 문서 배열에서 항목 제거 (0) | 2019.05.26 |
---|---|
[SPRING] Spring -XD 스트림 배포 실패 (0) | 2019.05.26 |
[SPRING] ThreadPoolTaskExecutor로부터 호출 가능해, 또는 Runnable를 Callable에 캐스트 할 수있다 (0) | 2019.05.26 |
[SPRING] Java 스프링 mvc : IllegalStateException : [java.lang.String] 유형의 값을 필수 유형으로 변환 할 수 없습니다. (0) | 2019.05.26 |
[SPRING] Spring Data JPA - 검색 후 일시적인 필드를 설정하는 방법 (0) | 2019.05.25 |