我如何在 Spring 启动时使用 Mailgun 接收电子邮件
How can i receive emails with Mailgun in Spring Boot
基本上我想使用 REST-POST 请求接收电子邮件到我的电子邮箱。任何指示将不胜感激。我正在尝试使用 Mailgun 服务使其正常工作。到目前为止我得到了什么:
Email.java:
public class Email {
@NotNull
private String name;
@NotNull
private String email;
@NotNull
private String subject;
@NotNull
private String url;
@NotNull
@Size(min = 10)
private String messageText;
public String getName() {
return name;
}
public void setName(@NotNull String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(@NotNull String email) {
this.email = email;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
application.properties:
#TO DO: Set the mailgun props here
spring.mail.host=smtp.mailgun.org
spring.mail.port=2525
spring.mail.username=postmaster@sandbox**************************.mailgun.org
spring.mail.password=************************************
EmailConfig.java
@Component
public class EmailConfig {
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private int port;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
EmailController.java
@RestController
public class EmailController {
private EmailConfig emailConfig;
// this constructor performs autowired DIa
public EmailController(EmailConfig emailConfig) {
this.emailConfig = emailConfig;
}
@PostMapping("/sendEmail")
public void sendFeedback() {
// create mail sender
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(this.emailConfig.getHost());
mailSender.setPort(this.emailConfig.getPort());
mailSender.setUsername(this.emailConfig.getUsername());
mailSender.setPassword(this.emailConfig.getPassword());
// create an email instance
SimpleMailMessage mailMessage = new SimpleMailMessage();
// email.getEmail()
mailMessage.setFrom("admin@sportapp.bg");
mailMessage.setTo("zirow000@gmail.com");
// email.getSubject()
mailMessage.setSubject("Test subject");
// email.getMessageText()
mailMessage.setText("Test text !!!");
// send mail
mailSender.send(mailMessage);
}
}
我将在 AJAX 中使用这个 POST 请求来获取用户输入(姓名、电子邮件、主题和文本)并在我的 gmail 上接收它。至少那是我想做的(我希望这是可能的)。我已经将它部署在 Heroku 上并使用 Postman 执行一个空的 POST 请求。就像我说的那样,我们将不胜感激。
我通过在 mailgun 中添加一个路由 - catchall() 来解决它,它将邮件重定向到我的 gmail。
基本上我想使用 REST-POST 请求接收电子邮件到我的电子邮箱。任何指示将不胜感激。我正在尝试使用 Mailgun 服务使其正常工作。到目前为止我得到了什么:
Email.java:
public class Email {
@NotNull
private String name;
@NotNull
private String email;
@NotNull
private String subject;
@NotNull
private String url;
@NotNull
@Size(min = 10)
private String messageText;
public String getName() {
return name;
}
public void setName(@NotNull String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(@NotNull String email) {
this.email = email;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
application.properties:
#TO DO: Set the mailgun props here
spring.mail.host=smtp.mailgun.org
spring.mail.port=2525
spring.mail.username=postmaster@sandbox**************************.mailgun.org
spring.mail.password=************************************
EmailConfig.java
@Component
public class EmailConfig {
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.port}")
private int port;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
EmailController.java
@RestController
public class EmailController {
private EmailConfig emailConfig;
// this constructor performs autowired DIa
public EmailController(EmailConfig emailConfig) {
this.emailConfig = emailConfig;
}
@PostMapping("/sendEmail")
public void sendFeedback() {
// create mail sender
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(this.emailConfig.getHost());
mailSender.setPort(this.emailConfig.getPort());
mailSender.setUsername(this.emailConfig.getUsername());
mailSender.setPassword(this.emailConfig.getPassword());
// create an email instance
SimpleMailMessage mailMessage = new SimpleMailMessage();
// email.getEmail()
mailMessage.setFrom("admin@sportapp.bg");
mailMessage.setTo("zirow000@gmail.com");
// email.getSubject()
mailMessage.setSubject("Test subject");
// email.getMessageText()
mailMessage.setText("Test text !!!");
// send mail
mailSender.send(mailMessage);
}
}
我将在 AJAX 中使用这个 POST 请求来获取用户输入(姓名、电子邮件、主题和文本)并在我的 gmail 上接收它。至少那是我想做的(我希望这是可能的)。我已经将它部署在 Heroku 上并使用 Postman 执行一个空的 POST 请求。就像我说的那样,我们将不胜感激。
我通过在 mailgun 中添加一个路由 - catchall() 来解决它,它将邮件重定向到我的 gmail。