0

我的任务是想出一种在 .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);
        }
   }
}

而且我不知道如何运行它。我安装了带有 ASP.NET 功能的 IIS 7(在 Win7 上)(来自添加/删除程序)。我尝试直接导航到该文件(因为我习惯了 PHP)并收到 404 错误。我添加了一个空的 web.config 文件并编辑了 aspx.cs 文件和 .config 文件的权限以包含 IUSR,但我仍然收到 401 未经授权的错误。

运行 aspx.cs 文件的最快方法是什么?

编辑:只想补充一点,我无权访问 Visual Studio。我想让 .NET 进程获取文件并运行它,尽可能像 PHP,因为这是我习惯的。

4

4 回答 4

3

您不能运行 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>
于 2013-11-13T16:18:38.287 回答
2

您收到的是与 ASP.Net 网页相关联的 C# 源文件。您将无法直接运行它,就好像它是某种可执行或解释的脚本一样。将它发送给您的人假定您知道如何使用 C# 进行编码,并且您将参考这个作为如何使用 SmtpClient 类的示例。

=== 编辑 ===

由于这个特定的类包含一个带有用于发送邮件按钮的事件处理程序的代码隐藏,因此除了作为示例之外,它对您没有多大用处。但是,如果您想基于此示例创建应用程序,则需要获取 C# IDE(Visual Studio、SharpDevelop、Mono 等),或者您可以直接从命令行使用 C# 编译器。

于 2013-11-13T16:04:14.927 回答
2

编辑:只想补充一点,我无权访问 Visual Studio。我想让 .NET 进程获取文件并运行它,尽可能像 PHP,因为这是我习惯的。

这不会发生。您没有使用解释语言。代码需要编译,因为这是一个标准的 Web 表单,后面有代码。您需要下载用于 Web 开发的快速版本的 Visual Studio,创建一个新的 Web 窗体项目,并将此代码移动到Default.aspx.

此时,您只需F5在 IDE 中点击,应用程序就会运行。

于 2013-11-13T16:04:34.967 回答
0

您获得的代码来自 ASPX 页面的代码隐藏。更具体地说,它是按下按钮时触发的方法。我会 1) 在 Visual Studio 中创建一个新的网络表单。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 
  }
});
于 2013-11-13T16:06:37.010 回答