Использование Microsoft Graph для отправки электронной почты в Liferay 7.3 не позволяет устранить зависимостиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Использование Microsoft Graph для отправки электронной почты в Liferay 7.3 не позволяет устранить зависимости

Сообщение Anonymous »

Изначально я отправлял электронные письма из приложения Liferay 7.3 через JavaMail (SMTP). SMTP использовался для ретрансляции через наш экземпляр Exchange 365. Мне пришлось перейти на другой метод, поэтому я решил использовать Graph для доступа к Exchange 365, потому что это выглядело просто....
Проблема в том, что я получаю "org.osgi.framework .BundleException: не удалось разрешить модуль: org.bsfinternational.dashboard [1147]_ Неразрешенное требование: Import-Package: com.azure.core.credential_ [Sanitized]"
Обычно мне удавалось решить эту проблему, дважды проверив записи build.gradle, чтобы убедиться, что я учел зависимости. Вот что у меня есть:
// Ядро Azure
реализация 'com.azure:azure-core:1.43.0'
реализация 'com.azure:azure-core-http-netty:1.15.0'
// Включение пакета SDK в качестве зависимости
реализация 'com.microsoft.graph:microsoft-graph:5.57.0'
реализация 'com.microsoft.graph:microsoft-graph-auth:0.3.0'
// Включить удостоверение Azure для проверки подлинности.
реализация 'com.azure:azure-identity:1.9.0'
Я мог бы опубликуйте код, но это не кажется это проблема с кодом, потому что код компилируется. Сборка прошла успешно в Gradle. Когда я развертываю OSGI, выдается ошибка сбоя зависимости. Я дважды проверял зависимости несколько раз. Я попытался исключить некоторые пакеты из файла bnd.bnd проекта. Кажется, ничего не работает. Я предполагаю, что мне не хватает какой-то транзитивной зависимости, но я не могу найти никакой документации, указывающей на необходимость другой библиотеки. Я пробовал разные версии библиотек, включал и опускал их. Я могу скомпилировать код, но не могу его развернуть. Я новичок в API Graph, но API выглядит довольно просто.
Оболочка GoGo в Liferay бесполезна. Он говорит мне именно то, что говорит мне развертывание: «Нерешенное требование». Я пытался найти лучший способ понять дерево зависимостей, но, судя по тому, что я прочитал, мне не хватает каких-либо необходимых зависимостей. Я уже сталкивался с этой проблемой в других проектах Liferay, но всегда мог методом проб и ошибок выяснить, чего не хватает. На этот раз не повезло.
Любые идеи на этом этапе будут полезны. Спасибо.
Пример кода здесь:

Код: Выделить всё

public static int sendExchangeEmail(String fromName, String fromAddress, String toAddress, String toName, String subject, String emailbody, String replyT, boolean htmlFormat)
throws SystemException
{
int messageID = 0;

String clientId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
String clientSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
String tenantId ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

// Create credentials
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder().clientId(clientId).clientSecret(clientSecret).tenantId(tenantId).build();

// Initialize authentication provider and Graph client
final TokenCredentialAuthProvider authProvider = new TokenCredentialAuthProvider(clientSecretCredential);
final GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();

// Construct the email message
com.microsoft.graph.models.Message message = new com.microsoft.graph.models.Message();

message.subject = subject;
ItemBody body = new ItemBody();
body.contentType = BodyType.TEXT;
body.content = emailbody;
message.body = body;
LinkedList toRecipients = new LinkedList();
Recipient recipient = new Recipient();
EmailAddress emailAddress = new EmailAddress();
emailAddress.address = "[email protected]";
emailAddress.name = toName;
recipient.emailAddress = emailAddress;
toRecipients.add(recipient);
message.toRecipients = toRecipients;
Recipient from = new Recipient();
from.emailAddress = new EmailAddress();
from.emailAddress.address = fromAddress;
from.emailAddress.name = fromName;
message.from = from;
LinkedList replyToRecipients = new LinkedList();
Recipient replyTo = new Recipient();
replyTo.emailAddress = new EmailAddress();
replyTo.emailAddress.address = replyT;
replyToRecipients.add(replyTo);
message.replyTo = replyToRecipients;
// Create the parameter set
UserSendMailParameterSet parameterSet = new UserSendMailParameterSet().newBuilder().withMessage(message).withSaveToSentItems(false).build();
// Don't save to Sent Items folder
// Send the email
try {
graphClient.me().sendMail(parameterSet).buildRequest().post();

System.out.println("Email sent successfully!");

} catch (Exception e) {

e.printStackTrace();

System.err.println("Error sending email: " + e.getMessage());

}
return messageID;

}
Это не отдельная программа. Это один из многих методов в этом конкретном исходном файле. Соответствующие импорты, добавленные для компиляции программы:

Код: Выделить всё

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;

import com.microsoft.graph.models.*;
import com.microsoft.graph.models.UserSendMailParameterSet;
import com.microsoft.graph.models.BodyType;
import com.microsoft.graph.models.ItemBody;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
И опять же, это проблема не кода, а проблемы с развертыванием. При развертывании в стеке OSGI чего-то не хватает, из-за чего программа не развертывается.

Подробнее здесь: https://stackoverflow.com/questions/792 ... dependency
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»