2012-12-12 36 views
6

पर जावा मेल एक टीएलएस कनेक्शन के माध्यम से मैं अपने कार्यक्रम से एक ईमेल भेजने की कोशिश कर रहा हूं। यहाँ मेरी कोडटीएलएस

final String username = "XXXXXX"; 
    final String password = "XXXXX"; 
    Properties props = new Properties(); 
    props.put("mail.transport.protocol", "smtp"); 
    props.put("mail.smtp.starttls.enable","true"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.host", "mail.xxxx.com"); 
    props.put("mail.smtp.port", "587"); 

    Session session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(username, password); 
       } 
      }); 

    Message message = new MimeMessage(session); 
    message.setFrom(new InternetAddress("[email protected]")); 
    message.setRecipients(Message.RecipientType.TO, 
     InternetAddress.parse(to_address)); 
    message.setSubject("Test Mail"); 
    message.setText("TestMail "); 
    Transport.send(message) 

मेरा ईमेल प्रवेश द्वार के साथ आने वाली मेल सेटिंग्स है है एसएसएल सक्षम और बाहर जाने वाले TLS के साथ पोर्ट 587 पर सक्षम मैं यह ठीक काम कर रहा है दृष्टिकोण में इस सेटिंग को कॉन्फ़िगर करने में सक्षम हूँ और। लेकिन मेरे जावा कार्यक्रम के माध्यम से यह कह रहा है "कनेक्शन अस्वीकार"। सहायता की सराहना की!

अंत में काम किया:

मैं InstallCert प्रोग्राम का उपयोग किया certicate आयात करने के लिए jssecacerts फ़ाइल उत्पन्न करने के लिए और मैं अपने/JRE/lib/सुरक्षा/पथ के लिए फ़ाइल जोड़ा। यहाँ मेरे कार्य कोड

properties.put("mail.transport.protocol", "smtp"); 
    properties.put("mail.smtp.host", "XXXXXX"); 
    properties.put("mail.smtp.port", "465"); 
    properties.put("mail.smtp.ssl.enable", true); 
    properties.put("mail.smtp.socketFactory.port", "465"); 
    properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    properties.put("mail.smtp.socketFactory.fallback", "false"); 
    properties.put("mail.smtp.quitwait", "false"); 
    properties.put("mail.smtp.auth", "true"); 
+0

इस मामले में आपको बस एक विशिष्ट सर्वर से प्रमाण पत्र आयात करना है? मुझे एक ही समस्या है, लेकिन मेरे एप्लिकेशन को उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए किसी भी खाते से मेल भेजने की आवश्यकता है, कोड आउटलुक, Google और याहू के साथ काम करता है, लेकिन smtp zimbra.xxxxxxx.net.br के साथ खाते के लिए इस प्रमाणपत्र के कारण काम नहीं करता है । –

उत्तर

4

आप smtp

props.put("mail.transport.protocol", "smtps"); 
props.put("mail.smtps.starttls.enable","true"); 
props.put("mail.smtps.auth", "true"); 
props.put("mail.smtps.host", "mail.xxxx.com"); 
props.put("mail.smtps.port", "587"); 

के बजाय smtps प्रोटोकॉल का उपयोग करने के लिए आप भी RFC822 विशिष्ट रूप से प्रोटोकॉल स्थापित करने के लिए कोशिश कर सकते हैं की जरूरत है, यह कुछ समय में मदद करता है

props.put("mail.transport.protocol.rfc822", "smtps"); 
+0

मैंने यह अभी भी एक ही मुद्दा की कोशिश की ... इस बार यह "लोकलहोस्ट", पोर्ट 25 को कनेक्ट करने का प्रयास कर रहा है। यह मेरा डीबग लॉग है .... DEBUG SMTP: "localhost" होस्ट करने के लिए कनेक्ट करने का प्रयास कर रहा है, पोर्ट 25, isSSL false – Surez

+0

आप जावामेल का किस संस्करण का उपयोग कर रहे हैं? –

+0

जावा मेल 1.4.5 – Surez

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