2012-12-01 6 views
6

मैं सेटफ्रॉम() विधि को जो कुछ भी चाहता हूं उसे कैसे बदलूं? मैं अपने जीमेल accoutn के माध्यम से ई-मेल भेज सकता हूं और सेट से पाठ को बदल सकता हूं, लेकिन यह ईमेल के लिए मेरे username दिखाता है। मैंने अपने याहू खाते का भी उपयोग करने की कोशिश की है और मुझे प्रमाणीकरण त्रुटि मिलती है।जावामेल एपीआई - आप जो कुछ भी चाहते हैं उसे सेट से कैसे बदलते हैं?

मैं पते से बदलना चाहता हूं। कोड इस प्रकार है:

import java.util.Properties; 

import javax.mail.Message; 
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 SendMailTLS { 

    public static void main(String[] args) { 

     final String username = "[email protected]"; 
     final String password = "password"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.port", "587"); 

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

     try { 

      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse("[email protected]")); 
      message.setSubject("Testing Subject"); 
      message.setText("Dear Mail Crawler," 
       + "\n\n No spam to my email, please!"); 

      Transport.send(message); 

      System.out.println("Done"); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 
+0

Google के रिले का उपयोग न करें? – Perception

+2

मेरे दोस्त, आप अपना मेल भेजने के लिए गूगल्स रिले का उपयोग कर रहे हैं ('props.put (" mail.smtp.host "," smtp.gmail.com ");')। यदि आप पते से पते के रूप में उपयोगकर्ता नाम प्रदर्शित करते हैं तो कम सख्त लागू करना चाहते हैं तो एक और रिले का उपयोग करें। – Perception

+0

जो आप करने की कोशिश कर रहे हैं उसे आमतौर पर "स्पैम" कहा जाता है। :-) यही कारण है कि जीमेल आपको ऐसा करने नहीं देगा। मान लें कि ऐसा करने का आपके पास वैध कारण है, यह जीमेल सहायता पृष्ठ देखें: [किसी भिन्न पते से मेल भेजना] (https://support.google.com/mail/bin/answer.py?hl=hi&answer=22370) –

उत्तर

0

कई सम्मानित एसएमटीपी रिले नकली अपनी पहचान (कि यह और भी आसान स्पैमर्स सेवा का दुरुपयोग करने के लिए होगा) करने के लिए आप की अनुमति नहीं होगी। उस ने कहा, यदि आपका लक्ष्य अपने इनबॉक्स में अधिक मेल से बचाना है, Google allows you to modify your email address ताकि आप अपने ईमेल पर किसी भी जवाब को फ़िल्टर कर सकें।

-2

यहां पूरा कोड है आप निम्न कोड का उपयोग कर सकते हैं। यह जबकि "smtp.gmail.com" का उपयोग करके मुझे

class SendMail { 
public static void main(String[] args) { 
    System.out.println("In side main()---------------------"); 

    Properties props = new Properties(); 


    props.put("mail.smtp.host", "hostname"); 
    props.put("mail.smtp.port", "port");// 

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



    props.put("mail.smtp.auth", "true"); 

    Session session = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator() { 

       protected PasswordAuthentication getPasswordAuthentication() { 
        System.out 
          .println("In side getPasswordAuthentication------------------And Before returning PasswordAuthentication"); 
        return new PasswordAuthentication("[email protected]", 
          "password"); 

       } 

      }); 
    System.out 
      .println("mail and password has been sent********************"); 
    try { 
     System.out 
       .println("we are in try{} block................................."); 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setText("Dear User," + "\n\n This is testing only!"); 

     Transport.send(message); 

     System.out 
       .println("Mail has been sent successfully.........................."); 

    } catch (MessagingException e) { 
     System.out.println("we are in catch block..................."); 
     e.printStackTrace(); 

    } 
} 

}

+0

http://www.oracle.com/technetwork/java/faq-135477.html#commonmistakes – BalusC

1

सामना एक ही समस्या के लिए ठीक काम कर रहा है। मैनरिल का प्रयोग करें, यह काम करेगा। एक बार जब आप मंडल खाता सेट करते हैं, तो पोर्ट 587 पर "smtp.mandrillapp.com" का उपयोग करें। प्रमाणीकरण के लिए, उपयोगकर्ता नाम = अपने मैंडिल उपयोगकर्ता नाम और पासवर्ड = एपीआई कुंजी को अपने खाते में जेनरेट करें।

0

(मान लीजिए कि मैं आपका लक्ष्य समझता हूं और यह स्पैम नहीं भेजता है) अपाचे कॉमन्स लाइब्रेरी जिसका उपयोग हम setPersonal को InternetAddress पर कॉल करके करते हैं। http://docs.oracle.com/javaee/7/api/javax/mail/internet/InternetAddress.html#setPersonal-java.lang.String-java.lang.String-

 Message message = new MimeMessage(session); 
     InternetAddress me = new InternetAddress("[email protected]"); 
     me.setPersonal("My name"); 
     message.setFrom(me); 
संबंधित मुद्दे