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);
        }
   }
}

そして、私はそれを実行する方法がわかりません。IIS 7 を (Win7 上に) ASP.NET 機能と共に ([プログラムの追加と削除] から) インストールしました。ファイルに直接移動しようとしましたが (PHP に慣れているため)、404 エラーが発生しました。空の web.config ファイルを追加し、aspx.cs ファイルと .config ファイルのアクセス許可を編集して IUSR を含めましたが、まだ 401 無許可エラーが発生しています。

aspx.cs ファイルを実行する最速の方法は何ですか?

編集: Visual Studio にアクセスできないことを追加したいと思います。私は .NET プロセスがファイルを取得して実行できるようにしたいと考えています。

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

編集: Visual Studio にアクセスできないことを追加したいと思います。私は .NET プロセスがファイルを取得して実行できるようにしたいと考えています。

そんなことはありません。インタープリター言語を使用していません。これはコード ビハインドを含む標準の Web フォームであるため、コードをコンパイルする必要があります。Web 開発用の Visual Studio の高速バージョンをダウンロードし、新しい Web フォーム プロジェクトを作成して、このコードをDefault.aspx.

F5その時点で、IDE にヒットするだけで、アプリケーションが実行されます。

于 2013-11-13T16:04:34.967 に答える
0

提供されたコードは、ASPX ページの分離コードからのものです。より具体的には、ボタンが押されたときにトリガーされるメソッドです。1) Visual Studio で新しい Web フォームを作成します。2) そのページにボタンを作成します。3) 新しいボタンをダブルクリックして、codebhind に移動します。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 に答える