サンプルのスプリング構成は以下のとおりです。Springで暗号化されたstore-uriを使用する方法ImapIdleChannelAdapter
<int-mail:imap-idle-channel-adapter id="mailAdapter"
store-uri="imaps://${"username"}:${"password"}@imap-server:993/INBOX"
java-mail-properties="javaMailProperties"
channel="emails"
should-delete-messages="false"
should-mark-messages-as-read="true">
</int-mail:imap-idle-channel-adapter>
私はパスワードフィールドを暗号化してプロパティファイルに保存し、コード内でそれを復号化したいと考えています。 ImapMailReceiverのカスタムバージョンにImapIdleChannelAdapterのmailReceiverプロパティを設定する方法がわかりません。 これを行う方法がある場合は教えてください。
すべての私の設定は、上記のようにXMLです。 defifnationを追加する上記の解決策はうまくいかないかもしれません。次に、私はXML + Javaの設定を使ってみました。
@Configuration
public class EmailConfiguration {
@Bean
public ImapIdleChannelAdapter customAdapter() {
ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(mailReceiver());
adapter.setOutputChannel(outputChannel());
adapter.setErrorChannel(errorChannel());
adapter.setAutoStartup(true);
adapter.setShouldReconnectAutomatically(true);
adapter.setTaskScheduler(taskScheduler());
return adapter;
}
@Bean
public TaskImapMailReceiver mailReceiver() {
TaskImapMailReceiver mailReceiver = new TaskImapMailReceiver("imaps://[username]:[password]@imap.googlemail.com:993/inbox");
mailReceiver.setShouldDeleteMessages(false);
mailReceiver.setShouldMarkMessagesAsRead(true);
//mailReceiver.setJavaMailProperties(javaMailProperties());
mailReceiver.setMaxFetchSize(Integer.MAX_VALUE);
return mailReceiver;
}
}
また、作成した空のerrorChannel、outputChannelなど私は春がJava @ConfigurationとXML設定および他の2つのインスタンスを作成しますことを観察しました。 Javaの設定だけを使用する予定だった場所。私がxml設定タグ を削除した場合、それは私のmailReceiverでsigle imapインスタンスを提供しますが、一度だけ実行すると定期的に実行されません。 IMAPSログも表示されません。
私はパスワードを暗号化するために多くのことをする必要があるかどうかは疑問です。私のアプローチでは何かが間違っていますか?
としてcustuomのENCタグ で暗号化された値を囲むために提出します。私が何か悪いことをしているかどうか教えてください。 – Chandra
あなたの解決策を実装した後で質問を編集しましたが、私はどこが間違っているのかをお答えください。 – Chandra
設定はOKです。アダプターをXMLから除去する必要があります。私はちょうど春の統合テストのテスト電子メールサーバーに対してそれをテストするクイックブートアプリを書いた、それは私のためにうまく動作します - 私の答えに編集を参照してください –