在asp.net c#中的“联系我们”表单不起作用

在asp.net c#中的“联系我们”表单不起作用,c#,asp.net,forms,email,C#,Asp.net,Forms,Email,我正试图使用gmail发送一个简单的联系我们表单,但在例外情况下,我一直收到“发送失败邮件”。在过去的两天里,我一直在努力解决这个问题,但没有结果。这是我的cs代码: protected void Button1_Click(object sender, EventArgs e) { try { requestSend.Visible = false; confirmation.Visible = true; Ma

我正试图使用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;
    }



}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
尝试
{
requestSend.Visible=false;
确认。可见=真实;
MailMessage msg=新的MailMessage();
msg.From=新邮件地址(yourmail.Text);
msg.To.Add(“MyGmail@gmail.com");
msg.Subject=“联系人来自:”+“”+YourName.Text;
msg.Body=“Name:”+YourName.Text+”
电子邮件:“+yourmail.Text+”
电话:“+yourmail.Text+”
评论:“+Comments.Text”; msg.IsBodyHtml=true; SmtpClient smtp=新的SmtpClient(“smtp.gmail.com”,587); smtp.EnableSsl=true; smtp.Credentials=新系统.Net.NetworkCredential(“MyGmail@gmail.com“,“我的密码”); smtp.Send(msg); } 捕获(例外情况除外) { 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托管,如果这很重要,我没有运行自己的服务器)?任何帮助都将不胜感激

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

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

事实证明,与其尝试使用gmail 9I,还不如使用我自己的域电子邮件(无论如何),我只需使用端口为25的服务器的“localhost”,我就可以了

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

如果您使用的邮件服务器启用了DMARC,而GMAIL启用了DMARC,那么这将破坏SPF并导致DMARC失败,您将永远无法从某些人那里收到邮件

由于DMARC是一个较新的协议,许多用于联系我们表单的旧cookie-cuter代码并没有考虑到这一点

您可以在此处阅读更多有关内容:

建议的解决办法是:

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

这样,您就避免了文章中的问题提纲。您不能很快点击“回复”按钮,但至少您会收到那些已启用DMARC的客户的电子邮件。

没有。我把端口改为465,仍然收到“发送邮件失败”的消息。控制面板中是否有允许smtp发送的设置??我不这么认为,但我现在不确定。你试过在gmail中启用POP/IMAP吗?只是启用了IMAP和POP,我仍然收到“发送邮件失败”的消息。我真的不明白……当我使用端口587从本地服务器尝试时,它工作得很好,但当我上传到ixwebhosting时,我仍然收到发送邮件失败的错误。我是否需要配置ixwebhosting?如果您的主机提供商不阻止某些端口/协议,可能需要在ixwebhostingSee中配置防火墙设置。他不应该,但可能。
msg.From = new MailAddress("MyGmail@gmail.com");
msg.Subject = "Contact from: " + " " +YourName.Text + " "  + YourEmail.Text;