問題タブ [greenmail]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 電子メールを送信するための Java フレームワーク
次の機能を備えた大量の電子メールを確実に送信するための Java のフレームワークを知っていますか?
- メールの送受信
- キューからの電子メールを同時に処理してスループットを最大化する
- 配信できなかったメールを追跡する
自分で書くのはそれほど難しいことではないことはわかっていますが、再利用できる洗練されたものが既にあるかどうか疑問に思っていました。
更新: 私の質問の使用例は、ニュースレターやスパムの送信ではありません。これは、5 分以内に 50,000 通の電子メールを送信するなど、緊急の一括通知です。また、独自のメール サーバーを実装したくありません。JavaMail API で既存のメール サーバーを使用したいと考えています。しかし、JavaMail API には、電子メールをキューイングして同時に送信し、送信できなかった電子メールを追跡するための機能はありません。
java - SMTPS/SSL に Javamail と Greenmail を使用する
JavaMail SMTP または SMTPS を使用して、SSL および認証を介して、実行中のGreenmailサーバーにメッセージを送信するテストを作成しようとしています。
私が望んでいることを正確に行う必要がある簡単な小さなサブを作成しました。
私の問題は、いくつかの例外が発生することです。
ここで他のいくつかの回答を見てみましたが、何かが欠けているに違いありません:
- vps を介して安全なメールを送信するための JavaMail - SSLHandshake Exception、PKIX パスの構築に失敗したなど - メールを送信できません
- PKIX パスの構築に失敗しました: 要求されたターゲットへの有効な証明書パスが見つかりません
- TLS での JavaMail の使用
長い投稿で申し訳ありませんが、アドバイスをよろしくお願いします。
java - SMTP サーバーをインストールせずに Greenmail をテストする
Greenmail を使用して、ローカルホストで電子メール機能を単体テストしようとしています。問題は、SMTP サーバーをまだインストールしていないことです。インストールするのは面倒だと感じています。私の期待は、送信メールコードを同じに保つことができる無料のライブラリがあるはずですが、実際に電子メールをSMTPサーバーに送信するのではなく、ローカルマシンに送信して、それらを取得できるようにすることです(ユニットのために)テスト)。
Grails での開発時に Greenmail を使用したことがありますが、その経験は素晴らしいものです。しかし、Spring Framework に似たものは見つかりません。Greenmailのページには、JBoss にバンドルされたモック SMTP サーバーがあると書かれています。しかし、現在私の Web アプリケーションは Tomcat で実行されているため、JBoss を実行したくありません。
Tomcat 用の同様のサービスは既にありますか? または、送信された電子メールを取得できるローカルホストにテスト電子メールを送信するより良い方法はありますか?
更新:
Ralph の方法を使用してみましたが、それでも同じ例外が発生します。
java - Junit Test Fail で Greenmail がシャットダウンしない
Junit テスト ケースが失敗したときに Greenmail が 3025 ポートを占有しないように、Greenmail を停止する方法を見つけようとしています。
単体テストが失敗すると、Junit は @After アノテーションをバイパスするように見え (間違っていれば正しい)、次のテストを続行します。残念ながら、他のテストでは @Before が実行され、ポート 3025 へのフックを試みる新しい greenmail サーバーが開始されるため、別のテストではエラーが発生します。
理想的には、実際に失敗したものにのみ失敗が表示され、Greenmail の問題が原因で 1 つまたは 2 つのテスト ケースが残りのテスト スイートに失敗しないようにする必要があります。
何か助けはありますか?
サンプルコード
java - 送信された電子メールのテスト - Dumbster と greenmail が送信された JavaMail をキャッチしない
Dumbsterを統合して、送信メールの JavaMail ベースの通知機能をテストしようとしています。電子メールは送信されますが、私のテストでは Dumbster は受信しません。これを機能させるために追加の構成が必要かどうかはわかりませんが、ダムスターのホームページには、ポート 25 の smtp 経由で送信されたメールを自動的にリッスンすると書かれています。
これは私たちの Java メール設定です:
Mailer クラスは、JavaMailer を注入するだけです。
彼らのページに示されているように、テストは非常に簡単です。
私が言ったように、メールは送信されますが、Assert は失敗します。
何か案は?
ところで:Greenmailも試しましたが、同じ結果になりました:
Maven はわずかに異なります:
テスト
java - GreenMailが受信したメールのプロパティにアクセスできません
単体テスト用のモックアップメールサーバーとしてGreenMailを使用しようとしています。IMAP / POP3リクエストを待ってダミーメールを配信するのが仕事ですが、動作させることができません。
ここでは問題ありません。これまでの出力は次のようになります。
**クラス:クラスjavax.mail.internet.MimeMessage **
差出人:someone@localhost.com
宛先:jdtest @ localhost
件名:テストEメール
内容:これはテスト用の電子メールです。
その後、GreenMailIMAPサーバーからメールを取得しようとします。
これに対する私の報酬は
メッセージのサイズ:1
**クラス:クラスcom.sun.mail.imap.IMAPMessage **
およびFolderClosedException:
javax.mail.FolderClosedException:* BYE JavaMail Exception:com.sun.mail.imap.IMAPMessage.loadEnvelope(IMAPMessage.java:1217)at com.sun.mail.imap.IMAPMessage.getFrom(IMAPMessage。 java:252)at jd.controlling.EMailMonitoringTest.test(EMailMonitoringTest.java:85)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:601)at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:44)at org org.junit.runners.model.FrameworkMethodの.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)。invokeExplosively(FrameworkMethod.java:41)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner .java:71)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)at org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:193)at org.junit.runners.ParentRunner$1。 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)のschedule(ParentRunner.java:52)org.junit.runners.ParentRunner.access $ 000(ParentRunner。java:42)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184)at org.junit.runners.ParentRunner.run(ParentRunner.java:236)atorg.eclipse.jdt.internal.junit4。 runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner。 runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner。 java:390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)java:236)org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse .jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)java:236)org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse .jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner。 java:390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner。 java:390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
folder.getMessage(0)にアクセスしようとすると、IndexOutOfBoundsExceptionが発生しますが、配列に格納されているクラスIMAPMessageのメッセージが1つあります。誰かがこれについて知っていますか?
はい、hashCodeで例を試しましたが、同じ理由で失敗します...受信したIMAPメッセージのプロパティにアクセスするときにFolderClosedExceptionが発生します...
ありがたいことに、どんなヒントも受け入れます。
email - Greenmail ERROR "Bad or Malformed request" を含む Squirrelmail
Greenmailは、SMTP、POP3、IMAP メールのモック サービスであり、後で確認するためにメールを保持するスタブを持つ実際のメール サーバーの代わりに、メール テストに最適です。
Squirrelmailは PHP ベースの Web メール インターフェイスで、greenmail にアクセスするために使用するつもりですが...
squirrelmail からのメールを開こうとするとすぐに、次のメッセージが表示されます。
エラー: 要求が正しくないか、形式が正しくありません。
クエリ: FETCH 1 BODY[HEADER]
サーバーの応答: 予想:'(' 検出:'B' コマンドは 'UID |||' である必要があります
それは squirrel 1.4.22 でした。今日、svn トランクsquirrelmail-20140131_0200-SVN.devel.tar.gz
をインストールしようとしても、まったく同じエラーが発生しました。
squirrel に代わる他の Web メールを試してみましたが、greenmail のメールを開くことができた唯一の Web メール クライアントであるatmail トライアルを除いて同様のエラーが発生しました。Telnet はうまく機能しますが、ここでやろうとしていることには不十分です。
したがって、atmail でできるのであれば、ここで squirrelmail 側で何かを行う必要があるか、imap に関連する設定がここにないのでしょうか?
atmail は、squirrelmail と同じ php 5.3.10、apache2、ubuntu の正確な 64 スタックでテストされていることに注意してください。
エラーを再現するために、ここでオープンソースの Vagrant VMをセットアップしました
更新 1
私はyawebmail Webクライアントをいくつかの便利なアップデートで使用して、電子メールのエンドツーエンドのテストをブラウザにとどめます。Yawebmail には、不正な形式のリクエストの問題はありません。
更新 2
素晴らしいニュース!Greenmail はgithub に移動され、この質問は公式リポジトリの問題になりました。
java - greenmail サーバーがメールを受信しない
Greenmail を介した電子メールのクラスの My Unit Test
パブリック クラス GreenMailTest {
/li>このコードを使用して、junit で電子メール サーバーをテストしました。
しかし、サーバーはメッセージを返しません
私が間違ったこと。
コードを変更します 確認してください
java - Junit mokito util.properties は、moking 後に null を表示します
私は、mokito で greenmail と JUNIT を使用してテストするメールを書いていますが、
when(emailproperties.getUsername()).thenReturn("abc@gmail.com");を使用する場合ヌルを表示
- これが私のコードです
public class EmailServiceImplTest {
- デバッグするとnullが表示されます
email - imaps サーバーをシミュレートする - Greenmail
imaps サーバーをシミュレートするために Greenmailを使用したいと考えています。サーバーをシステム テストに使用したい。greenmail サーバーを実行してメールを配信し、アプリ サーバーで実行されるジョブからメールを取得したい。私の質問は、GreenMail.start と GreenMail を Web アプリケーションとして展開することの違いは何ですか。GreenMail.start はリッスンするサーバーをデプロイし、別のマシンから imaps リクエストを送信できますか?
GreenMail.start を使用し、GreenMail を webapp としてデプロイしない理由は、テストを実行するたびに greenmail サーバーに電子メール アカウントを作成する必要があるためです。これは、テストが異なるマシンで同時に実行されるためです。すべてのマシンに同じアカウントを使用したくありません。
私のコード:
tomcat に greenmail webapp をデプロイすると、予想どおり、定義したポートが使用されていることがわかります。しかし、mailServer.start() を使用すると、ポートが使用されていることがわかりません。なぜ?
ありがとう :)