java使用spring boot使用gmail smtp发送电子邮件
我正在尝试使用spring boot发送电子邮件。我有3个文件如下
邮件发送者。java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
public class MailSender
{
@Autowired
private static JavaMailSender mailSender;
public static void main(String[] args)
{
sendemail();
}
public static void sendemail() {
MimeMessage mail = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mail, true);
helper.setTo("emailsendertester24@gmail.com");
//helper.setReplyTo("someone@localhost");
helper.setFrom("emailsendertester24@gmail.com");
helper.setSubject("Lorem ipsum");
helper.setText("Lorem ipsum dolor sit amet [...]");
} catch (MessagingException e) {
e.printStackTrace();
} finally {}
mailSender.send(mail);
//return helper;
}
}
pom。xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Example</groupId>
<artifactId>SendingEmail</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
</dependencies>
</project>
和应用程序。属性
spring.mail.host=smtp.gmail.com
spring.mail.username=*****
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.socketFactory.port = 25
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
spring.mail.properties.mail.smtp.ssl.enable=true
所以现在,当我尝试运行MailSender类时,它在MimeMessage mail=MailSender行上给出了一个错误“线程中的异常”main“java.lang.NullPointerException”。createMimeMessage() 我知道mailSender属性为空,因为它无法从应用程序中获取属性。属性文件
# 1 楼答案
你可以在Spring-Boot-Email-Tools项目中寻找现成的解决方案
它还提供了一些有用的功能,比如调度、对模板引擎的支持以及REDIS的持久性
如果你需要发送纯文本邮件,你只需要导入核心模块
注释主要内容如下:
在
application.yml
(oproperties
)中提供配置,并在组件类中自动连接EmailService
,例如更多示例可以在该项目的GitHub存储库中找到。此外,LinkedIn上还有this article
# 2 楼答案
出现此问题是因为您在此块中使用了未正确终止的递归:
你打电话给邮件发送者。send()方法,该方法引用了他自己。更改内部调用方法