2017-09-13 98 views
0

我一直試圖通過春季啓動發送電子郵件,我似乎不能成功。現在我一直在使用javamail api,但是想用Spring郵件使用springboot。從春季啓動應用程序發送電子郵件的問題

public class SendMail { 

    @Autowired 
    private JavaMailSender javaMailSender; 

    public void sendingMail(String to, String subject, String body) { 
     SimpleMailMessage message = new SimpleMailMessage(); 
     message.setTo(to); 
     message.setSubject(subject); 
     message.setText(body); 
     javaMailSender.send(message); 
    } 

} 

,這裏是我的郵件

@Controller 
public class ExamPle { 

    @Autowired 
    private SendMail sendMail; 

    @RequestMapping("/he") 
    public String homePage() { 
     sendMail.sendingMail("[email protected]", "Welcome George", "Sample Message here"); 
     return "Sent"; 
     } 
} 

我已經有了衝刺引導起動郵件在我的POM文件,但我不斷收到此錯誤信息。我甚至觀看了關於如何做到這一點的教程的YouTube視頻,但它不起作用。我正在使用Spring Tool Suite版本:3.9.0.RELEASE。

屬性文件

spring.mail.host=smtp.gmail.com 
spring.mail.username=my-email-address 
spring.mail.password=my-password 
spring.mail.port=587 
spring.mail.properties.mail.smtp.auth=true 
spring.mail.properties.mail.smtp.starttls.enable=true 
spring.mail.defaultEncoding=UTF-8 

2017年9月14日05:25:57.811 INFO 12576 --- [主] com.example.demo.EmaildemoApplication:在喬治 - MacBook-開始 EmaildemoApplication具有PID的Pro.local 12576 (由georgetebo在/ Users/georgetebo/STS Projects/Emaildemo開始) 2017-09-14 05:25:57.814信息12576 --- [main] com.example.demo.EmaildemoApplication:沒有活動的配置文件集, 回落到默認配置文件:默認2017-09-14 05:2 5:57.845 INFO 12576 --- [主要] ationConfigEmbeddedWebApplicationContext:刷新 org.springframework.boot[email protected]3d3fcdb0: 啓動日期[星期四09月14五點25分57秒WAT 2017];上下文層次根 2017-09-14 05:25:58.652 INFO 12576 --- [main] sbcetTomcatEmbeddedServletContainer:Tomcat初始化爲 端口:8080(http)2017-09-14 05:25:58.662 INFO 12576 --- [
main] o.apache.catalina.core.StandardService:啓動服務 [Tomcat] 2017-09-14 05:25:58.662 INFO 12576 --- [main] org.apache.catalina .core.StandardEngine:啓動Servlet引擎: Apache Tomcat/8.5.20 2017-09-14 05:25:58.714信息12576 --- [ost-startStop-1] oaccC [Tomcat]。[localhost]。[ ]: 初始化Spring嵌入式WebApplicationContext 2017-09-14 05:25:58.714 INFO 12576 --- [ost-startStop-1] o。 s.web.context.ContextLoader:根WebApplicationContext: 初始化在871 ms完成2017-09-14 05:25:58.821信息12576 --- [ost-startStop-1] osbwservlet.ServletRegistrationBean:映射servlet:'dispatcherServlet 'to [/] 2017-09-14 05:25:58.823 INFO 12576 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器: 'characterEncodingFilter'至:[/ ] 2017-09 -14 05:25:58.824 INFO 12576 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器:'hiddenHttpMethodFilter'到:[/] 2017-09-14 05:25:58.824 INFO 12576 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean:映射過濾器: 'htt pPutFormContentFilter'到:[/ ] 2017-09-14 05:25:58.824信息 12576 --- [ost-startStop-1] osbwservlet.FilterRegistrationBean: 映射過濾器:'requestContextFilter'到:[/] 2017 -09-14 05:25:58.848警告12576 --- [main] ationConfigEmbeddedWebApplicationContext:在上下文初始化期間遇到的異常 - 取消刷新嘗試: org.springframework.beans。factory.UnsatisfiedDependencyException: 創建名爲'examPle'的bean時出錯:通過字段'sendMail'表示的不滿意的依賴關係 ;嵌套異常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:否 類型爲'com.example.demo.SendMail'的合格bean可用: 期望至少1個符合自動連線候選者的Bean。 依賴註釋: {@ org.springframework.beans.factory.annotation.Autowired(required = true)} 2017-09-14 05:25:58.850 INFO 12576 --- [main] o.apache.catalina。 core.StandardService:停止服務[Tomcat的] 2017年9月14日05:25:58.861 INFO 12576 --- [主要] utoConfigurationReportLoggingInitializer:

錯誤開始的ApplicationContext。要顯示自動配置 報告,請啓用'debug'重新運行您的應用程序。 2017-09-14 05:25:58.927錯誤12576 --- [main] osbdLoggingFailureAnalysisReporter:

*********************** ****應用程序未能啓動


描述:

領域的Sendmail在com.example.demo.ExamPle所需類型的豆 'com.example.demo.SendMail' 可能不找到。

操作:

考慮您的 配置中定義類型 'com.example.demo.SendMail' 的豆。

這是我的POM文件

http://maven.apache.org/xsd/maven-4.0.0.xsd「> 4.0.0

<groupId>com.mailsender</groupId> 
<artifactId>MailSender</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>MailSender</name> 
<description>ZemoPoint for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.6.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<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>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

我已經卸載了我的jdk以及STS並安裝了新的副本。現在我收到此錯誤

+0

檢查你的pom文件,看看javax.mail是否被意外標記爲'provided';因此它在運行時丟失 – spiritwalker

+0

請將您的pom.xml文件的內容發佈。沒有它,很難確定你爲什麼會得到這個錯誤。 – g00glen00b

+0

@ spiritwalker @ g00glen00b根據要求添加pom文件。 – eightechess

回答

0

This Works。

@Service 
public class SendMail { 

@Autowired 
private JavaMailSender javaMailSender; 

    public void sendingMail(String to, String subject, String body) { 
    MimeMessage message=javaMailSender.createMimeMessage(); 
    MimeMessageHelper helper; 
    helper=new MimeMessageHelper(message,true); 
    helper.setTo(to); 
    helper.setSubject(subject); 
    helper.setText(body); 
    javaMailSender.send(message); 

}} 
0

您是否嘗試過dding javax.mail到你的pom? Spring郵件發件人對JavaMail有依賴性。

+0

無關緊要,'spring-boot-starter-mail'已包含郵件API實現:https://github.com/spring-projects/spring-boot/blob/eb4a9d87fde2579e1221a4faed3c0b432937fdd1/spring-boot-starters/spring- boot-starter-mail/pom.xml#L34-L37 – g00glen00b

+0

我看到了需要添加javax.mail的相同問題ClassNotFoundException:javax.mail.MessagingException – nole

0

看來你的屬性沒有正確獲取,例如:

spring.mail.properties.mail.smtp.auth=true 
spring.mail.properties.mail.smtp.starttls.enable=true 

你應該嘗試用其他的方式是這樣的:

JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 

mailSender.setHost(emailProperties.getHost()); 
mailSender.setPort(Integer.parseInt(emailProperties.getPort())); 
mailSender.setUsername(emailProperties.getUsername()); 
mailSender.setPassword(emailProperties.getPassword()); 

Properties javaMailProperties = new Properties(); 
javaMailProperties.put("mail.smtp.starttls.enable", "true"); 
javaMailProperties.put("mail.smtp.auth", "true"); 
javaMailProperties.put("mail.transport.protocol", "smtp"); 
javaMailProperties.put("mail.debug", "true"); 

mailSender.setJavaMailProperties(javaMailProperties); 

查看更多從帖子這樣Spring Boot Freemarker Email Template

希望這個幫助!

相關問題