В ASP вы можете отправлять простые электронные письма, вызывая компонент CDONTS. В ASP.Net это также возможно. Разница в том, что в .Net Framework этот компонент инкапсулирован в пространство имен System.Web.Mail.
Типичная программа отправки электронной почты выглядит следующим образом:
<%@ Import Namespace="System.Web.Mail" %>
<script runat="сервер">
MailMessage mail = новое MailMessage ();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="тестовая smtp-почта.";
mail.Subject="ru ок?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(почта);
</скрипт>
Обычно для отправки электронной почты система вызывает виртуальный SMTP-сервер по умолчанию, который поставляется с IIS. Однако мы часто сталкиваемся с этим сообщением об ошибке:
Сервер отклонил один или несколько адресов получателей. Ответ сервера был: 550 5.7.1 Невозможно выполнить ретрансляцию для [email protected].
Причиной этой ошибки является не только возможность неправильного адреса. Есть еще одна важная причина. Как упоминалось выше, IIS не имеет реальной функции электронной почты, а использует только «виртуальный SMTP-сервер» для пересылки электронной почты. В MSDN есть следующий совет:
Если ваш локальный SMTP-сервер (входящий в состав Windows 2000 и Windows Server 2003) находится за брандмауэром, который блокирует любой прямой SMTP-трафик (через порт 25), вам необходимо выяснить, есть ли какие-либо умные хосты, доступные в сети. Могут использоваться для ретрансляции SMTP-сообщений, предназначенных для Интернета.
Смарт-хост — это SMTP-сервер, который ретранслирует исходящую электронную почту, отправленную непосредственно в Интернет с внутреннего SMTP-сервера. Смарт-хост должен иметь возможность подключаться как к внутренней сети, так и к Интернету, чтобы служить шлюзом электронной почты.
Откройте виртуальный сервер SMTP по умолчанию-Свойства-Доступ-Ретрансляция. Вы можете видеть, что эта функция пересылки или ретрансляции ограничена. В список ограничений добавьте IP-адрес хоста, которому необходимо использовать этот сервер для решения упомянутой выше проблемы.
Если вы не используете виртуальный SMTP-сервер, поставляемый с IIS, а используете другие реальные почтовые серверы, такие как IMail, Exchange и т. д., вы часто сталкиваетесь с проблемой, связанной с тем, что сервер требует аутентификации отправителя (ESMTP). При использовании сервера, требующего проверки личности отправителя, возникнет ошибка:
Сервер отклонил один или несколько адресов получателей. Ответ сервера был: 550 не локальный хост ckocoo.com, не шлюз.
Раньше я сталкивался с этим в. ASP Нет возможности решить проблему. Мы можем использовать только компонент CDO (родительский компонент CDONTS):
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="brookes";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
В .Net Framework 1.1 это требование, очевидно, было учтено в компоненте MailMessage, чтобы упростить идентификацию отправителя на почтовом сервере ESMTP. Проблемы с верификацией. Однако этот метод применим только к версии .Net Framework 1.1, а не к версии .Net Framework 1.0. Процедура отправки электронных писем с аутентификацией отправителя следующая:
<%@ Import Namespace="System.Web.Mail" %>
<script runat="сервер">
MailMessage mail = новое MailMessage ();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="тестовая smtp-почта.";
mail.Subject="ru ок?";
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(почта);
</скрипт>
Благодаря этому методу вам больше не нужно полагаться на сторонние компоненты, такие как Jmail и EasyMail, а просто использовать SmtpMai для отправки электронных писем!