Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Отправка писем без почтового клиента


Автор: vdsteff 25.3.2011, 08:56
Имеется форма с 3мя TextBox-ами (1 ввод email-а отправителя; 2 пароль к ящику; 3 тема сообщения), 1 - RichTextBox (тело письма), и кнопкой, которая имеет следующий код: 

Код
 Dim mail As New MailMessage
        Dim passwd As String
        Dim email As String

        Dim client As New SmtpClient("smtp.mail.ru", 25)
        client.Credentials = New Net.NetworkCredential(email, passwd)
        mail.From = New MailAddress(email)
        mail.To.Add("mymail@mail.ru")
        email = TextBox1.Text
        passwd = TextBox3.Text
        mail.Subject = TextBox2.Text
        mail.Body = RichTextBox1.Text
        Try
            client.Send(mail)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


при отправке ругается на эту строку: mail.From = New MailAddress(email) - обоснование: Значение не может быть неопределенным.
Но как значение может быть неопределенным если подставляется переменая значение которой берется из TextBox1?

При указаном в коде значения:
Код
Dim mail As New MailMessage
        Dim passwd As String
        Dim email As String

        Dim client As New SmtpClient("smtp.mail.ru", 25)
        client.Credentials = New Net.NetworkCredential("mymail@mail.ru", "**********")
        mail.From = New MailAddress("mymail@mail.ru")
        mail.To.Add("mymail@mail.ru")
        mail.Subject = TextBox2.Text
        mail.Body = RichTextBox1.Text
        Try
            client.Send(mail)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

письмо отправляется....

Помогите пжалуста доработать первый кусок кода

Автор: diadiavova 25.3.2011, 11:01
Цитата(vdsteff @  25.3.2011,  08:56 Найти цитируемый пост)
Но как значение может быть неопределенным если подставляется переменая значение которой берется из TextBox1?

Ты присваиваешь переменной значение уже после того, как появляется эта строка. К моменту выполнения этой строки переменная еще не инициирована.  Поставь строку 
Код

 email = TextBox1.Text

перед строкой
Код

 mail.From = New MailAddress(email)


Автор: vdsteff 26.3.2011, 01:23
заработало, спасибо!
А как теперь заставить программу работать также и с @gmail.com и @yandex.ru ? т.к. при попытке отправить с этих емейлов программа ругается на авторизацию на сервере

Автор: diadiavova 26.3.2011, 09:30
Цитата(vdsteff @  26.3.2011,  01:23 Найти цитируемый пост)
А как теперь заставить программу работать также и с @gmail.com и @yandex.ru ?

Да в принципе так же, просто на этих серверах могут понадобиться другие настройки. Например не везде следует указывать именно 25 порт. Или, к примеру, адрес самого смтп-сервера может быть другим. Это на до смотреть в документации к соответствующим почтовым сервисам.

Автор: vdsteff 26.3.2011, 16:52
спасибо за ответы, помогло, как код допишу выложу сюда

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)