在ASP.NET 2.0中发送电子邮件

1 asp.net

我试图实现发送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>
Run Code Online (Sandbox Code Playgroud)

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> 
Run Code Online (Sandbox Code Playgroud)

代码隐藏

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 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.错误是传输无法连接到服务器.

Cra*_*gTP 5

您正在使用代码的这一行中的默认(无参数)构造函数来实例化您的SmtpClient对象:

'(3) Create the SmtpClient object'
Dim smtp As New SmtpClient
Run Code Online (Sandbox Code Playgroud)

由于发送电子邮件要求您有权访问有效的SMTP服务器,因此该构造函数将尝试使用web.config文件中定义的SMTP服务器设置来实例化对象,特别是在System.Net部分中.以下是此示例:

<system.net>
  <mailSettings>
    <smtp>
      <network host="[your smtp server address]" port="[your smtp port - usually 25]"/>
    </smtp>
  </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

如果缺少此项,则您的SmtpClient对象没有要连接的SMTP服务器.这可能会导致您遇到错误消息.

要解决此问题,您可以将此部分添加到web.config文件中,为要连接的SmtpClient对象指定有效的SMTP服务器,也可以在实例化SmtpClient对象时直接省略和硬编码服务器地址.利用其中一个重载的构造函数接受SMTP服务器地址/端口号作为参数.请参阅此处了解构造函数详细信息.

一个例子是:

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

但请注意,尽管您可以在SmtpClient的构造函数中指定SMTP服务器地址/端口,但在web.config文件中配置这些设置并在代码中使用默认(无参数)构造函数通常被认为是更好的做法.使用web.config方法可以更新您使用的SMTP服务器地址/端口,而无需重新编译代码.