ASP では、CDONTS コンポーネントを呼び出すことで簡単な電子メールを送信できます。ASP.Net でも可能です。違いは、.Net Framework では、このコンポーネントが System.Web.Mail 名前空間にカプセル化されていることです。
一般的な電子メール送信プログラムは次のとおりです。
<%@ インポート名前空間="System.Web.Mail" %>
<script runat="サーバー">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="テスト SMTP メール。";
mail.Subject="大丈夫ですか?";
SmtpMail.SmtpServer="ローカルホスト";
SmtpMail.Send(メール);
</script>
通常、システムは IIS に付属するデフォルトの SMTP 仮想サーバーを呼び出して電子メールを送信します。ただし、次のエラー メッセージが頻繁に表示されます:
サーバーは 1 つ以上の受信者アドレスを拒否しました。サーバーの応答は次のとおりです: 550 5.7.1 [email protected]を中継できません。
このエラーの理由は、アドレスが間違っている可能性だけではありません。もう一つ重要な理由があります。前述したように、IIS には実際のメール機能はなく、「SMTP 仮想サーバー」を使用してメールを転送するだけです。 MSDN には、次のヒントがあります。
ローカル SMTP サーバー (Windows 2000 および Windows Server 2003 に含まれる) が、直接 SMTP トラフィック (ポート 25 経由) をブロックするファイアウォールの背後にある場合は、スマートな SMTP トラフィックが存在するかどうかを確認する必要があります。ネットワーク上で利用可能なホスト インターネット宛ての SMTP メッセージを中継するために使用できます。
スマート ホストは、内部 SMTP サーバーからインターネットに直接送信されるアウトバウンド電子メールを中継する SMTP サーバーです。スマート ホストは、内部ネットワークとインターネットの両方に接続して、電子メール ゲートウェイとして機能できる必要があります。
デフォルトの SMTP 仮想サーバーの [プロパティ] - [アクセス] - [リレー制限] を開くと、この転送またはリレー機能が制限されていることがわかります。制限リストに、上記の問題を解決するためにこのサーバーを使用する必要があるホストの IP アドレスを追加します。
IIS に付属の SMTP 仮想サーバーを使用せず、IMail、Exchange などの他の実際のメール サーバーを使用する場合、サーバーで送信者認証 (ESMTP) が必要になるという問題がよく発生します。送信者の ID の検証が必要なサーバーを使用すると、エラーが発生します。
サーバーは 1 つ以上の受信者アドレスを拒否しました。サーバーの応答は次のとおりでした。550 はローカル ホスト ckocoo.com ではありません。ゲートウェイではありません
。以前、次のようなエラーが発生しました。 ASP 問題を解決する可能性はありません。CDO コンポーネント (CDONTS の親コンポーネント) を直接使用することしかできません。
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="ブルックス";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
.Net Framework 1.1 では、ESMTP メール サーバーの送信者 ID を簡単に増やすために、この要件が MailMessage コンポーネントに追加されています。検証の問題。ただし、この方法は .Net Framework 1.1 にのみ適用され、.Net Framework 1.0 バージョンには適用されません。送信者認証を行ってメールを送信する手順は以下のとおりです。
<%@ インポート名前空間="System.Web.Mail" %>
<script runat="サーバー">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="テスト SMTP メール。";
mail.Subject="大丈夫ですか?";
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1");
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "brookes"); // ここにユーザー名を設定します
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "walkor"); // ここにパスワードを設定します
SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.Send(メール);
</script>
この方法を使用すると、Jmail や EasyMail などのサードパーティ コンポーネントに依存する必要がなくなり、SmtpMai を使用するだけでメールの送信が完了します。