2009-07-12 23 views
5

पर ईमेल भेजने में असमर्थ मैं ईमेल भेजने के लिए जावमेल का उपयोग करने के लिए थक गया हूं। लेकिन मैं निम्न संदेशGoogle ऐप इंजन

javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Illegal Arguments (java.lang.IllegalArgumentException: Bad Request:)) 

मैं व्यवस्थापक (खाते मैं एप्लिकेशन को अपलोड) या उपयोगकर्ता मैं के रूप में अनुप्रयोग के लिए लॉग इन से ईमेल भेजने की कोशिश की है मिला है। (UserService - getCurrentUser().getEmail() से) दोनों में विफल रहा है

आश्चर्य अगर वहाँ कोई विशेष सेटिंग मैं सेटअप करने के लिए है

Properties props = new Properties(); 
    Session session = Session.getDefaultInstance(props, null);  
    Message msg = new MimeMessage(session); 
    UserService userService = UserServiceFactory.getUserService(); 
    String email = userService.getCurrentUser().getEmail(); 
    //Or 
    //String email = "[email protected]"; 
    msg.setFrom(new InternetAddress(email)); 
    msg.addRecipient(Message.RecipientType.TO, 
        new InternetAddress("[email protected]")); 
    msg.setSubject("Test Email"); 
    msg.setText("Nobody"); 
    Transport.send(msg); 

सलाह कृपया धन्यवाद रॉय

+0

क्या यह हो सकता है कि आप एक नकली प्राप्तकर्ता पता का उपयोग कर रहे हैं जो वास्तव में मौजूद नहीं है? मुझे कोड के साथ कुछ भी गलत नहीं दिख रहा है, और मैंने अतीत में एपेंगेन के साथ भेजने के लिए समान कोड का उपयोग किया है। – jsight

+0

मैंने नमूने में प्राप्तकर्ता का पता बदल दिया। मैं व्यवस्थापक पते पर मेल भेज रहा हूं। –

उत्तर

5

यह वास्तव में बहुत अजीब है। मैंने अभी निम्नलिखित नमूना लिखा है:

UserService userService = UserServiceFactory.getUserService(); 
String thisURL = request.getRequestURI(); 
if (request.getUserPrincipal() != null) { 
    response.getWriter().println("<p>Hello, " + 
           request.getUserPrincipal().getName() + 
           "! You can <a href=\"" + 
           userService.createLogoutURL(thisURL) + 
           "\">sign out</a>.</p>"); 
    Properties props = new Properties(); 
    Session mailSession = Session.getDefaultInstance(props, null);  
    Message msg = new MimeMessage(mailSession); 
    String email = userService.getCurrentUser().getEmail(); 
    //Or 
    //String email = "[email protected]"; 
    msg.setFrom(new InternetAddress(email)); 
    msg.addRecipient(Message.RecipientType.TO, 
        new InternetAddress("[email protected]")); 
    msg.setSubject("Test Email"); 
    msg.setText("Nobody"); 
    Transport.send(msg); 
    response.getWriter().println("<p>Sent email!</p>"); 
} else { 
    response.getWriter().println("<p>Please <a href=\"" + 
           userService.createLoginURL(thisURL) + 
           "\">sign in</a>.</p>"); 
} 

कोई अपवाद नहीं था, और मुझे ईमेल प्राप्त हुआ। क्या आप वाकई वास्तविक आवेदन में और अधिक नहीं चल रहे हैं?

+0

मुझे कोई जानकारी नहीं है। लेकिन यह अब काम करता है। धन्यवाद jsight =) –

4

बस the documentation on this स्कैनिंग मैंने पाया निम्नलिखित:

सुरक्षा उद्देश्यों के लिए, प्रेषक संदेश का पता ईमेलहोना चाहिए ई-मेल पता आवेदन, या वर्तमान उपयोगकर्ता के लिए जो प्रवेश किया गया है, उसके Google खाते ईमेल पते के लिए एक प्रशासक की।पता एक "के लिए उत्तर" पता है, जो भी इन प्रतिबंधों को पूरा करना होगा शामिल कर सकते हैं।

तो 'ईमेल' कम से कम वापस अपने व्यवस्थापक emailaccount, या एक समर्पित emailaccount अपनी परियोजना के लिए एक प्रशासक के रूप में जोड़ा सेट किया जाना चाहिए ..

उसके अलावा मैं के साथ कोई समस्या नहीं देख अपने कोड ..

+0

मैंने उस खाते का उपयोग करने का प्रयास किया जो ऐप्स अपलोड करता है और यह या तो काम नहीं करता है। वही त्रुटि संदेश। –

1

मेरे दो सेंट !! जांचें कि कार्यक्षमता क्लाइंट कक्षाओं के बजाय सर्वर का हिस्सा है ..

1

शायद इसलिए कि आप स्थानीय रूप से अपना एप्लिकेशन चला रहे हैं। इसे ऐप-इंजन पर अपलोड करें और यह ठीक काम करेगा। * आपका प्रेषक ईमेल मेल आईडी होना चाहिए जिसके साथ आप एप-इंजन * या एक व्यवस्थापक मेल आईडी पर प्रोजेक्ट को तैनात करते हैं।

0

सुनिश्चित करें कि आप से वर्तमान में लॉग-इन किए गए उपयोगकर्ता या उस खाते के ईमेल से संबंधित ईमेल पते का उपयोग कर रहे हैं जहां एप्लिकेशन तैनात किए गए हैं।

सबसे महत्वपूर्ण बात यह है कि एप्लिकेशन स्थानीय रूप से चलाए जाने पर संदेश नहीं भेजे जाते हैं। वास्तव में संदेशों को भेजने के लिए, को Google App Engine में तैनात करें और इसे दूरस्थ रूप से चलाएं।