के लिए कोई प्रदाता नहीं है, मैं एक सरल एप्लिकेशन करने के लिए जावामेल का उपयोग कर रहा हूं जो एक निर्देशिका में कुछ फाइलें पाता है जब एक ईमेल भेजता है। मैं इसे ग्रहण से काम करने में कामयाब रहा। मैं एप्लिकेशन चलाता हूं और इसे बिना किसी त्रुटि के ईमेल भेजता है।जावा मेल: smtp
लेकिन, जब मैंने जार बनाया और इसे निष्पादित किया, तो यह ईमेल भेजने वाले हिस्से में विफल रहता है। यह इस अपवाद देता है:
javax.mail.NoSuchProviderException: No provider for smtp
at javax.mail.Session.getProvider(Session.java:460)
at javax.mail.Session.getTransport(Session.java:655)
at javax.mail.Session.getTransport(Session.java:636)
at main.java.util.MailManager.sendMail(MailManager.java:69)
at main.java.DownloadsMail.composeAndSendMail(DownloadsMail.java:16)
at main.java.DownloadsController.checkDownloads(DownloadsController.java:51)
at main.java.MainDownloadsController.run(MainDownloadsController.java:26)
at java.lang.Thread.run(Unknown Source)
मैं इस पद्धति में पुस्तकालय का उपयोग कर रहा:
public static boolean sendMail(String subject, String text) {
noExceptionsThrown = true;
try {
loadProperties();
} catch (IOException e1) {
System.out.println("Problem encountered while loading properties");
e1.printStackTrace();
noExceptionsThrown = false;
}
Properties mailProps = new Properties();
String host = "mail.smtp.host";
mailProps.setProperty(host, connectionProps.getProperty(host));
String tls = "mail.smtp.starttls.enable";
mailProps.setProperty(tls, connectionProps.getProperty(tls));
String port = "mail.smtp.port";
mailProps.setProperty(port, connectionProps.getProperty(port));
String user = "mail.smtp.user";
mailProps.setProperty(user, connectionProps.getProperty(user));
String auth = "mail.smtp.auth";
mailProps.setProperty(auth, connectionProps.getProperty(auth));
Session session = Session.getDefaultInstance(mailProps);
//session.setDebug(true);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(messageProps.getProperty("from")));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
messageProps.getProperty("to")));
message.setSubject(subject);
message.setText(text);
Transport t = session.getTransport("smtp");
try {
t.connect(connectionProps.getProperty("user"), passwordProps
.getProperty("password"));
t.sendMessage(message, message.getAllRecipients());
} catch (Exception e) {
System.out.println("Error encountered while sending the email");
e.printStackTrace();
noExceptionsThrown = false;
} finally {
t.close();
}
} catch (Exception e) {
System.out.println("Error encountered while creating the message");
e.printStackTrace();
noExceptionsThrown = false;
}
return noExceptionsThrown;
}
मैं गुण फ़ाइलों से इन मूल्यों लोड हो रहा हूँ।
mail.smtp.host=smtp.gmail.com
mail.smtp.starttls.enable=true
mail.smtp.port=587
mail.smtp.auth=true
मैं SSL द्वारा मेजबान बदलने की कोशिश की है: //smtp.gmail.com, 465 से बंदरगाह (सिर्फ कुछ अलग कोशिश कर के लिए), लेकिन यह या तो काम नहीं करता। वैसे भी, यदि यह मूल पैरामीटर के साथ एक्लिप्स से ठीक काम करता है, तो मुझे लगता है कि मान सही हैं, लेकिन समस्या जार बना रही है। मैं जार बनाने के दौरान संभावित परिणामों या परिवर्तनों के बारे में बहुत कुछ नहीं जानता। जब जार बनाया जाता है तो जावामेल लाइब्रेरी कुछ गलत हो सकती है?
क्या आपके पास कोई विचार है?
आप इतनी जल्दी जवाब देने के लिए बहुत बहुत धन्यवाद। मैंने अभी कोशिश की है कि आपने मुझे क्या बताया है, मुझे नहीं पता कि मैंने इसे सही तरीके से किया है: ग्रहण के अंदर, परियोजना के गुणों में, मैंने देखा है कि बिल्ड पथ में, पुस्तकालयों में: activation.jar , mailapi.jar, smtp.jar ... वहाँ हैं। आदेश और निर्यात में, मैंने इन जार की जांच की है। उन्हें पहले चेक नहीं किया गया था। मैंने जार फिर से निर्यात किया है, लेकिन त्रुटि बनी हुई है। क्या मैंने कुछ गलत किया है? शायद मुझे ग्रहण से नहीं करना चाहिए? धन्यवाद माइक। – pablof
मैं ग्रहण से परिचित नहीं हूं।लेकिन यह निश्चित रूप से कक्षापथ से संबंधित कुछ है। आप बदल सकते हैं कि आप जार को अगले चरण के रूप में कैसे चलाते हैं। जब आप अपना जार चलाते हैं तो उन दो जारों के पथ को शामिल करें। तो मेरे सिर के ऊपर से कुछ, जैसे: jar -cp ./full/path/to/activation.jar:.full/path/to/mail.jar-jar yourjarname.jar – Mike
धन्यवाद माइक। मैं इसके साथ कोशिश करूंगा। – pablof