如何将SCP Neo中目标服务中的电子邮件配置绑定到Spring Boot应用程序?

2020-08-21 11:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想在SAP Cloud Platform Neo环境中部署Spring Boot应用程序。 它具有端点/sendmail ,该端点在被调用时向特定用户发送邮件。 现在,我已经在 application.properties 文件中对凭据进行了硬编码,并且可以正常工作。 该文件如下所示-

  spring.mail.host = smtp.gmail.com
 spring.mail.port = 587
 spring.mail.username = ...
 spring.mail.password = ...
 spring.mail.properties.mail.smtp.starttls.enable = true
 spring.mail.properties.mail.smtp.starttls.required = true
 spring.mail.properties.mail.smtp.auth = true
 spring.mail.properties.mail.smtp.connectiontimeout = 5000
 spring.mail.properties.mail.smtp.timeout = 5000
 spring.mail.properties.mail.smtp.writetimeout = 5000  

现在,我想利用SCP平台的目的地服务,在该服务中定义邮件帐户的凭据。 我想从目标服务中获取凭据。 因此,需要在 application.properties 文件中添加什么?

我曾在SCP-Cloud Foundry中执行过类似的操作,但用于其他服务(数据库)。 CF具有VCAP环境变量,可用于按以下方式获取凭据-

  spring.datasource.url = $ {vcap.services。$ {vcap.services.name} .credentials.url}  

是否可以在Neo中做同样的事情?

致谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我想在SAP Cloud Platform Neo环境中部署Spring Boot应用程序。 它具有端点/sendmail ,该端点在被调用时向特定用户发送邮件。 现在,我已经在 application.properties 文件中对凭据进行了硬编码,并且可以正常工作。 该文件如下所示-

  spring.mail.host = smtp.gmail.com
 spring.mail.port = 587
 spring.mail.username = ...
 spring.mail.password = ...
 spring.mail.properties.mail.smtp.starttls.enable = true
 spring.mail.properties.mail.smtp.starttls.required = true
 spring.mail.properties.mail.smtp.auth = true
 spring.mail.properties.mail.smtp.connectiontimeout = 5000
 spring.mail.properties.mail.smtp.timeout = 5000
 spring.mail.properties.mail.smtp.writetimeout = 5000  

现在,我想利用SCP平台的目的地服务,在该服务中定义邮件帐户的凭据。 我想从目标服务中获取凭据。 因此,需要在 application.properties 文件中添加什么?

我曾在SCP-Cloud Foundry中执行过类似的操作,但用于其他服务(数据库)。 CF具有VCAP环境变量,可用于按以下方式获取凭据-

  spring.datasource.url = $ {vcap.services。$ {vcap.services.name} .credentials.url}  

是否可以在Neo中做同样的事情?

致谢

付费偷看设置
发送
6条回答
d56caomao
1楼-- · 2020-08-21 11:53

嗨,

我根据 https://www.baeldung使用过Spring Boot Mail。 com/spring-email 并使用以下参数配置目标:

#mail.password = <<导出时已删除现有密码/证书>>
 #
 #Thu Mar 07 14:19:07 UTC 2019
 类型=邮件
 mail.user=***@gmail.com
 mail.transport.protocol = smtp
 mail.smtp.host = smtp.gmail.com
 名称= mymail
 mail.smtp.starttls.enable = true
 mail.smtp.port = 587
 mail.smtp.auth = true 

JavaMailSender使用从目标读取的属性。 在这种情况下,不必定义资源引用。 我已经在Neo Rot和Neo Amsterdam中测试了这种方法。

致谢

Karsten

(在 https: //help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/zh-CN/e70a574cbb57101494a781920e3c9d64.html 对我不起作用。)

读取目的地信息(简称):

web.xml

 <!-声明目标的JNDI查找->
 <资源参考>
  connectivityConfiguration 
  com.sap.core.connectivity.api.configuration.ConnectivityConfiguration 
  

Java(Spring" @Component"中的组件类)

 JndiTemplate jndiTemplate = new JndiTemplate();
 ConnectivityConfiguration配置=
      (ConnectivityConfiguration)jndiTemplate
 .lookup(" java:comp/env/connectivityConfiguration");
 DestinationConfiguration destConfiguration = configuration.getConfiguration(" mymail"); 
粗暴的香蕉
2楼-- · 2020-08-21 11:58

我在WEB-INF文件夹中有web.xml。 Infact也添加了所有neo sdk jar。 但是由于某种原因,该应用程序无法启动。 JNDI查找无法将目标服务中的电子邮件配置分配给spring boot邮件类。

您是否有使用此web.xml/JNDI查找进行邮件服务的参考应用程序? 也许我可以看一看,看看我的应用程序缺少什么。

此外,由于某些平台限制,Cloud Foundry暂时不可用。

Baoming ROSE
3楼-- · 2020-08-21 11:59

Hi Boudhayan,

SCP Neo中没有像CF中那样存在VCAP EV的概念,但是是的,您可以使用用于Neo的SCP SDK通过ConnectivityConfiguration接口获得目标的声明属性。 但是,如果您想利用SCP中Destinations的真正本质,则无需获取声明的属性,而是可以根据需要直接使用类型为'mail'的Destination发送电子邮件。 这是两个可以帮助您成功的主要步骤-

1-单击您在SCP Neo上部署的Java应用程序URL以获取电子邮件,然后在左侧转到"目标"选项卡,并创建"邮件"类型的目标并提供所有必需的配置。

2-使用@Resource(name =" mail/<创建的目标名称>")在Java代码中创建的目标,然后编写代码以使用javax.mail.session发送电子邮件。

谢谢

Manu

南山jay
4楼-- · 2020-08-21 11:56

嗨,Manu,

我创建了一个名为Session的目的地(类型:邮件),并将其上传到JAVA应用程序下。 它包含邮件所需的配置。 然后创建一个新的Controller类,该类触发邮件的发送。 但是,当应用程序部署在Neo-

上时,我遇到以下错误
 **************************
 申请启动失败
 ***************************

 <说明:

 一个组件需要找不到名为"邮件/会话"的bean。

 行动:

 考虑在配置中定义一个名为" mail/Session"的bean。

我正在遵循此处给出的示例发送邮件的教程

在那里,他们提到了一个特定的web.xml文件。 我在我的项目中找不到这个。

致谢

N-Moskvin
5楼-- · 2020-08-21 12:07

您好Boudhayan,

是的,您应该在WEB-INF文件夹下有一个web.xml文件,该文件的资源参考配置应类似于-

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
   演示
 
   <资源参考>
     邮件/会话
      javax.mail.session 
   
 

 
CJones
6楼-- · 2020-08-21 11:56

除了启用允许不太安全的应用之外,您可能还需要导航到 https://accounts.google.com/DisplayUnlockCaptcha ,然后单击继续

一周热门 更多>