ACSSendMailConfiguration.java
- package com.sintia.ffl.admin.optique.catalogue.util.mail;
- import com.azure.communication.email.EmailClient;
- import com.azure.communication.email.EmailClientBuilder;
- import com.azure.core.http.HttpClient;
- import com.azure.core.http.ProxyOptions;
- import com.azure.core.util.HttpClientOptions;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Profile;
- import org.springframework.util.StringUtils;
- import java.net.InetSocketAddress;
- @Configuration
- @Profile("!smtp")
- @Slf4j
- public class ACSSendMailConfiguration {
- @Value("${ffl.mail.acs.resource-name:}")
- private String acsResourceName;
- @Value("${ffl.mail.acs.access-key:}")
- private String acsAccessKey;
- @Value("${ffl.mail.acs.proxyHost:}")
- private String httpsProxyHost;
- @Value("${ffl.mail.acs.proxyPort:}")
- private Integer httpsProxyPort;
- @Bean
- public EmailClient emailClient(){
- if(org.apache.commons.lang3.StringUtils.isBlank(this.acsResourceName)){
- throw new IllegalStateException("La propriété ffl.mail.acs.resource-name n'est pas définie.");
- }
- if(org.apache.commons.lang3.StringUtils.isBlank(this.acsAccessKey)){
- throw new IllegalStateException("La propriété ffl.mail.acs.access-key n'est pas définie.");
- }
- String connectionString = String.format(
- "endpoint=https://%1$s.communication.azure.com/;accesskey=%2$s",
- this.acsResourceName,
- this.acsAccessKey
- );
- HttpClientOptions httpClientOptions = new HttpClientOptions();
- ProxyOptions proxyOptions = null;
- if(StringUtils.hasText(this.httpsProxyHost) && this.httpsProxyPort != null) {
- proxyOptions = new ProxyOptions(
- ProxyOptions.Type.HTTP,
- new InetSocketAddress(this.httpsProxyHost, this.httpsProxyPort)
- );
- } else {
- log.info("Informations concernant le proxy HTTPS indéfinies ou incomplète, l'envoi de mails via Azure Communication Services n'utilisera pas de proxy.");
- }
- httpClientOptions.setProxyOptions(proxyOptions);
- HttpClient httpClient = HttpClient.createDefault(httpClientOptions);
- return new EmailClientBuilder()
- .connectionString(connectionString)
- .httpClient(httpClient)
- .buildClient();
- }
- }