我的任务是想出一种在.NET服务器上自动发送电子邮件的方法,并获得了一段代码可供使用:
using System;
using System.Net.Mail;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SendMailSample
{
public partial class SendMailSample : System.Web.UI.Page
{
protected void btSendMail_Click(object sender, EventArgs e)
{
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("test@example.com");
mailMsg.From = new MailAddress("no-reply@example.com");
//Set subject and body
mailMsg.Subject = "[Subject]";
mailMsg.Body = "[Body]";
//Set mail server and port
SmtpClient smtpClient = new SmtpClient("localhost", 25);
SmtpClient.Send(mailMsg);
}
}
}
我不知道如何运行它。我安装了IIS 7(在Win7上),具有ASP.NET功能(来自添加/删除程序)。我尝试直接导航到文件(因为我已经习惯了PHP)并且遇到了404错误。我在aspx.cs文件和.config文件中添加了一个空的web.config文件和已编辑的权限以包含IUSR,我仍然收到401未经授权的错误。
运行aspx.cs文件的最快方法是什么?
编辑:只想补充说我无法访问Visual Studio。我想让.NET进程获取文件并运行它,就像PHP一样,因为这是我习惯的。
答案 0 :(得分:2)
您发送的是与ASP.Net网页关联的C#源文件。您将无法直接运行它,就好像它是某种可执行或解释的脚本一样。发送给您的人假定您知道如何使用C#进行编码,并且您将参考此内容以获取有关如何使用SmtpClient类的示例。
===编辑===
由于此特定类包含带有发送邮件按钮的事件处理程序的代码隐藏,因此除了作为示例之外,它对您没有用。但是,如果您想基于此示例创建应用程序,则需要获取C#IDE(Visual Studio,SharpDevelop,Mono等),或者直接从命令行使用C#编译器。
答案 1 :(得分:2)
编辑:只想补充说我无法访问Visual Studio。我想让.NET进程获取文件并运行它,就像PHP一样,因为这就是我习惯的。
这不会发生。你没有使用解释语言。代码需要编译,因为这是一个带有代码的标准Web表单。您需要download the express version of Visual Studio进行Web开发,创建一个新的Web窗体项目,并将此代码移到Default.aspx
。
此时您只需在IDE中点击 F5 即可运行该应用程序。
答案 2 :(得分:2)
您无法运行aspx.cs文件......这是设计使然,因为必须编译扩展名为.cs的文件...
你可以做的是创建一个.aspx文件并将该方法复制到它,这样它就可以运行而不必生成一个dll ......编译仍然会发生,但它以透明的方式发生 - 你不必处理dll ...
类似(以下代码未经过测试):
<!-- directives -->
<% @Page Language="C#" %>
<%@ Import Namespace="System.Net.Mail" %>
<!-- code section -->
<script runat="server">
protected void btSendMail_Click(object sender, EventArgs e)
{
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("test@example.com");
mailMsg.From = new MailAddress("no-reply@example.com");
//Set subject and body
mailMsg.Subject = "[Subject]";
mailMsg.Body = "[Body]";
//Set mail server and port
SmtpClient smtpClient = new SmtpClient("localhost", 25);
SmtpClient.Send(mailMsg);
}
</script>
<!-- Layout -->
<html>
<head> <title> Test </title> </head>
<body>
<h3> Test </h3>
<form runat="server">
<input runat="server" id="button1" type="submit"
value="Enter..." OnServerClick="btSendMail_Click"/>
<hr />
</form>
</body>
</html>
答案 3 :(得分:0)
您获得的代码来自ASPX页面的代码隐藏。更具体地说,它是按下按钮时触发的方法。我会1)在Visual Studio中创建一个新的webform。 2)在该页面上创建一个按钮。 3)双击新按钮进入代码隐藏。 4)将您给出的代码粘贴到新的onclick中,即使是新按钮也是如此。
将此代码粘贴到新的onclick方法中:
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("test@example.com");
mailMsg.From = new MailAddress("no-reply@example.com");
//Set subject and body
mailMsg.Subject = "[Subject]";
mailMsg.Body = "[Body]";
//Set mail server and port
SmtpClient smtpClient = new SmtpClient("localhost", 25);
SmtpClient.Send(mailMsg);
修改强>
你可以使用AJAX,但你仍然需要丢失代码隐藏的前端部分。您可以创建一个html表单页面,并在按钮onclick事件中使用下面的JQuery。就像我说的,一定要构建你的aspx页面的前端并命名它:“YourASPXPage.aspx”
$.ajax({
type: "POST",
url: "YourASPXPage.aspx",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something
}
});