[英]ASP.NET Form not sending email
我正在尝试使表单向自己发送电子邮件,但由于某种原因,它无法正常工作,我不知道为什么。
当我提交表单时,它显示以下内容的堆栈跟踪:
在C:\\ Users \\ PC \\ Desktop \\ Projects \\ emailform \\ emailform \\ index.aspx.cs:line中的emailform.index.send_Click(Object sender,EventArgs e)的System.Net.Mail.SmtpClient.Send(MailMessage消息)处28
有人有想法么?
我刚刚开始学习C#和ASP.NET ,所以可能很明显。
这是代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="emailform.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<br /> <br />
<table align="center" width="60%">
<tr>
<td>to:</td>
<td><asp:TextBox ID="to" runat="server" Text="email@gmail.com" width="60%" ></asp:TextBox></td>
</tr>
<tr>
<td>from:</td>
<td><asp:TextBox ID="from" runat="server" Text="myemail@outlook.com" Width="60%"></asp:TextBox></td>
</tr>
<tr>
<td>subject</td>
<td><asp:TextBox ID="subject" runat="server" Text="TEST" Width="60%"></asp:TextBox></td>
</tr>
<tr>
<td>body</td>
<td><asp:TextBox ID="body" runat="server" Text="this is a test message" Height="30%" Width="60%" TextMode="MultiLine"></asp:TextBox></td>
</tr>
<tr>
<td></td>
<td><asp:Button ID="send" onClick="send_Click" runat="server" Text="send" /></td>
</tr>
<tr>
<td></td>
<td><asp:Label ID="status" runat="server"></asp:Label></td>
</tr>
</table>
</form>
</body>
</html>
这是C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
namespace emailform
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void send_Click(object sender, EventArgs e)
{
try
{
MailMessage message = new MailMessage(to.Text, from.Text, subject.Text, body.Text);
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient("smtp.live.com", 25);
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("myemail@outlook.com", "mypassword");
client.Send(message);
status.Text = "Message sent successfully!";
}
catch(Exception ex)
{
status.Text = ex.StackTrace;
}
}
}
}
看来您的SmtpClient
设置有麻烦。
您使用端口25和SSL。
但是默认情况下,端口25不使用SSL加密。 请查看下一个链接以获取详细信息。
尝试像这样更改代码:
client.EnableSsl = false;
我尝试过您的代码,您的代码没有错。
我认为您输入的网络凭据错误。
只是改变这个
MailMessage message = new MailMessage(to.Text, from.Text, subject.Text, body.Text);
对此
MailMessage message = new MailMessage(from.Text, to.Text, subject.Text, body.Text);
它会工作。
图书馆也会检查它是否也是真实的电子邮件,并提交可能的真实电子邮件。
发生问题是因为您使用的端口号错误或凭据设置错误:
SmtpClient client = new SmtpClient("smtp.live.com", 25);
尝试修改SSL / TLS的服务器名称和端口号,使其看起来像这样:
SmtpClient client = new SmtpClient("smtp.live.com", 587);
// alternative
SmtpClient client = new SmtpClient("smtp-mail.outlook.com", 587);
另外,由于您使用的是自定义凭据,因此必须在添加自己的凭据之前关闭默认凭据选项:
client.UseDefaultCredentials = false;
最后,发送电子邮件的完整SmtpClient
代码应类似于以下示例:
SmtpClient client = new SmtpClient("smtp-mail.outlook.com", 587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("myemail@outlook.com", "mypassword");
client.Send(message);
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.