2012-06-14 16 views
6

निम्नलिखित मेरी कोड मेल भेजने के लिए है:javax.mail.MessagingException: एसएमटीपी होस्ट से कनेक्ट नहीं हो सका?

import java.util.Properties; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.Message.RecipientType; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
public class SendMail { 
    public void sendMail(String m_from,String m_to,String m_subject,String m_body){ 
     try { 
      Session m_Session; 
      Message m_simpleMessage; 
      InternetAddress m_fromAddress; 
      InternetAddress m_toAddress; 
      Properties m_properties; 

      m_properties  = new Properties(); 
      m_properties.put("mail.smtp.host", "usdc2spam2.slingmedia.com"); 
      m_properties.put("mail.smtp.socketFactory.port", "465"); 
      m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
      m_properties.put("mail.smtp.auth", "true"); 
      m_properties.put("mail.smtp.port", "9000"); 

      m_Session=Session.getDefaultInstance(m_properties,new Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication("aaaaa","[email protected]"); // username and the password 
       } 
      }); 

      m_simpleMessage = new MimeMessage(m_Session); 
      m_fromAddress = new InternetAddress(m_from); 
      m_toAddress  = new InternetAddress(m_to); 

      m_simpleMessage.setFrom(m_fromAddress); 
      m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress); 
      m_simpleMessage.setSubject(m_subject); 

      m_simpleMessage.setContent(m_body, "text/html"); 

      //m_simpleMessage.setContent(m_body,"text/plain"); 

      Transport.send(m_simpleMessage); 
     } catch (MessagingException ex) { 
      ex.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) { 
     SendMail send_mail = new SendMail(); 
     String empName = "xxxxx"; 
     String title ="<b>Hi !"+empName+"</b>"; 
     send_mail.sendMail("[email protected]", "[email protected]", "Please apply for leave for the following dates", title+"<br>by<br><b>HR<b>"); 
    } 
} 

लेकिन जब मैं कोड चलाने यह मेरे निम्नलिखित अपवाद देता है।

javax.mail.MessagingException: Could not connect to SMTP host: usdc2spam2.slingmedia.com, port: 9000; 
    nested exception is: 
    java.net.ConnectException: Connection refused: connect 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638) 
    at javax.mail.Service.connect(Service.java:317) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at javax.mail.Transport.send0(Transport.java:194) 
    at javax.mail.Transport.send(Transport.java:124) 
    at samples.SendMail.sendMail(SendMail.java:46) 
    at samples.SendMail.main(SendMail.java:55) 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(Unknown Source) 
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900) 

जब मैं इस usdc2spam2.slingmedia.com पिंग यह मुझे बिना किसी समस्या के उत्तर देता है। मैं windows 7

का उपयोग कर रहा हूं कृपया इसे हल करने में मेरी सहायता करें।

+1

पिंग एक सबूत नहीं है कि आप एक ईमेल भेज सकते हैं। 'Telnet usdc2spam2.slingmedia.com 9000' आज़माएं। या यदि आप (Win7) में 'टेलनेट' नहीं है, तो उदाहरण का उपयोग करें [पुट्टी] (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) –

+1

क्या होता है जब आप 'telnet usdc2spam2.slingmedia.com 9000' का प्रयास करते हैं? मुझे संदेह है कि आप 'mail.smtp.port' प्रॉपर्टी में गलत पोर्ट निर्दिष्ट कर रहे हैं। – beny23

उत्तर

4

यह इन दो पंक्तियों जो मुझे समस्या कास्टिंग किया गया था:

m_properties.put("mail.smtp.socketFactory.port", "465"); 
    m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 

और इस लाइन कहा:

m_properties.put("mail.smtp.starttls.enable", "true"); 

को दूर करने और कोड के ऊपर लाइनों को जोड़ने के बाद यह ठीक काम किया।

+3

को समझाया जाना चाहिए कि इस लाइन की आवश्यकता क्यों नहीं है – SAR

+0

यह काम करता है लेकिन मैं दो पंक्तियों से ऊपर हट जाता हूं! – vnshetty

+0

मेरे लिए काम नहीं कर रहा है। –

2

क्या कारण आपकी समस्या स्टैक ट्रेस में सही नहीं है:

java.net.ConnectException: Connection refused: connect 

आप SMTP सर्वर से कनेक्ट करने के लिए पासवर्ड की जरूरत है? क्या आप वाकई सही सेटिंग्स का उपयोग कर रहे हैं (पोर्ट नंबर में)? क्या आप प्रॉक्सी या फायरवॉल के पीछे हैं? क्या आप नियमित सेटिंग्स प्रोग्राम (उदा। थंडरबर्ड) में उन सेटिंग्स का उपयोग कर सकते हैं और मेल भेज सकते हैं?

2

अपने विंडोज फ़ायरवॉल में अपने इनबाउंड नियमों में पोर्ट 9000 जोड़ने का प्रयास करें।

1

यह अपवाद आमतौर पर तब होता है जब उस पोर्ट पर कोई सेवा सुनने नहीं होती है जिसे आप कनेक्ट करने का प्रयास कर रहे हैं।

putty या telnet का उपयोग करके कनेक्ट करने का प्रयास करें। मैं शर्त लगा सकता हूं कि आपको एक ही त्रुटि मिल जाएगी।

इन बातों की पुष्टि करें:

  • होस्ट नाम और पोर्ट से कनेक्ट करने के लिए कोशिश कर रहे हैं,
  • सर्वर ठीक से सुन रहा है, और
  • कोई कनेक्शन अवरुद्ध फ़ायरवॉल है।
संबंधित मुद्दे

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