2009-11-23 4 views

उत्तर

20

नीचे दिया गया कोड जो आप चाहते हैं वह करता है, और यह सही तरीके से करता है। पढ़ना क्या आप अपने आप को टिप्पणी में तैनात

से: RFC2821: 4.4 Trace Information

वितरण एसएमटीपी सर्वर संदेश की "अंतिम वितरण" करता है, यह की शुरुआत में एक वापसी-पथ पंक्ति का अंतर डाल मेल डेटा रिटर्न-पथ के का उपयोग आवश्यक है; मेल सिस्टम को इसका समर्थन करना चाहिए। रिटर्न-पथ लाइन MA12 कमांड से में जानकारी को सुरक्षित रखती है। यहां, अंतिम डिलीवरी का अर्थ है कि संदेश ने SMTP वातावरण छोड़ा है। आम तौर पर, यह का अर्थ यह होगा कि इसे गंतव्य उपयोगकर्ता या मेल ड्रॉप से ​​ पर वितरित किया गया था, लेकिन कुछ मामलों में यह द्वारा एक और मेल सिस्टम द्वारा संसाधित और प्रेषित किया जा सकता है।

और बाद में कुछ पंक्तियां।

एक संदेश-उद्भव एसएमटीपी प्रणाली नहीं संदेश है कि पहले से ही एक वापसी-पथ शीर्षक शामिल भेजना चाहिए।

यदि आप सावधानीपूर्वक इसे पढ़ते हैं तो आप समझेंगे कि केवल अंतिम smtp-server/delivery agent Return-Path शीर्षलेख जोड़ना है। यह क्लाइंट (मेल भेजने की कोशिश कर रहा है) के रूप में कुछ नहीं करना चाहिए। अंतिम smtp-server लिफाफे के प्रेषक पते पर Return-Path शीर्षलेख का आधार करेगा (SMTP MAIL FROM भाग)।

तो mail.smtp.from सेट करना जावा को यह बताने का सही तरीका है कि लिफाफा प्रेषक पता from भाग से अलग होना चाहिए।

यदि आपको समझ में परेशानी है कि अलग-अलग from क्या हैं तो टेलनेट smtp-session पर एक नज़र डालें। कहाँ [email protected]m.addFrom(...);

telnet smtp.example.com 25 
220 smtp.example.com ESMTP ..... 

helo computername 
250 smtp.example.com Hello computername [123.123.123.123] 

mail from:<[email protected]> 
250 <[email protected]> is syntactically correct 

rcpt to:<[email protected]> 
250 <[email protected]> verified 

data 
354 Enter message, ending with "." on a line by itself 
To: Joey <[email protected]> 
From: Joey <[email protected]> 
Subject: Joey 

Hey Joey! 

. 
250 OK id=.... 

Quit 

props.put("mail.smtp.from", "[email protected]"); 
Session session = Session.getDefaultInstance(props, null); 
MimeMessage m = new MimeMessage(session); 
m.addFrom(InternetAddress.parse("[email protected]")); 
+0

मेरा मानना ​​है कि यह समाधान होगा:

यहाँ एक कोड उदाहरण है। लेकिन जो मैंने पढ़ा है, उससे मेल सर्वर को इसका समर्थन करना चाहिए। "जब डिलीवरी एसएमटीपी सर्वर किसी संदेश की" अंतिम डिलीवरी "बनाता है, तो यह मेल डेटा की शुरुआत में रिटर्न-पथ लाइन डालता है। रिटर्न-पथ का यह उपयोग आवश्यक है; मेल सिस्टम को इसका समर्थन करना चाहिए। वापसी- पथ रेखा MAIL कमांड से में जानकारी को सुरक्षित रखती है। " http://www.ietf.org/rfc/rfc2821.txt – Ricardo

+0

विस्तृत उत्तर की जांच करें – jitter

+0

मैं कोड के कई अन्य स्तरों पर ऐसा करने की कोशिश कर रहा हूं, यह एकमात्र समाधान है जिसने मेरे लिए काम किया है – kommradHomer

6

को smtp.mail.from और [email protected] के अनुरूप होना चाहिए मैं एक ही समस्या आ रही है और पाया है एकमात्र समाधान डाल पर चर्चा की संपत्ति "mail.smtp.from" props.put ("किया है mail.smtp.from "," [email protected] ");

फिर भी यह समाधान मेरे लिए उपयुक्त नहीं था क्योंकि मैं अलग-अलग उपयोगकर्ताओं से बहुत सारे ई-मेल भेज रहा हूं, इसलिए प्रत्येक ई-मेल के लिए पुन: प्रयास सत्र प्रोडक्टिविटी के लिए भयानक होगा। MimeMessage के बजाय

1) का प्रयोग करें SMTPMessage (फैली MimeMessage):

तो मैं JavaMail स्रोतों को पढ़ने के बाद एक और समाधान मिल गया।

2) setEnvelopeFrom (स्ट्रिंग) विधि का उपयोग करें।

3) ई-मेल भेजने के लिए SMTPTransport का उपयोग करें (मैंने दूसरों के साथ प्रयास नहीं किया)।

SMTPMessage message = new SMTPMessage(session); 
message.setEnvelopeFrom("[email protected]"); 
... 
transport.sendMessage(message, message.getAllRecipients()); 
+0

यह काम करता है मुझे जब "mail.smtp.from" विधि नहीं थी। धन्यवाद! रमणीय। – Nick

+0

मेरे लिए काम नहीं कर रहा था – Anita

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