Member 13779854 Ответов: 1

Vb.net не отправляю электронную почту


В рамках системы заказов, которую я создаю, у меня будет опция забытого пароля, которая позволяет пользователю выбрать новый пароль. Программа отправляет им по электронной почте случайно сгенерированный 6-значный код, который пользователь затем должен ввести. Однако письмо не отправляется. Я использовал код, который более или менее идентичен коду, который я использовал в более ранней программе, которая работала правильно.

Что я уже пробовал:

Это код до сих пор:
Try
                    Dim array(6) As String
                    Dim rn As New Random
                    Dim digitCode As Integer
                    Randomize()
                    For count = 1 To 6
                        'array(count) = "1"
                        array(count) = rn.Next(0, 9)
                    Next
                    digitCode = array(1) + array(2) + array(3) + array(4) + array(5) + array(6)
                    sixDigitCode = digitCode

                    Dim email As New MailMessage
                    Dim SMTP As New SmtpClient("smtp.gmail.com")
                    email.Subject = "Forgot Password"
                    email.From = New MailAddress("Ordering system prototype")
                    SMTP.Credentials = New System.Net.NetworkCredential("myemailaddress@gmail.com", "mypassword")
                    email.To.Add(EmailAddress)
                    email.Body = SixDigitCode
                    SMTP.EnableSsl = True
                    SMTP.Port = "587"
                    SMTP.Send(email)
                    TabControlForgotPassword.SelectedIndex = 2
                    MsgBox("A six digit code has been sent to" + EmailAddress)

                Catch ex As Exception
                    MsgBox("Could not send email. Contact your Adminiatrator.")
                End Try




Я думал, что это может быть связано с тем, что Google обновляет свой SMTP-номер? Но я проверил и могу подтвердить, что 587-это все еще правильный номер. Есть ли что-то, что я сделал неправильно?

1 Ответов

Рейтинг:
0

Jochen Arndt

Добавьте строку сообщения об ошибке исключения в вывод окна сообщения, чтобы узнать, что пошло не так:

MsgBox("Could not send email." + ex.Message)

Обратите также внимание, что вы должны разрешить менее защищенным приложениям отправлять почту для используемой учетной записи Goggle mail (см. Разрешить или запретить менее защищенным приложениям доступ к учетным записям - справка-администратор G Suite[^]) как было отмечено в Шаг 2 - Используйте SMTP-сервер Gmail около Отправка электронной почты с принтера, сканера или приложения - справка-администратор G Suite[^].

Другими возможными источниками ошибок являются брандмауэры, блокирующие запрос.

[РЕДАКТИРОВАТЬ]
И, как известно тем временем, получив сообщение об ошибке, поле " От " не содержит действительного адреса электронной почты:
email.From = New MailAddress("Ordering system prototype")

[/РЕДАКТИРОВАТЬ]


Member 13779854

Спасибо, что ответили. В нем говорится: "указанная строка не соответствует форме, требуемой для адреса электронной почты".

Jochen Arndt

От и до должны быть действительными адресами электронной почты. Поэтому проверьте свою переменную 'EmailAddress' и измените поле 'From', потому что ваша фактическая строка не является допустимым адресом.

Member 13779854

Я могу подтвердить, что адрес электронной почты получателя находится в правильном формате. Я также изменил учетные данные с моей фактической информации на то, что никто здесь не крадет учетную запись. Адрес электронной почты отправителя также правильно отформатирован.

Jochen Arndt

"От" не является действительным адресом электронной почты:
email.From = New MailAddress("Ordering system prototype")

Member 13779854

Извините, я думаю, что неправильно понял ваш комментарий. Я почему-то подумал, что вы имеете в виду учетные данные SMTP. Я изменил его, и теперь он работает нормально. Спасибо за ответ.