我正在尝试使用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)
我已经使用了这个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>
application.properties:
spring.mail.host=smtp.gmail.com
spring.mail.port= 25
spring.mail.username= test
spring.mail.password= test
我的代码是:
@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;
}
这似乎是一个直截了当的问题,但别忘了我错过了什么!
发布于 2015-10-19 20:48:01
除了通过spring-boot-starter-mail
引入的那个版本之外,类路径上还有另一个版本的javax.mail.internet.MimeMessage
。常见的罪魁祸首是Geronimo的JavaMail规范jar。无论是哪种jar,都需要从应用程序的依赖项中排除它。如果你不确定它是从哪里来的,用-verbose:class
运行你的应用程序会告诉你。
发布于 2017-08-21 14:40:30
不要使用javaMailSender.createMimeMessage();
,请尝试使用MimeMessagePreparator
& MimeMessageHelper
发布于 2019-05-06 07:20:22
这对我很有效:
private TemplateEngine templateEngine;
@Autowired
private JavaMailSender mailSender;
@Autowired
public MailContentBuilder mailContentBuilder;
public void sendEmail(Users user, VerificationToken verificationToken) throws Exception {
MimeMessagePreparator messagePreparator = mimeMessage -> {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
String name = user.getFirstname();
String vtoken = verificationToken.getVtoken();
String url = "http://3.16.214.183:8888/home/".concat(String.valueOf(user.getUserid())).concat("/").concat(vtoken);
String content = mailContentBuilder.build(name, url);
helper.setTo(user.getEmail());
helper.setSubject("AppName - Please Verify Your Email");
helper.setText(content, true);
};
try {
mailSender.send(messagePreparator);
} catch (MailException e) {
e.printStackTrace();
}
}
它似乎只需要这个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
并且我设置了属性:
spring.mail.host=smtp.gmail.com
spring.mail.port=465
spring.mail.username=user.myapp@gmail.com
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
仅供参考,您选择的端口不是任意的-例如,Gmail需要465端口。此外,您还需要对发送Gmail帐户进行更改,以使其正常工作。我很久以前就这样做了,但我敢肯定我以前见过这种例外。本例中使用的lambda可能有助于解决这个问题,但不幸的是我不记得了。请随时与我联系,如果您需要任何澄清或希望看到更多的代码的例子,我得到了工作。
https://stackoverflow.com/questions/33213060
复制相似问题