Отправка электронной почты в ASP.NET 2.0 - PullRequest
1 голос
/ 15 сентября 2009

Я пытаюсь реализовать код отправки mail.i попробовал следующую процедуру.

Конфигурация

<configuration>
  <!-- Add the email settings to the <system.net> element -->
  <system.net>
    <mailSettings>
      <smtp>
        <network 
             host="localhost" 
             port="25"
             userName="?"
             password="?" />
      </smtp>
    </mailSettings>
  </system.net>

HTML

<table border="0">
    <tr>
        <td><b>Your Email:</b></td>
        <td><asp:TextBox runat="server" ID="UsersEmail" Columns="30"></asp:TextBox></td>
    </tr>
    <tr>
        <td><b>Subject:</b></td>
        <td><asp:TextBox runat="server" ID="Subject" Columns="30"></asp:TextBox></td>
    </tr>
    <tr>
        <td colspan="2">
            <b>Body:</b><br />
            <asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <asp:Button runat="server" ID="SendEmail" Text="Send Feedback" />
        </td>
    </tr>
</table> 

Код-за

protected Sub SendEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SendEmail.Click
    '!!! UPDATE THIS VALUE TO YOUR EMAIL ADDRESS'
    Const ToAddress As String = "you@youremail.com"

    '(1) Create the MailMessage instance'
    Dim mm As New MailMessage(UsersEmail.Text, ToAddress)

    '(2) Assign the MailMessage's properties'
    mm.Subject = Subject.Text
    mm.Body = Body.Text
    mm.IsBodyHtml = False

    '(3) Create the SmtpClient object'
    Dim smtp As New SmtpClient

    '(4) Send the MailMessage (will use the Web.config settings)'
    smtp.Send(mm)
End Sub 

но это не работает. ошибка Транспорт не смог подключиться к серверу.

Ответы [ 3 ]

5 голосов
/ 15 сентября 2009

Вы создаете экземпляр своего объекта SmtpClient, используя его конструктор по умолчанию (без параметров) в этой строке вашего кода:

'(3) Create the SmtpClient object'
Dim smtp As New SmtpClient

Поскольку отправка электронного письма требует наличия доступа к действительному SMTP-серверу, этот конструктор попытается создать экземпляр объекта с использованием настроек SMTP-сервера, определенных в файле web.config, в частности в разделе System.Net. Ниже приведен пример этого:

<system.net>
  <mailSettings>
    <smtp>
      <network host="[your smtp server address]" port="[your smtp port - usually 25]"/>
    </smtp>
  </mailSettings>
</system.net>

Если это отсутствует, у вашего объекта SmtpClient нет SMTP-сервера для подключения. Это может привести к появлению сообщения об ошибке.

Чтобы решить эту проблему, вы можете либо добавить этот раздел в файл web.config, указав действительный SMTP-сервер для объекта SmtpClient для подключения, либо вы можете опустить и жестко закодировать адрес сервера непосредственно при создании экземпляра вашего SmtpClient объект, используя один из перегруженных конструкторов, который принимает адрес / номер порта SMTP-сервера в качестве параметров. Смотрите здесь для деталей конструктора.

Примером этого может быть:

'(3) Create the SmtpClient object'
Dim smtp As New SmtpClient("[your SMTP server address]", 25)

Однако имейте в виду, что хотя вы можете указать адрес / порт SMTP-сервера в конструкторе SmtpClient, обычно рекомендуется настроить эти параметры в файле web.config и использовать конструктор по умолчанию (без параметров) в своем коде , Использование метода web.config позволяет обновлять адрес / порт SMTP-сервера, который вы используете, без повторной компиляции кода.

0 голосов
/ 15 сентября 2009

Если вы хотите отправить его, используя учетную запись gMail . Пожалуйста, измените имя пользователя и пароль на свой. ваш web.config должен иметь следующие настройки:

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

Ваша SendMailFunction должна быть такой, как показано ниже:

protected void SendMail(String strFrom, String strSubject, String strTo, String  strBody)
{
    MailMessage mm = new MailMessage();


    mm.From = strFrom;

    mm.Subject = strSubject ;
    mm.To.Add(strTo);

    mm.Body = strBody;
    SmtpClient smtp = new SmtpClient();
    smtp.EnableSsl = true;

    smtp.Send(mm);

} 

Редактировать: Пожалуйста, отметьте this SO Ответьте за информацию о шифровании настроек SMTP в web.config

0 голосов
/ 15 сентября 2009

Каковы ваши MailSettings в web.config? Я бы сказал, что ваша главная проблема, вероятно, в том, что вы указали неверный хост или порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...