जावामेल का उपयोग कर प्रेषक पते के अलावा किसी अन्य पते पर रिटर्न-पथ कैसे सेट करें?जावामेल का उपयोग कर प्रेषक पते के अलावा किसी अन्य पते पर रिटर्न-पथ कैसे सेट करें?
उत्तर
नीचे दिया गया कोड जो आप चाहते हैं वह करता है, और यह सही तरीके से करता है। पढ़ना क्या आप अपने आप को टिप्पणी में तैनात
से: 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]"));
को 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());
मेरा मानना है कि यह समाधान होगा:
यहाँ एक कोड उदाहरण है। लेकिन जो मैंने पढ़ा है, उससे मेल सर्वर को इसका समर्थन करना चाहिए। "जब डिलीवरी एसएमटीपी सर्वर किसी संदेश की" अंतिम डिलीवरी "बनाता है, तो यह मेल डेटा की शुरुआत में रिटर्न-पथ लाइन डालता है। रिटर्न-पथ का यह उपयोग आवश्यक है; मेल सिस्टम को इसका समर्थन करना चाहिए। वापसी- पथ रेखा MAIL कमांड से में जानकारी को सुरक्षित रखती है। " http://www.ietf.org/rfc/rfc2821.txt –
Ricardo
विस्तृत उत्तर की जांच करें – jitter
मैं कोड के कई अन्य स्तरों पर ऐसा करने की कोशिश कर रहा हूं, यह एकमात्र समाधान है जिसने मेरे लिए काम किया है – kommradHomer