ASP.NET Web 表单可以在本地主机上本地运行,但上传到服务器时无法运行

问题描述 投票:0回答:1

我创建了一个网络表单,旨在在提交时将信息通过电子邮件发送回我的电子邮件地址。当我在本地运行它时,它按预期工作正常,但在将其上传到服务器后却无法正常工作。我使用 prositehosting 来托管我的网站,因此我无法真正配置任何服务器设置。是否是服务器上的设置阻止了电子邮件通过,或者是我的代码中缺少某些内容。这是一些代码:

default.aspx 文件(仅使用一个输入框进行测试)

<div id="contactForm">
    <asp:TextBox ID="senderNameTextBox" placeholder="Name*" runat="server" Style="width: 250px;" ClientIDMode="Static" />
    <asp:Button ID="Button1" type="button" Text="Submit  →" runat="server" OnClick="sendMessage_Click"
        Style="" />
</div>

default.aspx.cs 文件(我什至没有看到服务器控制台中记录的任何异常,但也没有收到任何电子邮件)-出于隐私目的,电子邮件已被删除

protected void sendMessage_Click(object sender, EventArgs e)
{
    try
    {

        MailMessage mail = new MailMessage();
        SmtpClient smtpClient = new SmtpClient();

        mail.From = new MailAddress("[email protected]");
        mail.To.Add("[email protected]");
        mail.CC.Add("[email protected]");
        mail.Subject = "Customer - MedicalAuditsSoftware Website";
        mail.Priority = MailPriority.Normal;

        mail.Body = "<html><body>"
            + "Sender's Name: " + Server.HtmlEncode(senderNameTextBox.Text) +
            "<br><br>";
        mail.IsBodyHtml = true;
        smtpClient.Send(mail);
        Console.WriteLine("Email sent successfully.");

    }
    catch (Exception ex)
    {
        Console.WriteLine("Error sending email: " + ex.Message);
        throw;
    }

}

在联系表上尝试过的测试:

  • 尝试使用端口 465,然后尝试端口 993
  • 在控制台中记录错误
  • 在 web.config 文件上注释掉 smtp 详细信息(本地有效,但上传后无效)
  • 将所有 smtp 详细信息放入 web.config 文件而不是 default.aspx.cs 文件中 - 在本地有效,但在上传时无效

web.config 文件中的身份验证部分:

<smtp from="[email protected]">
          <network host="smtp.email.co.uk"
                   port="587"
                   userName="[email protected]"
                   password="SamplePassword"
                   enableSsl="true"/>
</smtp>
c# asp.net asp.net-core webforms smtp
1个回答
0
投票

问题很可能是您使用的电子邮件不允许从此类网站发送。这种所谓的“中继”通常是不允许的,如果发件人域与 Web 域不匹配,则尤其如此。

这样做是为了防止您的电子邮件帐户被劫持,然后有人使用该网络服务器从该网站发送大量电子邮件 - 然后他们的域被阻止。

这意味着从网站发送的电子邮件必须与网站的域匹配。因此,您可能必须根据该网站的电子邮件系统创建电子邮件。因此,您无法(在大多数情况下)从与该服务器上运行的电子邮件系统不同的电子邮件帐户发送邮件。

不再允许发送发件人电子邮件与该服务器上的域或电子邮件系统不匹配的电子邮件。

一个常见的解决方案是在该网站上创建一封电子邮件,并使用它来发送。

但是,虽然您发送的电子邮件很可能必须与网络服务器上的电子邮件系统相匹配?要解决这个问题,您现在可以使用 .net 中 smtp 电子邮件提供商中的“回复”选项。

因此,人们可以回复此类电子邮件,因此您“回复”的名称与用于发送该电子邮件的电子邮件名称不同。

因此,您必须咨询您的电子邮件提供商,但他们可能不允许这样做(中继),更糟糕的是,网络服务器托管也可能不允许发送与该网站的域不匹配的发件人的电子邮件。

由于发送电子邮件必须与电子邮件系统域匹配,因此您可以自由使用此类电子邮件中的“回复”选项,因此接收此类电子邮件和回复该电子邮件的人不必回复网络您正在使用的网站电子邮件“发件人”。

由于安全问题,如今在大多数情况下发送电子邮件不允许发件人电子邮件与该站点和域上运行的电子邮件系统不同。

© www.soinside.com 2019 - 2024. All rights reserved.