ई-मेल सर्वर का उपयोग किए बिना ई-मेल भेजना


11

जावामेल ई-मेल सर्वर का उपयोग करके ई-मेल भेजता है, आमतौर पर ई-मेल प्रदाता के एसएमटीपी इंटरफ़ेस के माध्यम से। क्या ई-मेल भेजने के लिए ई-मेल सर्वर का उपयोग करना आवश्यक है?

मेरे पास एक वेब साइट है जो ई-मेल भेजती है और यदि संभव हो तो मैं ई-मेल सर्वर का उपयोग किए बिना सीधे वेब साइट कोड से ई-मेल भेजना चाहता हूं। JavaMail FAQ कहता है कि एक ई-मेल सर्वर की आवश्यकता है।

क्या ई-मेल सर्वर का उपयोग किए बिना ई-मेल भेजने का एक तरीका है, या तो JavaMail या किसी अन्य एपीआई के साथ?


नहीं, यह संभव नहीं है। ईमेल क्लाइंट को आप जो ईमेल भेज रहे हैं उसे कैसे प्राप्त किया जाए?
उबला हुआ


एक विकल्प, जो आवश्यक रूप से JavaMail के साथ काम नहीं करेगा, वह है पोस्टफ़िक्स जैसे MTA की स्थापना। आपको दूरस्थ मेल सर्वर की आवश्यकता नहीं होगी, क्योंकि आपके पास एक स्थानीय है।
user16764

यकीनन। मुझे लगता है कि आप कह सकते हैं कि पुराने Microsoft मेल MTA "सर्वरहीन" था इस अर्थ में कि Microsoft मेल क्लाइंट व्यक्तिगत रूप से फ़ाइल सिस्टम पर (फ़ाइल सर्वर पर) फ़ाइल सिस्टम पर केंद्रीय मेल स्टोर से / के लिए संदेश भेजते और लगाते हैं । मार्ग)। लेकिन फिर भी उस सिस्टम को किसी और के माध्यम से मेल करने का एकमात्र तरीका एक प्रवेश द्वार है, जिसमें हमेशा सर्वर शामिल होता है। क्या आप वाकई अपने इच्छित प्रश्न को पूछ चुके हैं?
क्रेग

जवाबों:


11

आप पते के डोमेन के एमएक्स रिकॉर्ड में उल्लिखित एसएमटीपी सर्वरों में से एक को सीधे एक ईमेल वितरित कर सकते हैं। आमतौर पर यह एक बुरा विचार है, हालांकि:

किसी स्थानीय सर्वर पर मेल वितरित करना तेज़ है - आप लगभग तुरंत जारी रख सकते हैं और कुछ और कर सकते हैं और सर्वर को डिलीवरी को संभालने दें।

वास्तविक डिलीवरी में कुछ समय लग सकता है, उदाहरण के लिए रिमोट मेल सर्वर धीमा हो सकता है। या यह पहले मेल को अस्वीकार कर सकता है - यह एक मेल भेजने वाले को दूसरी बार भेजने की कोशिश करने के लिए प्रेषक को बताने के लिए स्पैम के खिलाफ एक ज्ञात रणनीति है, जो कुछ स्पैम बॉट नहीं करेंगे।

साथ ही मेल सर्वर एक दिन बाद या फिर आसानी से कोशिश कर सकता है जब रिमोट सर्वर डाउन हो जाता है, तो इससे खोए मेल का खतरा कम हो जाता है।


स्पैम रोकथाम के बारे में जानकारी के लिए धन्यवाद। मैं देख सकता हूं कि इन रणनीतियों को बदलने से ई-मेल सर्वर का उपयोग एक अच्छा विचार कैसे हो सकता है।
डीन शुल्ज़

2
तकनीकी रूप से, ऐसा करने से आपका एप्लिकेशन मेलस्वर में बदल जाता है, इसलिए आप अभी भी एक मेलर का उपयोग कर रहे हैं, भले ही एक नंगे हड्डियों के साथ।
jwenting

@jwenting यह एक मेल सर्वर कैसे होगा यदि केवल एक क्लाइंट के रूप में कार्य कर रहा है जो अन्य सर्वर से जुड़ता है? मैंने बल्कि एक "सर्वर" होने के लिए सोचा था कि आपके पास कम से कम एक "क्लाइंट" आपके पास होना चाहिए ...
जेसन गोएमाट

इसके अलावा, आपके ऐप से सीधे दूरस्थ मेल सर्वर पर भेजने से एसपीएफ / डीएमएआरसी एंटी-स्पैम चेक के गलत होने की संभावना है।
क्रेग

1

यह सब इस बात पर निर्भर करता है कि आप वास्तव में "उपयोग" से क्या मतलब है।

यदि "उपयोग" में केवल ईमेल सर्वर का प्रत्यक्ष उपयोग शामिल है, तो आप किसी अन्य प्रकार की सेवा के माध्यम से ईमेल सर्वर पर अप्रत्यक्ष रूप से भेजने के लिए मेल पास कर सकते हैं । व्यावहारिक उपयोग के मामलों के लिए, यह मेरे लिए "अच्छा पर्याप्त ™" समाधान प्रतीत होता है।

यदि, हालांकि, आपके प्रश्न का शाब्दिक अर्थ है " बिना किसी ईमेल सर्वर को शामिल किए बिना ", यह केवल तभी संभव होगा, जब आपका सॉफ़्टवेयर आपकी पसंद के किसी न किसी तरीके से मेल को लक्ष्य ग्राहक के इनबॉक्स में डालने में सक्षम हो, लेकिन POP3 को छोड़कर या IMAP या किसी अन्य ईमेल-प्रासंगिक प्रोटोकॉल का उपयोग ईमेल संदर्भ में किया जाता है (क्योंकि, यदि आप इस तरह के प्रोटोकॉल का उपयोग करेंगे, तो वह विशेष प्रोग्राम मेल सर्वर के रूप में कार्य करेगा, जिसकी अनुमति नहीं है)

प्रश्न का उत्तर देने के लिए: हाँ। कम से कम सिद्धांत में।


मैं पूछ रहा हूं कि क्या मुझे ई-मेल प्राप्तकर्ताओं को ई-मेल सर्वर (2 ई-मेल सर्वर) को भेजने के लिए ई-मेल सर्वर का उपयोग करना है। मुझे अपने कोड (1 ई-मेल सर्वर) से प्राप्तकर्ताओं को सीधे ई-मेल भेजने में दिलचस्पी है। मैं प्राप्तकर्ता ई-मेल सर्वर को बायपास करने की कोशिश नहीं कर रहा हूं, सिर्फ ई-मेल सर्वर भेज रहा हूं।
डीन शुल्ज़

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

@ थोबडालग्निश: अगर मैं आपकी मशीन तक पहुंच का प्रबंधन कर सकता हूं, तो मैं कुछ भी कर सकता हूं। जिसमें आपके इनबॉक्स में मेल्स शामिल हैं। मैं मानता हूं कि यह एक मात्र अकादमिक विकल्प है, लेकिन यह सवाल इतना स्पष्ट नहीं था।
जेन्सजी

@DeanSchulze: मुझे लगता है कि जोहान्स ने पहले से ही उस विशेष प्रश्न का उत्तर दिया है और यह इतना अच्छा विचार क्यों नहीं है। अगर मैं तुम होते तो सेवा के विचार का पक्ष लेते।
जेएनएसजी

0

अगर हमें जावा कोड से किसी को मेल भेजना है, तो हमें कुछ मेल सर्वर क्रेडेंशियल्स पर एक्सेस करने की आवश्यकता है। खैर, हमेशा नहीं।

Google ने अपने एक मेल सर्वर को मुफ्त पहुंच प्रदान की है और आप इसे जावा कोड में उपयोग कर सकते हैं। नीचे लिखा कोड अगर मेरे आत्म के लिए एक नोट की तरह अधिक। इसलिए, अगर मुझे कुछ समय की आवश्यकता है, तो आप यहां देख सकते हैं: http://www.computerbuzz.in/2014/02/how-to-send-email-in-java-use-gmail.html

private void setMailServerProperties()
    {
        Properties emailProperties = System.getProperties();
        emailProperties.put("mail.smtp.port", "586");
        emailProperties.put("mail.smtp.auth", "true");
        emailProperties.put("mail.smtp.starttls.enable", "true");
        mailSession = Session.getDefaultInstance(emailProperties, null);
    }

    private MimeMessage draftEmailMessage() throws AddressException, MessagingException
    {
        String[] toEmails = { "computerbuzz@gmail.com" };
        String emailSubject = "Test email subject";
        String emailBody = "This is an email sent by http://www.computerbuzz.in.";
        MimeMessage emailMessage = new MimeMessage(mailSession);
        /**
         * Set the mail recipients
         * */
        for (int i = 0; i < toEmails.length; i++)
        {
            emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
        }
        emailMessage.setSubject(emailSubject);
        /**
         * If sending HTML mail
         * */
        emailMessage.setContent(emailBody, "text/html");
        /**
         * If sending only text mail
         * */
        //emailMessage.setText(emailBody);// for a text email
        return emailMessage;
    }

    private void sendEmail() throws AddressException, MessagingException
    {
        /**
         * Sender's credentials
         * */
        String fromUser = "user-email@gmail.com";
        String fromUserEmailPassword = "*******";

        String emailHost = "smtp.gmail.com";
        Transport transport = mailSession.getTransport("smtp");
        transport.connect(emailHost, fromUser, fromUserEmailPassword);
        /**
         * Draft the message
         * */
        MimeMessage emailMessage = draftEmailMessage();
        /**
         * Send the mail
         * */
        transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
        transport.close();
        System.out.println("Email sent successfully.");
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.