Использование устаревшего System.Web.Mail для отправки электронной почты работает нормально, вот фрагмент кода:
Public Shared Sub send(ByVal recipent As String, ByVal from As String, ByVal subject As String, ByVal body As String)
Try
Dim Message As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
Message.To = recipent
Message.From = from
Message.Subject = subject
Message.Body = body
Message.BodyFormat = MailFormat.Html
Try
SmtpMail.SmtpServer = MAIL_SERVER
SmtpMail.Send(Message)
Catch ehttp As System.Web.HttpException
critical_error("Email sending failed, reason: " + ehttp.ToString)
End Try
Catch e As System.Exception
critical_error(e, "send() in Util_Email")
End Try
End Sub
а вот обновленная версия:
Dim mailMessage As New System.Net.Mail.MailMessage()
mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))
mailMessage.Subject = subject
mailMessage.Body = body
mailMessage.IsBodyHtml = True
mailMessage.Priority = System.Net.Mail.MailPriority.Normal
Try
Dim smtp As New Net.Mail.SmtpClient(MAIL_SERVER)
smtp.Send(mailMessage)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Я пробовал много разных вариантов, и, похоже, ничего не работает, у меня такое чувство, что это может быть связано с SmtpClient, есть ли что-то, что изменилось в базовом коде между этими версиями?
Нет отбрасываемых исключений.





Вы пробовали добавить
smtp.UseDefaultCredentials = True
перед отправкой?
Также, что произойдет, если вы попытаетесь изменить:
mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))
к этому:
mailMessage.From = New System.Net.Mail.MailAddress(from,recipent)
- Кевин Фэирчайлд
Я проверил ваш код, и мое письмо успешно отправлено. Предполагая, что вы используете те же параметры для старого кода, я бы предположил, что ваш почтовый сервер (MAIL_SERVER) принимает сообщение и есть задержка в обработке, или он считает его спамом и отбрасывает его.
Я бы посоветовал отправить сообщение третьим способом (telnet, если вы чувствуете себя храбрым) и посмотреть, удастся ли это.
Обновлено: Я отмечаю (из вашего последующего ответа), что указание порта несколько помогло. Вы не сказали, используете ли вы порт 25 (SMTP), порт 587 (отправка) или что-то еще. Если вы этого еще не сделали, использование порта всасывания также может помочь решить вашу проблему.
Вы устанавливаете учетные данные для электронной почты?
smtp.Credentials = New Net.NetworkCredential("[email protected]", "password")
У меня была эта ошибка, но я считаю, что это вызвало исключение.
Библиотека System.Net.Mail использует файлы конфигурации для хранения настроек, поэтому вам может просто потребоваться добавить такой раздел
<system.net>
<mailSettings>
<smtp from = "[email protected]">
<network host = "smtpserver1" port = "25" userName = "username" password = "secret" defaultCredentials = "true" />
</smtp>
</mailSettings>
</system.net>
Все, что вы делаете, правильно. Вот что я бы проверил.
обычно это самые большие виновники, когда у нас возникают проблемы с отправкой электронной почты.
Кроме того, только что заметил, что вы выполняете MsgBox (например, Message). Я считаю, что они заблокировали MessageBox для работы asp.net в пакете обновления, так что это может быть ошибкой, вы просто можете этого не знать. проверьте свой журнал событий.
Я добавил номер порта для почтового сервера, и он начал работать спорадически, похоже, что это была проблема с сервером и задержка отправки сообщений. Спасибо за ответы, все они были полезны!
он передает smtp-сервер в конструктор SmtpClient.