【问题标题】:Contact us form in asp.net c# not working在asp.net c#中联系我们表格不起作用
【发布时间】:2014-03-15 16:43:35
【问题描述】:

我正在尝试使用 gmail 发送一个简单的联系我们表单,但在异常中我不断收到“发送邮件失败”。在过去的两天里,我一直在拔头发,试图解决这个问题,但没有任何结果。这是我的cs代码:

        protected void Button1_Click(object sender, EventArgs e)
{

    try
    {
        requestSend.Visible = false;
        confirmation.Visible = true;
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(YourEmail.Text);
        msg.To.Add("MyGmail@gmail.com");
        msg.Subject = "Contact from: " + " " +YourName.Text;
        msg.Body = "Name: " + YourName.Text + "<br/>Email: " + YourEmail.Text + "<br/>Phone: " + YourPhone.Text + "<br/>Comments: " + Comments.Text;
        msg.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
        smtp.EnableSsl = true;
        smtp.Credentials = new System.Net.NetworkCredential("MyGmail@gmail.com", "MyPassword");
        smtp.Send(msg);
    }
    catch (Exception ex)
    {
        ResultLabel.Text = ex.Message;
    }



}

这是我的 .aspx 代码:

<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
    <h3>To Request Information or get a Free Estimate:</h3>
    <p>
    <b>Fields marked with <span class="red">*</span> are mandatory</b>
    </p>

<p>
    <span class="red">*</span>Your name:
    <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" ErrorMessage="*"
        ControlToValidate="YourName" ValidationGroup="save" /><br />
    <asp:TextBox ID="YourName" runat="server" Width="250px" /><br /><br />
    <span class="red">*</span>Your email address:
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
        ControlToValidate="YourEmail" ValidationGroup="save" /><br />
    <asp:TextBox ID="YourEmail" runat="server" Width="250px" /><br />
    <span class="red"><asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator23" SetFocusOnError="true" Text="Please correct(Example: username@gmail.com)" ControlToValidate="YourEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="Dynamic" ValidationGroup="save" /></span><br />
    <span class="red">*</span>Your Phone:
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"
        ControlToValidate="YourPhone" ValidationGroup="save" /><br />
    <asp:TextBox ID="YourPhone" runat="server" Width="400px" /><br />
    <span class="red"><asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" Display="Dynamic" ErrorMessage="Enter valid Phone number" ControlToValidate="YourPhone" ValidationExpression="^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$" ></asp:RegularExpressionValidator></span><br />
    <span class="red">*</span>Your Question:
    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"
        ControlToValidate="Comments" ValidationGroup="save" /><br />
    <asp:TextBox ID="Comments" runat="server" 
            TextMode="MultiLine" Rows="10" Width="400px" />
</p>
<p>
    <asp:Button ID="btnSubmit" runat="server" Text="Send" OnClick="Button1_Click" ValidationGroup="save" />
</p>
</asp:Panel>
</div>
<div runat="server" id="confirmation" style="margin-left: auto; margin-right: auto; width: 65%;">
<h2>Your information has been sent</h2>
<asp:Label ID="ResultLabel" runat="server"></asp:Label>
</div>

我做错了什么(仅供参考,如果这很重要,我正在使用 ixwebhosting.com 托管,我没有运行自己的服务器)?任何帮助将不胜感激!

【问题讨论】:

  • 查看您的托管服务提供商是否不阻止某些端口/协议。他不应该,但可能。

标签: c# asp.net forms email


【解决方案1】:

这可能是由于使用了错误的端口。 Gmail 使用端口 465 进行 SSL。 尝试更改您的端口:

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);

【讨论】:

  • 不。我将端口更改为 465,但仍然收到“发送邮件失败”。控制面板中是否有我需要做一些允许 smtp 发送的设置?我不这么认为,但我现在不确定。
  • 您是否尝试在 gmail 中启用 POP/IMAP?
  • 刚刚启用了 IMAP 和 POP,我仍然收到“发送邮件失败” 真的不明白...
  • 当我从本地服务器使用端口 587 尝试它时,它工作得很好,但是当我将它上传到 ixwebhosting 时,我仍然收到发送邮件失败的错误。我需要用 ixwebhosting 配置一些东西吗??
  • 这可能是 ixwebhosting 中的防火墙设置
【解决方案2】:

事实证明,宁愿尝试使用 gmail 9,我还是想使用我自己的域电子邮件),我只是使用端口 25 的服务器上的“localhost”,我很高兴!

【讨论】:

    【解决方案3】:

    很多人在使用“联系我们”表单时也会遇到一个非常常见的错误。

     msg.From = new MailAddress(YourEmail.Text);
    

    这会破坏 SPF 并导致 DMARC 失败,如果您使用的邮件服务器启用了 DMARC 而 GMAIL 启用了,您将永远不会收到某些人的邮件。

    由于 DMARC 是较新的协议,许多用于联系我们表单的旧千篇一律代码 - 没有考虑到这一点。

    您可以在此处阅读更多相关信息:"DMARC - Contact Us Form Nightmare"

    建议的解决方法是:

    msg.From = new MailAddress("MyGmail@gmail.com");
    msg.Subject = "Contact from: " + " " +YourName.Text + " "  + YourEmail.Text;
    

    这样 - 您可以避免文章中的问题概述。您将无法快速点击“回复”按钮,但至少您会收到来自启用 DMARC 的客户的电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2021-02-16
      • 2014-03-31
      • 2016-10-28
      相关资源
      最近更新 更多