मैं निम्नलिखित simplejavamail कार्यान्वयन के साथ अपने ऐप से ईमेल भेजने का प्रयास कर रहा हूं:

Email email = EmailBuilder.startingBlank()
        .from("from_name", "my_email@yahoo.com")
        .to("from_name", "my_email@yahoo.com")          //to myself
        .to("recipient2_name", "mail_2@gmail.com")
        .withSubject("subject title")
        .withPlainText("Hello World!!")
        .buildEmail();

Mailer mailer = MailerBuilder
    .withSMTPServer("smtp.mail.yahoo.com", 465, "my_email@yahoo.com", "my_password")
    .withTransportStrategy(TransportStrategy.SMTPS)
    //.async()
    .buildMailer();
    //.sendMail(email);
    //.sendMail(email, true);

try {
    mailer.sendMail(email);
} catch (MailException e) {
    e.printStackTrace();
}

System.out.println("Exiting...");

और यह सफलतापूर्वक मेरे सभी (दो) ईमेल भेजता है: मुझे यह पता है क्योंकि मुझे अपने सामान्य ईमेल क्लाइंट पर (दोनों) ईमेल प्राप्त हो रहे हैं।
हालांकि, यह Mailer.sendMail(email) से कभी वापस नहीं आता है; , यानी, "बाहर निकल रहा है..." कभी प्रदर्शित नहीं होता है।

मेरी ऐप आवश्यकताओं के बाद, मुझे वास्तव में परवाह नहीं है कि इसे सिंक या एसिंक्स निष्पादित किया गया है या नहीं। फिर भी, मुझे उम्मीद है कि मेरी दिनचर्या अंततः वापस आ जाएगी और, किसी तरह, निष्पादन को आगे बढ़ाएगी।

तो, कोई विचार है कि Mailer.sendMail(email) से मेरी दिनचर्या को कैसे वापस लाया जाए और निष्पादन जारी रखा जाए?
अग्रिम धन्यवाद!



WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.mail.util.SocketFetcher (file:/F:/CW/workspace/Email_01/lib/jakarta.mail-1.6.5.jar) to method sun.security.util.HostnameChecker.getInstance(byte)
WARNING: Please consider reporting this to the maintainers of com.sun.mail.util.SocketFetcher
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

चूंकि ये सिर्फ चेतावनियां हैं, मैं वास्तव में चिंतित नहीं हूं... या मुझे ऐसा करना चाहिए?

1
caecilius 1 पद 2020, 01:06

1 उत्तर

सबसे बढ़िया उत्तर

कुछ अतिरिक्त खुदाई के बाद, मुझे लगता है कि मुझे समस्या मिली:

  1. सबसे पहले, और शायद सबसे महत्वपूर्ण, निष्पादन वास्तव में "बाहर निकल रहा है ..." प्रदर्शित कर रहा है, जिसका अर्थ है कि यह Mailer.sendMail(email) से लौट रहा है और निष्पादन जारी रखता है। किसी तरह, शायद विभिन्न चेतावनियों और इस तथ्य के कारण कि मेरा वीएम कभी नहीं मरा, मैंने इस महत्वपूर्ण जानकारी को याद किया और बस अपने ऐप को लटका हुआ मान लिया। मेरा बुरा :-(

  2. वैसे भी, मुझे अभी भी लगता है कि एक (ज्ञात) बग (सरल-जावा-मेल-6.4.4) है। कुछ असंबंधित बग चर्चा थ्रेड के बाद (https://github.com/bbottema/ simple-java-mail/issues/204) bbottema की एक टिप्पणी मेरी समस्या की सीमा को स्पष्ट कर सकती है:

"मैंने पाया कि स्थिर शून्य मुख्य (और शायद जूनिट टेस्ट) से मेल भेजते समय, जावा प्रक्रिया ईमेल भेजने के बाद वापस नहीं आती और बस लटकती है। कनेक्शन पूल को बंद करने से उस समय उस मुद्दे को हल किया जाता है।"

वास्तव में, जैसा कि मैं सिर्फ पुस्तकालय अवधारणा का परीक्षण कर रहा था, मैं स्थिर शून्य मुख्य से मेल भेज रहा था। इसके अलावा, "ईमेल भेजने के बाद जावा प्रक्रिया वापस नहीं आएगी और बस हैंग हो जाएगी"। इस प्रकार मैं इसे केवल एक ज्ञात बग मानता हूँ।
साथ ही, जैसा कि सुझाव दिया गया है, मैंने अंततः कॉल करके समस्या का समाधान किया: mailer.shutdownConnectionPool();

अपना समय देने के लिए धन्यवाद!

1
caecilius 1 पद 2020, 03:58