package org.springblade.mdm.commons.service;
|
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.cxf.transport.http.HTTPConduit;
|
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.apache.cxf.endpoint.Client;
|
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
|
@Service
|
@Slf4j
|
public class InternalEmailService {
|
@Autowired
|
private InternalEmailProperties internalEmailProperties;
|
|
public void send(String fromid,String toids, String ccids, String bccids, String subject, String content, String[] paths) {
|
try {
|
// 创建动态客户端工厂
|
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
|
|
// 创建客户端
|
//Client client = dcf.createClient("http://localhost:8080/services/EmailService?wsdl");
|
Object[] result;
|
try (Client client = dcf.createClient(internalEmailProperties.getMailServiceAddr())) {
|
// 获取 HTTPConduit 并配置策略
|
HTTPConduit conduit = (HTTPConduit) client.getConduit();
|
HTTPClientPolicy policy = new HTTPClientPolicy();
|
|
// 设置连接超时(毫秒)
|
policy.setConnectionTimeout(10000);
|
// 设置接收响应超时(毫秒)
|
policy.setReceiveTimeout(10000);
|
// 设置重传次数
|
policy.setMaxRetransmits(2);
|
conduit.setClient(policy);
|
|
// 调用方法
|
result = client.invoke("sendInternalMail", fromid, toids, ccids, bccids, subject, content, null);
|
|
// 处理响应
|
if (result != null && result.length > 0) {
|
log.info("发送邮件响应:{} " ,result[0]);
|
}
|
}
|
}catch(Exception e) {
|
log.error("内部邮件发送失败",e);
|
}
|
}
|
}
|