C # के साथ Gmail SMTP सर्वर के माध्यम से ईमेल भेजना


242

किसी कारण से न तो स्वीकृत उत्तर और न ही कोई अन्य मेरे लिए " Gmail के माध्यम से .NET में ईमेल भेजने " के लिए काम करता है । वे काम क्यों नहीं करेंगे?

अद्यतन: मैंने अन्य प्रश्नों में सभी उत्तरों (स्वीकृत और अन्यथा) की कोशिश की है, लेकिन उनमें से कोई भी काम नहीं करता है।

मैं यह जानना चाहूंगा कि क्या यह किसी और के लिए काम करता है, अन्यथा Google कुछ बदल सकता है (जो पहले हो चुका है)।

जब मैं उपयोग करने वाले कोड के टुकड़े को SmtpDeliveryMethod.Networkआज़माता हूं, तो मुझे जल्दी से Send (संदेश) पर एक SmtpException प्राप्त होती है। संदेश है

SMTP सर्वर को सुरक्षित कनेक्शन की आवश्यकता होती है या क्लाइंट प्रमाणित नहीं किया गया था।

सर्वर प्रतिक्रिया थी:

5.5.1 प्रमाणीकरण आवश्यक है। अधिक जानें "<- गंभीरता से, यह वहाँ समाप्त होता है।

अपडेट करें:

यह एक ऐसा प्रश्न है जो मैंने बहुत पहले पूछा था, और स्वीकृत उत्तर कोड है जिसे मैंने कई बार, कई बार विभिन्न परियोजनाओं पर उपयोग किया है।

मैंने इस पोस्ट और अन्य EmailSender परियोजनाओं में से कुछ विचारों को कोडप्लेक्स में एक EmailSender परियोजना बनाने के लिए लिया है । यह परीक्षण क्षमता के लिए डिज़ाइन किया गया है और GoDaddy और Gmail जैसी मेरी पसंदीदा SMTP सेवाओं का समर्थन करता है।


मैंने एक अलग भाषा में समान तरीकों का उपयोग करके ऐसा करने की कोशिश की। एक ही प्रकार की चीज़ों से सामना करना पड़ा: पुराने दस्तावेज़ जो पहले काम करते थे, मेरे लिए काम नहीं करते थे। तो आप सोच रहे होंगे कि क्या Google ने कुछ बदला, या अगर आपने कुछ गलत किया है।
एरोनल्स

2
@ हाल ही के एकमात्र परिवर्तन 465 पोर्ट से संबंधित प्रतीत होते हैं। मैंने इसका हल ढूंढते हुए कोशिश की (मैं बस उसी पर काम कर रहा था), और 465 पोर्ट टाइमआउट हर समय। यदि आपका मामला ऐसा है, तो 587 पोर्ट के साथ प्रयास करें।
इगलासियस

2
यह समस्या "शब्द सत्यापन" (कैप्चा) के कारण है। यदि आप हाथ से वेब इंटरफेस में साइन इन करते हैं और कैप्चा भरते हैं तो आपका एसएमटीपी काम करना शुरू कर देगा।
रॉबर्ट कोरिटनिक

4
FWIW, मेरे लिए काम करता है। आपको 587 और .EnSSSSL का उपयोग करने की आवश्यकता है। c # 4 / .NET 4 वर्तमान में वैकल्पिक 465 / SSL का समर्थन नहीं करता है। जीमेल अन्य मेल क्लाइंट को कॉन्फ़िगर करने की मांग करता है
gerryLowry

1
@Eglasius उत्तर का पालन करें और सुनिश्चित करें कि आप Gmail में "कम सिक्योर ऐप्स की अनुमति दें" सेटिंग चालू करें ताकि जीमेल को अपने खाते को प्रमाणित करने की अनुमति मिल सके।
user2713706

जवाबों:


290

CVertex, अपने कोड की समीक्षा करना सुनिश्चित करें, और, अगर वह कुछ भी प्रकट नहीं करता है, तो उसे पोस्ट करें। मैं सिर्फ एक परीक्षण ASP.NET साइट पर काम कर रहा था जिस पर मैं इसे सक्षम कर रहा था, और यह काम करता है।

दरअसल, किसी समय मेरे पास अपने कोड पर एक मुद्दा था। जब तक मेरे पास कंसोल प्रोग्राम पर एक सरल संस्करण नहीं था, तब तक मैंने इसे नहीं देखा था और यह देखा था कि यह काम कर रहा था (जीमेल की तरफ कोई बदलाव नहीं हुआ क्योंकि आप चिंतित थे)। नीचे दिए गए कोड ठीक उसी तरह काम करते हैं, जैसे आपके द्वारा भेजे गए नमूनों में:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

मैंने इसे web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx और कोड के संयोजन का उपयोग करके भी काम किया (क्योंकि EnableSslकॉन्फ़िगरेशन फ़ाइल में कोई मेल नहीं है :()।


1
C # winforms एप्लिकेशन में मेरे लिए शानदार ढंग से काम किया। धन्यवाद, फ्रेडी।
एंड्रयू

13
बस याद रखें कि इस तरह का कोड प्रभावी रूप से उपयोगकर्ता को सादे पाठ में आपके जीमेल क्रेडेंशियल्स को प्रसारित कर रहा है ...
क्रिस मैरिसिक

3
वास्तव में web.config में enableSsl के लिए एक मेल खाने वाली सेटिंग है, नीचे उत्तर देखें
Wiebe Tijsma

4
@Zidad जो 4.0 में जोड़ा गया था।
इगलासियस

21
आपको अपने जीमेल सेटिंग्स पेज में "कम सुरक्षित ऐप्स" के लिए पहुंच सक्षम करने की आवश्यकता हो सकती है: google.com/settings/security/lesssecureapps । यदि आप अपवाद प्राप्त कर रहे हैं तो यह आवश्यक है "` सर्वर प्रतिक्रिया थी: 5.5.1 प्रमाणीकरण आवश्यक।
रवेन्दर्स्की

73

निम्नलिखित सभी प्रश्नों का उत्तर दिया जाएगा, यदि सभी प्रश्नों का उत्तर दिया गया हो :

मुझे ठीक वैसी ही त्रुटि मिली, यह पता चला कि Google का नया पासवर्ड स्ट्रेंथ मापने वाला एल्गोरिथ्म मेरे वर्तमान पासवर्ड को बहुत कमज़ोर बना रहा है, और मुझे इसके बारे में कोई बात नहीं बता रहा है (संदेश या चेतावनी भी नहीं) ... मुझे यह कैसे पता चला ? खैर, मैंने अपना पासवर्ड बदलने के लिए यह देखने के लिए चुना कि क्या यह मदद करेगा (किसी और चीज से कोई फायदा नहीं हुआ) और जब मैंने अपना पासवर्ड बदला, तो यह काम कर गया!

फिर, एक प्रयोग के लिए, मैंने अपने पिछले पासवर्ड को वापस देखने के लिए अपना पासवर्ड बदलने की कोशिश की, यह देखने के लिए कि क्या होगा, और जीमेल ने वास्तव में मुझे ऐसा करने की अनुमति नहीं दी, कारण का हवाला देते हुए "खेद है कि हम आपके चुने हुए के रूप में इस परिवर्तन को बचाने की अनुमति नहीं दे सकते हैं।" पासवर्ड बहुत कमजोर है "और मुझे अपने पुराने पासवर्ड पर वापस नहीं जाने देगा। मुझे इससे लगा कि यह गलत है क्योंकि या तो क) आपको हर महीने या x राशि के एक बार अपना पासवर्ड बदलने की आवश्यकता है)। जैसा कि मैंने पहले कहा था, उनके पासवर्ड की शक्ति एल्गोरिदम बदल गई थी और इसलिए कमजोर पासवर्ड मुझे स्वीकार नहीं किया गया था, भले ही उन्होंने इस बारे में कुछ भी नहीं कहा था जब कोई भी लॉग इन करने की कोशिश कर रहा था! यह (नंबर 2) सबसे संभावित परिदृश्य है, क्योंकि मेरा कमजोर पासवर्ड लगभग 4 महीने पुराना था, और इसने मुझे जीमेल में इसका उपयोग करने दिया।

यह बहुत बुरा है कि उन्होंने इस बारे में कुछ नहीं कहा, लेकिन यह समझ में आता है। क्योंकि अधिकांश अपहृत ईमेल को gmail के बाहर सॉफ़्टवेयर का उपयोग करके लॉग इन किया जाता है, और मुझे लगता है कि यदि आप Gmail वातावरण के बाहर Gmail का उपयोग करना चाहते हैं तो आपको एक मजबूत पासवर्ड की आवश्यकता होगी।

आशा है कि ये आपकी मदद करेगा!


2
धन्यवाद, जैसा कि आप कहते हैं कि पासवर्ड बदलें ताकि यह मजबूत हो और सभी ठीक काम करेंगे।
गैविन

1
यह वास्तव में मेरी समस्या थी - अन्य सभी सुझाव विन्यास के बारे में थे, लेकिन मेरा विन्यास शुरुआत से ही सही था, लेकिन मैं त्रुटि प्राप्त करता रहा। पासवर्ड बदलने से सभी अंतर हो गए,
एंड्रे वर्मीलेन

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

धन्यवाद। मुझे अपने gmail अकाउंट की वही समस्या थी जो पासवर्ड की ताकत के मालिक नहीं थे। मैंने इसे मजबूत के साथ अपडेट किया और मेरे कोड काम कर रहे हैं।
थॉमस.बेंक

धन्यवाद, हां आखिरकार यह पासवर्ड को मजबूत करने के लिए बदल रहा है।
मीशा बेसकिन

67

उपरोक्त अन्य समस्या निवारण चरणों के अलावा, मैं यह भी जोड़ना चाहूंगा कि यदि आपने अपने GMail खाते पर दो-कारक प्रमाणीकरण (जिसे दो-चरणीय सत्यापन भी कहा जाता है ) सक्षम किया है, तो आपको एक एप्लिकेशन-विशिष्ट पासवर्ड जनरेट करना चाहिए और उस नए का उपयोग करना चाहिए SMTP के माध्यम से प्रमाणित करने के लिए पासवर्ड जनरेट किया गया

एक बनाने के लिए: https://www.google.com/settings/ पर जाएं और पासवर्ड जनरेट करने के लिए एप्लिकेशन और साइटों को अधिकृत करें ।


1
मेरे पास 2-चरणीय सत्यापन सक्षम नहीं है, और इससे कोई फर्क नहीं पड़ता कि मैंने पासवर्ड कितना सुरक्षित बनाया, यह एकमात्र तरीका था जिससे मैं अपनी समस्या को ठीक कर सकता था। मैं बिना किसी मुद्दे के 2-स्टेप और कमजोर पासवर्ड के बिना अन्य जीमेल खातों का उपयोग करने में सक्षम था ... जिस खाते का मैं वास्तव में उपयोग करना चाहता था उसका उपयोग करने के लिए मुझे 2-चरण को सक्षम करना और एक एप्लिकेशन विशिष्ट पासवर्ड का उपयोग करना था।
इयान रॉबर्टसन

वास्तव में मैं क्या कर रहा हूँ, फिर भी अभी भी वही त्रुटि है: - / यह मेरे पासवर्ड की तरह कार्य कर रहा है जो काफी मजबूत नहीं है, लेकिन मैं ऐप पासवर्ड का उपयोग कर रहा हूं जो जीमेल ने मुझे दिया है !!!
जेरी डॉज

54
Turn On Access For Less Secure Apps and it will work for all no need to change password.

जीमेल सेटिंग से लिंक करें

यहां छवि विवरण दर्ज करें


1
इसने मेरे लिए काम किया। इससे भी अधिक, जब मैंने उपरोक्त तरीके से ईमेल भेजने की कोशिश की, तो मुझे वास्तव में Google से ईमेल मिला जहां उन्होंने स्पष्ट रूप से कहा कि उन्होंने इस प्रयास को कम सुरक्षित ऐप से अवरुद्ध कर दिया है और उन्होंने इसे ठीक करने के लिए इस तरह का उल्लेख किया है
Demarsch

1
यह पहेली में सबसे महत्वपूर्ण कुंजी है क्योंकि मेरे पास हर दूसरी सेटिंग थी और यह काम नहीं कर रहा था। जैसे ही मेरे पास यह सेटिंग थी, यह सिर्फ एक आकर्षण की तरह काम करता था।
खो दिया

1
इसने मेरे लिए काम किया। ऐप पासवर्ड + SSL + NetworkCredentials। (VB.NET)
CrazyIvan1974

30

मुझे अपने gmail खाते से ईमेल भेजने में कुछ समस्याएँ हैं, जो कि पूर्वोक्त स्थितियों में से कई के कारण थे। यहां बताया गया है कि मैंने इसे कैसे काम किया और उसी समय इसे लचीला बनाए रखा:

  • सबसे पहले अपना GMail अकाउंट सेटअप करें:
    • IMAP सक्षम करें और संदेशों की सही अधिकतम संख्या पर जोर दें (आप यहां ऐसा कर सकते हैं)
    • सुनिश्चित करें कि आपका पासवर्ड कम से कम 7 वर्ण का है और मजबूत है (Google के अनुसार)
    • सुनिश्चित करें कि आपको पहले एक कैप्चा कोड दर्ज करने की आवश्यकता नहीं है। आप अपने ब्राउज़र से एक परीक्षण ईमेल भेजकर ऐसा कर सकते हैं।
  • Web.config में परिवर्तन करें (या app.config, मैंने अभी तक कोशिश नहीं की है, लेकिन मुझे लगता है कि यह विंडोज़ अनुप्रयोग में काम करना उतना ही आसान है):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

और अब आप जब भी ईमेल भेजना चाहते हैं, तो आपको कॉल करना होगा SSLMail.SendMail:

एक पासवर्ड के साथ एक पेज में उदाहरण के लिए ControlRecovery नियंत्रण:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

या आपके कोड में कहीं भी आप कॉल कर सकते हैं:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

मुझे उम्मीद है कि यह इस पोस्ट में चलने वाले किसी भी व्यक्ति की मदद करेगा! (मैंने VB.NET का उपयोग किया है लेकिन मुझे लगता है कि इसे किसी भी .NET भाषा में परिवर्तित करना तुच्छ है।)


+1 "EnableSsl =" true "- यह एक विरासत ऐप के लिए काम करता है जो विशेष रूप से असेंबलियों को फिर से स्थापित किए बिना Smtp.enableSsl संपत्ति सेट नहीं करता है। उत्कृष्ट टिप!
मेट्रो Smurf

और फ़ायरवॉल मत भूलना। पोर्ट 587 खोलने के लिए एक सामान्य बंदरगाह नहीं है।
गाइ लोव

13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

यदि आपको "SMTP सर्वर की तरह एक त्रुटि मिलती है, तो सुरक्षित कनेक्शन की आवश्यकता होती है या क्लाइंट को प्रमाणित नहीं किया गया था। सर्वर की प्रतिक्रिया थी: 5.5.1 प्रमाणीकरण आवश्यक। अधिक जानें" जैसा कि मैं इससे पहले प्राप्त करता हूं, सुनिश्चित करें कि लाइन में SMTPClientObj.UseDefaultCredentials = Falseशामिल है और यह लाइन है। से पहले चाहिए SMTPClientObj.Credentials

मैंने इन 2 लाइनों को विपरीत तरीके से बदलने की कोशिश की और 5.5.1 प्रमाणीकरण आवश्यक त्रुटि वापस आ गई।


मेरे साथ भी ठीक ऐसा ही हुआ। किसने सोचा था कि संपत्ति सेट करने का आदेश चीजों को ठीक / तोड़ देगा!
बिल यांग

यह मेरे लिए भी मुद्दा था, मैंने सुझाव के अनुसार ऑर्डर को इधर-उधर कर दिया और यह ठीक काम करता है - सिरदर्द, ऊह!
eth0

13

ओह ... यह आश्चर्यजनक है ... पहले मैं किन्हीं कारणों से ईमेल नहीं भेज सका। लेकिन बाद में मैंने इन दोनों लाइनों के अनुक्रम को नीचे के रूप में बदल दिया, यह पूरी तरह से काम करता है।

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

उममीद है कि इससे मदद मिलेगी!!! :)


1
हां, क्रम से फर्क पड़ता है। खासकर जब आप संपत्ति क्रेडेंशियल सेट करते हैं और आप डिफ़ॉल्ट क्रेडेंशियल्स का उपयोग नहीं करना चाहते हैं।
स्टेफन केवेटोव्स्की 16

1
प्रलेखन के अनुसार, क्रेडेंशियल का उपयोग करने के लिए आपको UseDefaultCredentials = false सेट करने की आवश्यकता होती है। हालाँकि ये दोनों सेटिंग गुप्त रूप से परस्पर जुड़ी हुई लगती हैं। यदि आप UseDefaultCredentials को सही या गलत पर सेट करते हैं, तो क्रेडेंशियल्स को शून्य करने के लिए इसका साइड इफेक्ट होगा। और यह प्रतीत होता है कि क्रेडेंशियल सेट करना साइड-इफेक्ट सेट UseDefaultCredentials = false सेट कर सकता है। हालांकि ऐसा करने के लिए दस्तावेज नहीं है, यह बग या सिर्फ एक लंगड़ा डेवलपर हो सकता है।
एरोन

10

समस्या जीमेल के माध्यम से भेजने की तकनीकी क्षमता में से एक नहीं है। जो ज्यादातर स्थितियों के लिए काम करता है। यदि आपको भेजने के लिए मशीन नहीं मिल सकती है, तो यह आमतौर पर मशीन के कारण होता है जो कम से कम एक बार नियंत्रण में एक मानव के साथ प्रमाणित नहीं होती है।

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

मैंने अपने मौजूदा सिस्टम में जो किया है वह प्रत्येक संदेश के बीच 1.5 सेकंड की देरी के साथ भेजना है। फिर अगर मुझे कोई त्रुटि मिलती है, तो 5 मिनट के लिए रुकें और फिर शुरू करें। यह आमतौर पर काम करता है और आपको खाते की सीमा तक भेजने की अनुमति देगा (अंतिम बार मैंने जांच की थी कि यह प्रति दिन प्रीमियर ग्राहक लॉगिन के लिए 2,000 था)।


1
यह वास्तव में मेरी समस्या थी! जब मैंने प्रोडक्शन के लिए तैनात किया, तो मुझे यह मुद्दा मिला और मैंने सर्वर पर जीमेल में लॉग इन करने के बाद, यह फिर से काम करना शुरू कर दिया।
ThisGuy


9

मुझे भी यही समस्या थी, लेकिन यह पता चला कि मेरा वायरस प्रोटेक्शन आउटगोइंग "स्पैम" ईमेल को रोक रहा था। इसे बंद करने से मुझे GMail के माध्यम से SMTP ईमेल भेजने के लिए पोर्ट 587 का उपयोग करने की अनुमति मिली


मैंने विंडोज डिफेंडर को निष्क्रिय कर दिया और इसने काम करना भी शुरू कर दिया।
MorioBoncz

9

यदि आपके लिए यहां और कुछ भी काम नहीं किया गया है, तो आपको तीसरे पक्ष के एप्लिकेशन से अपने जीमेल खाते तक पहुंच की अनुमति देनी पड़ सकती है। यह मेरी समस्या थी। निम्नलिखित की अनुमति देने के लिए:

  1. अपने जीमेल अकाउंट में साइन इन करें।
  2. इस पृष्ठ पर जाएँ https://accounts.google.com/DisplayUnlockCaptcha और पहुँच की अनुमति देने के लिए बटन पर क्लिक करें।
  3. इस पृष्ठ https://www.google.com/settings/security/lesssecureapps पर जाएं और कम सुरक्षित ऐप्स तक पहुंच सक्षम करें।

यह मेरे लिए काम करता है आशा है कि यह किसी और के लिए काम करता है!


8

मुझे यकीन नहीं है कि इसके लिए कौन सा .NET संस्करण आवश्यक है क्योंकि उल्लेख किया गया है कि कोई मिलान enableSslसेटिंग नहीं है (मैं .NET 4.0 का उपयोग कर रहा हूं, लेकिन मुझे यह संदेह है कि यह .NET 2.0 या बाद में काम करेगा), लेकिन इस कॉन्फ़िगरेशन के लिए काम किया मुझे (और आपको किसी प्रोग्रामेटिक कॉन्फ़िगरेशन का उपयोग करने की आवश्यकता नहीं है):

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

आपको पहले अपने Gmail खाते पर POP या IMAP को सक्षम करना होगा: https://mail.google.com/mail/?shva=1#settings/fwdandpop

मैं पहले एक सामान्य मेल क्लाइंट के साथ इसे आज़माने की सलाह देता हूँ ...


2
यह 4.0 से नया है, यहां के संस्करणों की तुलना करें -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
eglasius

हाय ईगलसियस ... इसके लिए धन्यवाद! अजीब है कि वे केवल पूर्व 4.0 में प्रोग्रामेटिक दृष्टिकोण रखते हैं। मुझे लगता है कि हम सभी चीजों को अब और फिर भूल जाते हैं :)
Wiebe Tijsma

6

@Andres Pompiglio: हाँ यह सही है कि आपको कम से कम एक बार अपना पासवर्ड बदलना होगा। यह कोड ठीक काम करता है:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

और आप फ़ंक्शन का उपयोग करके कॉल कर सकते हैं:

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))

SMTP सर्वर को एक सुरक्षित कनेक्शन की आवश्यकता होती है या क्लाइंट प्रमाणित नहीं किया गया था। सर्वर प्रतिक्रिया थी: 5.5.1 प्रमाणीकरण आवश्यक है। और अधिक जानें
सावास अदार

6

मैं कॉर्पोरेट वीपीएन कनेक्शन का उपयोग कर रहा था। यही कारण था कि मैं अपने आवेदन से ईमेल नहीं भेज सका। अगर मैं वीपीएन से डिस्कनेक्ट करता हूं तो यह काम करता है।


5

मैंने यह भी पाया कि मैं जिस खाते में लॉग इन करता था वह किसी कारण से Google द्वारा सक्रिय हो गया था। एक बार जब मैंने अपना पासवर्ड रीसेट कर दिया था (जैसा कि यह पहले हुआ करता था), तो मैं ठीक-ठीक ईमेल भेजने में सक्षम था। मुझे 5.5.1 मैसेज भी मिल रहे थे।


5

मैंने भी कई समाधान करने की कोशिश की थी, लेकिन कुछ बदलाव करें यह काम करेगा

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

smtpclient के ऊपर पैरामीटर gmail में काम करते हैं


5

मुझे वही त्रुटि मिल रही थी और उपरोक्त समाधानों में से किसी ने भी मदद नहीं की।

मेरी समस्या यह थी कि मैं एक रिमोट सर्वर से कोड चला रहा था, जिसका उपयोग कभी भी जीमेल अकाउंट में लॉग इन करने के लिए नहीं किया गया था।

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



4

मैं इस त्रुटि में भाग गया ( "SMTP सर्वर को सुरक्षित कनेक्शन की आवश्यकता है या क्लाइंट प्रमाणित नहीं किया गया था। सर्वर प्रतिक्रिया थी: 5.5.1 प्रमाणीकरण आवश्यक है। और जानें" ) और पता चला कि मैं गलत पासवर्ड का उपयोग कर रहा था। मैंने लॉगिन क्रेडेंशियल तय किए, और इसे सही तरीके से भेजा।

मुझे पता है कि यह देर हो चुकी है, लेकिन शायद यह किसी और की मदद करेगा।


4

एक और चीज़ जो मुझे मिली है वह यह है कि आपको अपना पासवर्ड कम से कम एक बार बदलना होगा। और एक सुरक्षित स्तर पासवर्ड का उपयोग करने का प्रयास करें (पासवर्ड, 123456, आदि के समान उपयोगकर्ता का उपयोग न करें)


4

फिर भी आपके लिए एक और संभव उपाय। मुझे IMAP के माध्यम से जीमेल से जुड़ने में समान समस्याएं हो रही थीं। सभी समाधान है कि मैं भर में आया था कि तुम यहाँ और कहीं और इतने पर के बारे में पढ़ा होगा की कोशिश के बाद (जैसे। सक्षम IMAP, आपके मेल पर कम सुरक्षित उपयोग, का उपयोग करते हुए सक्षम https://accounts.google.com/b/0/displayunlockcaptcha और इसलिए), मैंने वास्तव में एक बार फिर एक नया जीमेल अकाउंट स्थापित किया है।

मेरे मूल परीक्षण में, मैंने जो पहला gmail खाता बनाया था, मैं अपने मुख्य gmail खाते से जुड़ा था। इसके परिणामस्वरूप अनियमित व्यवहार हुआ जहां गलत खाते को Google द्वारा संदर्भित किया जा रहा था। उदाहरण के लिए, https://accounts.google.com/b/0/displayunlockcaptcha चलाने से मैंने अपना मुख्य खाता खोल दिया था , बजाय इसके कि मैंने इस उद्देश्य के लिए बनाया था।

इसलिए जब मैंने एक नया खाता बनाया और इसे अपने मुख्य खाते से नहीं जोड़ा, तो उपरोक्त सभी उपयुक्त चरणों का पालन करने के बाद, मैंने पाया कि यह ठीक काम करता है!

मैंने अभी तक इसकी पुष्टि नहीं की है (यानी पुन: प्रस्तुत), लेकिन यह स्पष्ट रूप से मेरे लिए किया था ... आशा है कि यह मदद करता है।


4
  1. सबसे पहले अपना gmail अकाउंट सेटिंग चेक करें और "कम सिक्योर ऐप्स के लिए एक्सेस" से चालू करें यहां छवि विवरण दर्ज करें

हम दृढ़ता से अनुशंसा करते हैं कि आप अपने खाते तक पहुंचने के लिए जीमेल जैसे सुरक्षित ऐप का उपयोग करें। Google द्वारा बनाए गए सभी एप्लिकेशन इन सुरक्षा मानकों को पूरा करते हैं। दूसरी ओर, कम सुरक्षित ऐप का उपयोग करना, आपके खाते को असुरक्षित बना सकता है। और अधिक जानें।

  1. सेट

    smtp.UseDefaultCredentials = false;

    इससे पहले

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);

4

इन त्रुटि के एक या अधिक कारण हैं।

  • अपने स्थानीय सिस्टम में अपने जीमेल (या किसी भी अन्य) के साथ लॉग इन करें।

  • कम सिक्योर ऐप की भी जाँच करें और इसे "चालू करें" पर सेट करें यहाँ GMAIL के लिए लिंक है। https://www.google.com/settings/security/lesssecureapps

  • अपने ईमेल कोड में EnableSsl के लिए जाँच करें, और इसे भी सही पर सेट करें।

    smtp.EnableSsl = true;
  • यह भी जांचें कि आप वर्तमान में किस पोर्ट का उपयोग कर रहे हैं। 25 ग्लोबल है, लेकिन आप इसे 587 की तरह दूसरों के लिए भी चेक कर सकते हैं। क्या सभी SMTP संचार 25 से अधिक होते हैं?

  • यदि आप रिमोट पर हैं : ऊपर व्लाड तमस के उत्तर की जाँच करें ।


क्या होगा अगर मैं कम सुरक्षित ऐप सेटिंग्स को चालू नहीं करना चाहता, तो अन्य ईमेल क्लाइंट ऐसा क्यों करते हैं कि मैं c # के साथ ऐसा क्यों नहीं कर सकता?
user734028

3

आप पोर्ट 465 के माध्यम से भी कनेक्ट कर सकते हैं, लेकिन System.Net.Mail नामस्थान की कुछ सीमाओं के कारण आपको अपना कोड बदलना पड़ सकता है। ऐसा इसलिए है क्योंकि नाम स्थान अंतर्निहित SSL कनेक्शन बनाने की क्षमता प्रदान नहीं करता है। इसकी चर्चा http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , और I पर की गई है। एक अन्य चर्चा में सीडीओ (सहयोगात्मक डेटा ऑब्जेक्ट) का उपयोग करने का एक उदाहरण दिया है ( सभी बंदरगाहों पर सी #। नेट त्रुटियों के माध्यम से जीएमआईएल एसएमटीपी )।


3

मुझे यह समस्या हल हो गई। विभिन्न त्रुटि प्रकारों में संदेश का उपयोग किया जाता है। मेरी समस्या यह थी कि मैं अपने अधिकतम 500 भेजे गए मेल तक पहुँच गया था।

खाते में लॉग इन करें और मैन्युअल रूप से एक मेल भेजने की कोशिश करें। यदि सीमा समाप्त हो गई है तो यह आपको सूचित करेगा


2

अगर आपके जीमेल अकाउंट पर 2-स्टेप वेरिफिकेशन है, तो आपको एक ऐप पासवर्ड जनरेट करना होगा। https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=en&visit_id=636903322072234863-1319515789&rd=1 चयन करें कि कैसे एक ऐप पासवर्ड विकल्प तैयार करें और दिए गए चरणों का पालन करें। जनरेट किए गए ऐप पासवर्ड को कहीं पर कॉपी और पेस्ट करें क्योंकि आप DONE पर क्लिक करने के बाद इसे पुनर्प्राप्त नहीं कर पाएंगे।


2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;

1

अपना gmail पासवर्ड बदलें और पुनः प्रयास करें, यह उसके बाद काम करना चाहिए।

पता नहीं क्यों, लेकिन हर बार जब आप अपनी होस्टिंग बदलते हैं तो आपको अपना पासवर्ड बदलना पड़ता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.