krm*_*007 18 java spring jakarta-mail spring-boot
我正在尝试使用spring boot发送电子邮件,但我得到:
java.lang.UnsupportedOperationException: Method not yet implemented
at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:89)
at org.springframework.mail.javamail.SmartMimeMessage.<init>(SmartMimeMessage.java:52)
at org.springframework.mail.javamail.JavaMailSenderImpl.createMimeMessage(JavaMailSenderImpl.java:325)
Run Code Online (Sandbox Code Playgroud)
我使用过这个maven条目:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.6.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
application.properties:
spring.mail.host=smtp.gmail.com
spring.mail.port= 25
spring.mail.username= test
spring.mail.password= test
Run Code Online (Sandbox Code Playgroud)
我的代码:
@Autowired
private JavaMailSender javaMailSender;
private void send() {
MimeMessage mail = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mail, true);
helper.setTo("mymail@mail.co.uk");
helper.setReplyTo("someone@localhost");
helper.setFrom("someone@localhost");
helper.setSubject("Lorem ipsum");
helper.setText("Lorem ipsum dolor sit amet [...]");
} catch (MessagingException e) {
e.printStackTrace();
} finally {}
javaMailSender.send(mail);
//return helper;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个直接的,但不是我错过了什么!
Jea*_*ean 31
我的建议是使用it.ozimov:spring-boot-email-core库,它将所有这些实现隐藏在一个名为的单个组件后面EmailService- 好吧,我也在开发库:).
你的例子是:
@Autowired
public EmailService emailService;
public void sendEmail(){
final Email email = DefaultEmail.builder()
.from(new InternetAddress("mymail@mail.co.uk"))
.replyTo(new InternetAddress("someone@localhost"))
.to(Lists.newArrayList(new InternetAddress("someone@localhost")))
.subject("Lorem ipsum")
.body("Lorem ipsum dolor sit amet [...]")
.encoding(Charset.forName("UTF-8")).build();
emailService.send(email);
}
Run Code Online (Sandbox Code Playgroud)
具有以下内容application.properties:
spring.mail.host=your.smtp.com
spring.mail.port=587
spring.mail.username=test
spring.mail.password=test
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
Run Code Online (Sandbox Code Playgroud)
它还支持一些模板引擎,如Freemarker,Mustache和Pebble,同时您可以扩展它以使用更多的模板引擎.此外,它还支持电子邮件安排和优先级(例如,密码恢复的高优先级和简报的低优先级.
LinkedIn上有一篇文章解释了如何使用它.它就在这里.
And*_*son 17
javax.mail.internet.MimeMessage除了通过via引入的版本之外,你还有类路径的第二个版本spring-boot-starter-mail.常见的罪魁祸首是Geronimo的JavaMail spec jar.无论它是哪个jar,您都需要将其从应用程序的依赖项中排除.如果您不确定它的来源,运行您的应用程序-verbose:class会告诉您.
| 归档时间: |
|
| 查看次数: |
58849 次 |
| 最近记录: |