2012-10-15 11 views
17

कनेक्ट करें मुझे जावामेल एपीआई का उपयोग करने के लिए एक एप्लिकेशन प्राप्त करने में समस्या हो रही है ताकि हम कुछ फ़ाइलों को अधिक स्वचालित तरीके से भेजने के लिए उपयोग कर सकें। मैं जावा और नेटबीन के लिए बहुत नया हूं, लेकिन अन्य भाषाओं में प्रोग्राम किया है, इसलिए अगर मुझे जावा और नेटबीन के लिए थोड़ा खो गया लगता है तो कृपया मुझे माफ़ कर दें।आईमेल के लिए जावामेल एपीआई - java.net.SocketException: अनुमति अस्वीकार:

मैं यह त्रुटि

java.net.SocketException बार आ रही है: अनुमति अस्वीकृत: कनेक्ट

जब स्थानीय मेल सर्वर से कनेक्ट करने की कोशिश कर रहा। मैंने जीमेल के एसएमटीपी सर्वर के माध्यम से उसी कोड के साथ सफलतापूर्वक मेल भेजा है और यूजरनेम, पासवर्ड और पोर्ट बदल रहा है। मैं अपने सर्वर को सफलतापूर्वक टेलनेट करने में सक्षम था और पोर्ट 25 से 220 प्रतिक्रिया प्राप्त करता था। मेरे पास एक बैच फ़ाइल भी है जो चलती है और यह सफलतापूर्वक हमारे स्थानीय सर्वर के माध्यम से ई-मेल भेजती है। कोई विचार या विचार क्यों कि मैं JavaMail से कनेक्ट नहीं कर सकता हूं?

यहां वह कोड है जो ई-मेल भेजता है।

स्रोत कोड: दो अपवाद बयानों से

public void sendEmail(String customerNumber, ArrayList fileList){ 
    String from = "xxxx"; 
    String username = "xxxx"; 
    String to = "xxxx"; 
    String host = "10.1.1.6"; 
    String pwd = "xxxx"; 
    String port = "25"; 

    Properties props = System.getProperties(); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.port", port); 
    props.put("mail.smtp.user", username); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.debug", "true"); 
    props.put("mail.smtp.socketFactory.port", port); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 

    Session session = Session.getInstance(props, null); 
    session.setDebug(true); 

    MimeMessage message = new MimeMessage(session); 
    try{ 
     message.setFrom(new InternetAddress(from)); 
     message.setRecipients(Message.RecipientType.TO, to); 
     message.setSubject("Electronic Invoices"); 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText("Electronic Invoices"); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(messageBodyPart); 
     for(int i = 0; i < fileList.size(); i++){ 
      messageBodyPart = new MimeBodyPart(); 
      String fileName = (String) fileList.get(i); 
      DataSource source = new FileDataSource(fileName); 
      messageBodyPart.setDataHandler(new DataHandler(source)); 
      messageBodyPart.setFileName(fileName); 
      multipart.addBodyPart(messageBodyPart); 
     } 
     message.setContent(multipart); 

     Transport tr; 
     tr = session.getTransport("smtp"); 
     tr.connect(host, username, pwd); 
     tr.sendMessage(message, message.getAllRecipients()); 
     jTextArea2.append("Mail Sent Successfully"); 
     tr.close(); 

    } catch(Exception e){ 
     jTextArea2.append("sendEmail()::" + System.getProperty("line.separator") + e + System.getProperty("line.separator")); 
     System.out.println(e.getMessage()); 
     System.out.println(e.getCause()); 
    } 
} 

आउटपुट:

DEBUG: setDebug: JavaMail version 1.4.5 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: trying to connect to host "10.1.1.6", port 25, isSSL false 
Could not connect to SMTP host: 10.1.1.6, port: 25 
java.net.SocketException: Permission denied: connect 
+0

जेडीके 7? इस लड़के को जांचें http://stackoverflow.com/a/7478027/643500 –

+0

मैंने अपनी NetBeans कॉन्फ़िगरेशन फ़ाइल में -Djava.net.preferIPv4Stack = true जोड़ा, लेकिन मुझे अभी भी त्रुटि है। यह अभी भी मुझे एक जीमेल खाते से भेजने की अनुमति देता है। तेज प्रतिक्रिया के लिए धन्यवाद। – John

+1

यह वीएम विकल्पों में जाना चाहिए। यह पुष्टि करने का एक और तरीका है कि नेटबीन्स में यह एक ही मुद्दा है, प्रोजेक्ट> गुण> पुस्तकालयों पर राइट क्लिक करें और जेडीके 6 जावा प्लेटफार्म चुनें (यदि आपके पास यह नहीं है तो इंस्टॉल करें)। साफ करें, फिर फिर कोशिश करें। यह समस्या के रूप में इस मुद्दे को खत्म कर देगा। –

उत्तर

18

वी एम के विकल्प के लिए -Djava.net.preferIPv4Stack=true जोड़ें। यह पुष्टि करने का एक और तरीका है कि नेटबीन्स में यह एक ही मुद्दा है, प्रोजेक्ट> गुण> पुस्तकालयों पर राइट क्लिक करें और जेडीके 6 जावा प्लेटफार्म चुनें (यदि आपके पास यह नहीं है तो इंस्टॉल करें)। साफ करें, फिर फिर कोशिश करें। यह समस्या के रूप में इस मुद्दे को समाप्त करेंगे

क्रेडिट https://stackoverflow.com/a/7478027/643500

1

एप्लिकेशन मंगलाचरण (CLI से जैसे) शुरू में कोड में इस्तेमाल को आसान बनाने के मामले में: मान

System.setProperty("java.net.preferIPv4Stack", "true")

कि एप्लिकेशन होगा विरासत आईपीवी 4 नेटवर्क स्टैक के साथ काम कर रहे हैं।

संबंधित मुद्दे