Merge pull request 'email' (#34) from email into master

Reviewed-on: http://git.plannaplan.pl/filipizydorczyk/backend/pulls/34
This commit is contained in:
Marcin Woźniak 2020-12-21 17:11:32 +01:00
commit e18f285dd6
12 changed files with 151 additions and 9 deletions

View File

@ -40,6 +40,11 @@ W paczce dla proda w protpertiesach poufne dane odczytywane są ze zmiennych śr
- `PLANNAPLAN_MYSQL_DB` - nazwa bazy dancyh. W profilu **dev** jest to np test
- `PLANNAPLAN_MYSQL_DB_USERNAME` - nazwa użytkownika bazy
- `PLANNAPLAN_MYSQL_DB_PASSWORD` - hasło użytkownika bazy
- `PLANNAPLAN_EMAIL_HOST` - host naszego dostawcy maila z którego będziemy wssyłać wiadomości
- `PLANNAPLAN_EMAIL_PORT` - port naszego dostawcy maila
- `PLANNAPLAN_EMAIL_USERNAME` - login naszego maila
- `PLANNAPLAN_EMAIL_PASSWORD` - hasło naszego maila
- `PLANNAPLAN_EMAIL` - nasz adres maila
## Packaging

View File

@ -68,6 +68,12 @@
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,9 @@
{
"properties": [
{
"name": "plannaplan.email",
"type": "java.lang.String",
"description": "Email from which app sends message"
}
]
}

View File

@ -0,0 +1,38 @@
package com.plannaplan.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
/**
* Service to send emails
*/
@Service
public class EmailService {
@Autowired
private JavaMailSender emailSender;
@Value("${plannaplan.email}")
private String appEmail;
public EmailService() {
}
/**
* send simple text email
*
* @param destination destitnaion mail
* @param message text to be send
*/
public void sendMail(String destination, String message) {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom(appEmail);
mailMessage.setTo(destination);
mailMessage.setSubject("[Plan na plan] INFO");
mailMessage.setText(message);
emailSender.send(mailMessage);
}
}

View File

@ -0,0 +1,22 @@
package com.plannaplan.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class EventService {
@Autowired
private EmailService emailService;
@Scheduled(cron = "0 2 17 * * *")
public void collectGroupLosses() {
System.out.println("Checking for groups");
}
@Scheduled(cron = "0 30 17 * * *")
public void testMail() {
this.emailService.sendMail("kaczor982@gmail.com", "Cześć. Jestem Tomek.");
}
}

View File

@ -0,0 +1,29 @@
package com.plannaplan.services;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration
public class EmailServiceTest {
@Autowired
private EmailService service;
@Test
@Ignore
/**
* This test is ignored because we don't have way to check if email has arrived.
* Check mailchater to check this manually
*/
public void shouldSendSimpleEmail() {
this.service.sendMail("shouldSendSimpleEmail@EmailService.test", "This is totally simple message");
}
}

View File

@ -8,5 +8,11 @@ spring.jpa.hibernate.ddl-auto=create-drop
spring.jackson.serialization.fail-on-empty-beans=false
spring.main.allow-bean-definition-overriding=true
spring.jackson.default-property-inclusion = NON_NULL
spring.mail.host=localhost
spring.mail.port=1025
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
plannaplan.email = plannaplan.kontakt@gmail.com
server.port=1285

View File

@ -16,9 +16,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.EnableScheduling;
import com.plannaplan.services.ConfiguratorService;
@SpringBootApplication
@EnableScheduling
public class App {
public final static String API_VERSION = "v1";

View File

@ -9,6 +9,11 @@
"name": "plannaplan.frontendUrl",
"type": "java.lang.String",
"description": "Url where frontend app is located"
},
{
"name": "plannaplan.email",
"type": "java.lang.String",
"description": "Email from which app sends message"
}
]
}

View File

@ -8,7 +8,14 @@ spring.jpa.hibernate.ddl-auto=create-drop
spring.jackson.serialization.fail-on-empty-beans=false
spring.main.allow-bean-definition-overriding=true
spring.jackson.default-property-inclusion = NON_NULL
spring.mail.host=localhost
spring.mail.port=1025
# spring.mail.username=<login user to smtp server>
# spring.mail.password=<login password to smtp server>
spring.mail.properties.mail.smtp.auth=false
spring.mail.properties.mail.smtp.starttls.enable=false
logging.level.io.swagger.models.parameters.AbstractSerializableParameter=ERROR
server.port=1285
plannaplan.dev = true
plannaplan.frontendUrl = http://localhost:3000
plannaplan.email = plannaplan.kontakt@gmail.com

View File

@ -9,9 +9,15 @@ spring.jackson.serialization.fail-on-empty-beans=false
spring.main.allow-bean-definition-overriding=true
spring.jackson.default-property-inclusion = NON_NULL
logging.level.io.swagger.models.parameters.AbstractSerializableParameter=ERROR
spring.mail.host=${PLANNAPLAN_EMAIL_HOST}
spring.mail.port=${PLANNAPLAN_EMAIL_PORT}
spring.mail.username=${PLANNAPLAN_EMAIL_USERNAME}
spring.mail.password=${PLANNAPLAN_EMAIL_PASSWORD}
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
server.port=1285
plannaplan.email = ${PLANNAPLAN_EMAIL}
plannaplan.dev = false
plannaplan.frontendUrl= https://wmi.plannaplan.pl
security.require-ssl=true

View File

@ -20,3 +20,9 @@ services:
restart: always
ports:
- 8080:8080
mailcatcher:
image: schickling/mailcatcher:latest
ports:
- "127.0.0.1:1080:1080"
- "127.0.0.1:1025:1025"