जीमेल का उपयोग कर ईमेल भेजना एक समय निकाल त्रुटि देता है

हम एक फॉर्म से जीमेल का उपयोग कर ईमेल संदेश भेजने के लिए कुछ कोड का परीक्षण कर रहे हैं, लेकिन त्रुटि का समय निकालें।

क्या आप हमें बता सकते हैं कि ईमेल संदेश भेजने के लिए इस कोड से क्या गुम है?

    Try
        Dim SmtpServer As New SmtpClient()
        Dim mail As New MailMessage()

        SmtpServer.EnableSsl = True
        SmtpServer.Credentials = New Net.NetworkCredential("[email protected]", "MyPasswordGoesHere")
        SmtpServer.Port = 465
        SmtpServer.Host = "smtp.gmail.com"

        mail.From = New MailAddress("[email protected]")
        mail.To.Add("[email protected]")
        mail.Subject = "Test Mail"
        mail.Body = "This is for testing SMTP mail from GMAIL"

        SmtpServer.Send(mail)

        MsgBox("mail sent")

    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

अद्यतन करें: MailBee का उपयोग कर कोड परिवर्तन। इस प्रकार हम सभी ग्राहकों को ईमेल कर रहे हैं:

    Dim strSqlStatement As String = "Select CustomerName, Email " & _
                               "From Customers " & _
                              "Where Email Is Not Null"
    If IsConnected() Then

        ' Set up the sql command and lookup the parent.
        '----------------------------------------------
        Using objSqlCommand As SqlCommand = New SqlCommand(strSqlStatement, ObjConnection)

            With objSqlCommand

                ' Open the SqlConnection before executing the query.
                '---------------------------------------------------
                Cursor = Cursors.WaitCursor

                ObjConnection.Open()

                Dim objDataReader As SqlDataReader = .ExecuteReader()

                ' Go through all the customers and send out the promotion emails.
                '----------------------------------------------------------------
                If objDataReader.HasRows Then

                    MailBee.Global.LicenseKey = "My license key goes here."

                    Dim objSMTP As New Smtp
                    Dim server As New SmtpServer(TextBoxSMTPServer.Text, TextBoxUserName.Text, TextBoxPassword.Text)

                    'SmtpServer.Host = TextBoxSMTPServer.Text
                    'SmtpServer.Port = TextBoxPort.Text
                    'SmtpServer.Timeout = 100

                    'If TextBoxUseSSL.Text = "Yes" Then
                    '    SmtpServer.EnableSsl = True
                    'Else
                    '    SmtpServer.EnableSsl = False
                    'End If

                    'If TextBoxUseDefaultCredentials.Text = "Yes" Then
                    '    SmtpServer.UseDefaultCredentials = True
                    'Else
                    '    SmtpServer.UseDefaultCredentials = False
                    'End If

                    'SmtpServer.Credentials = New Net.NetworkCredential(TextBoxUserName.Text, TextBoxPassword.Text)


                    objSMTP.SmtpServers.Clear()
                    objSMTP.SmtpServers.Add(server)

                    While objDataReader.Read()
                        If objDataReader("Email").ToString <> "" Then

                            objSMTP.Message.From.AsString = TextBoxEmailFrom.Text
                            objSMTP.Message.To.AsString = objDataReader("Email").ToString
                            objSMTP.Message.Subject = "Promotion: " & TextBoxID.Text
                            objSMTP.Message.BodyPlainText = "Dear " & objDataReader("CustomerName") & "," & vbCrLf & vbCrLf & TextBoxPromotionBodyText.Text

                            Try
                                objSMTP.Send()

                            Catch exBadPassword As MailBeeSmtpLoginBadCredentialsException
                                MsgBox("The login name or password is not correct.", MsgBoxStyle.Exclamation, "Email")
                                blnThereWereErrors = True

                            Catch exBadFromAddress As MailBeeSmtpRefusedSenderException
                                MsgBox("The sender email must be the same as the user's email address.", MsgBoxStyle.Exclamation, "Email")
                                blnThereWereErrors = True

                            Catch ex As Exception
                                MsgBox(ex.Message)
                                blnThereWereErrors = True
                            End Try
                        End If

                        If blnThereWereErrors Then
                            Exit While
                        End If
                    End While

                    If blnThereWereErrors = False Then
                        MessageBox.Show("Mass emailing has completed." & vbCrLf, _
                                "Email Message.", _
                                MessageBoxButtons.OK, _
                                MessageBoxIcon.Information)
                    End If
                End If

                objDataReader.Close()
                ObjConnection.Close()

                Cursor = Cursors.Default
            End With ' objSqlCommand
        End Using ' objSqlCommand
11
जोड़ा संपादित
विचारों: 2
उत्तर के लिए धन्यवाद। मैंने कोशिश की लेकिन यह अभी भी समय समाप्त हो गया।
जोड़ा लेखक Emad-ud-deen, स्रोत
उत्तर के लिए धन्यवाद kcbeard। मैंने टेलनेट में smtp.gmail.com 465 की कोशिश की और ऐसा लगता है कि यह दिख रहा है: smtp.gmail.com से कनेक्ट हो रहा है ... और बस एक चमकती कर्सर दिखा रहा है तो यह sais: खोने के लिए कनेक्शन खो गया है। मैं towel.blinkenlights.nl से कनेक्ट करने में सक्षम था और यह काम किया। निश्चित नहीं है कि जीमेल के साथ कोई समस्या क्यों है। मैं बिना किसी समस्या के अपने ईमेल क्लाइंट सॉफ़्टवेयर में जीमेल का उपयोग करता हूं। क्या कोई ओपन सोर्स कंट्रोल है जिसका उपयोग मैं अपने फॉर्म में कर सकता हूं जो ईमेल के साथ काम करता है?
जोड़ा लेखक Emad-ud-deen, स्रोत
मैं इसे एक और ईमेल सर्वर का उपयोग करके काम करने में सक्षम था। निश्चित नहीं है कि जीमेल के साथ कोई समस्या क्यों है।
जोड़ा लेखक Emad-ud-deen, स्रोत
मैं मैक पर विंडोज 7 चलाने वाली समांतर वर्चुअल मशीन में काम कर रहा हूं। मैंने bluebottle.com का उपयोग ईमेल सर्वर के रूप में किया जो पूरी तरह से काम करता है। कम से कम मुझे पता है कि कोड काम करता है।
जोड़ा लेखक Emad-ud-deen, स्रोत
हमने मेलबी का उपयोग करने की कोशिश की और सभी ईमेल समस्याएं गायब हो गईं। यकीन नहीं है कि क्यों मुझे लगता है कि यह बंदरगाह संख्याओं के माध्यम से चक्र है और उपयोग करने के लिए सबसे अच्छा पाता है। मैं मेलबी को उपयोग में दिखाने के लिए पोस्ट में कोड अपडेट कर रहा हूं।
जोड़ा लेखक Emad-ud-deen, स्रोत
कोड अच्छा लग रहा है। शायद यह एक यूएसी समस्या है?
जोड़ा लेखक Keith Beard, स्रोत
तथ्य यह है कि कमांड लाइन टेलनेट smtp.gmail.com 465 के माध्यम से कनेक्ट करने का प्रयास करें, यदि आप UseDefaultCredentials = False सेटिंग को सेट करने से कनेक्ट कर सकते हैं
जोड़ा लेखक Keith Beard, स्रोत
मैं अनुमान लगा रहा हूं कि शायद यह Google नहीं है, यह अजीब बात है कि हुआ। आप किस तरह का पर्यावरण काम कर रहे हैं। क्या आपके पास फ़ायरवॉल, या कुछ प्रकार की हार्ड दीवार है?
जोड़ा लेखक Keith Beard, स्रोत

2 उत्तर

एक अलग पोर्ट नंबर का उपयोग करने का प्रयास करें। आप <46> System.Net.Mail के साथ पोर्ट 465 का उपयोग नहीं कर सकते क्योंकि यह केवल "स्पष्ट SSL" का समर्थन करता है। इस पर अधिक जानकारी के लिए यह पृष्ठ देखें।

वीबीएनईटी के माध्यम से मेल भेजते समय जीमेल पोर्ट 25 या 587 स्वीकार करेगा लेकिन बंदरगाह 465 का उपयोग कर समय निकाल देगा।

Also make sure you have UseDefaultCredentials = False

इसके अलावा इस उदाहरण पर जीमेल में जीमेल का उपयोग करके मेल भेजने के तरीके पर भी देखें। यह आपको कुछ और सुराग दे सकता है।

14
जोड़ा
सहायता के लिए धन्यवाद। :-)
जोड़ा लेखक Emad-ud-deen, स्रोत
हां, पोर्ट 465 का उपयोग करते समय मुझे भी यही समस्या थी। मैंने इसे 587 का उपयोग करके तय किया
जोड़ा लेखक Yohannis, स्रोत

मुझे इसी तरह की समस्या थी, मेरे मामले में मैं बस प्रोटोकॉल निर्दिष्ट करना भूल गया था, इसलिए smtp.gmail.com के बजाय मुझे ssl: //smtp.gmail.com </कोड रखना पड़ा >।

1
जोड़ा