In ASP können Sie einfache E-Mails senden, indem Sie die CDONTS-Komponente aufrufen. In ASP.Net ist dies ebenfalls möglich. Der Unterschied besteht darin, dass diese Komponente in .Net Framework in den System.Web.Mail-Namespace gekapselt ist.
Ein typisches E-Mail-Versandprogramm sieht wie folgt aus:
<%@ Import Namespace="System.Web.Mail" %>
<script runat="server">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="eine Test-SMTP-Mail.";
mail.Subject="ru ok?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(mail);
</script>
Normalerweise ruft das System zum Senden von E-Mails den standardmäßigen virtuellen SMTP-Server auf, der mit IIS geliefert wird. Wir erhalten jedoch häufig die folgende Fehlermeldung:
Der Server hat eine oder mehrere Empfängeradressen abgelehnt. Die Serverantwort lautete: 550 5.7.1 Weiterleitung für [email protected] nicht möglich.
Der Grund für diesen Fehler ist nicht nur die Möglichkeit einer falschen Adresse. Es gibt noch einen weiteren wichtigen Grund. Wie oben erwähnt, verfügt IIS nicht über eine echte E-Mail-Funktion, sondern verwendet lediglich einen „virtuellen SMTP-Server“ zur Weiterleitung von E-Mails. In MSDN gibt es folgenden Tipp:
Wenn sich Ihr lokaler SMTP-Server (in Windows 2000 und Windows Server 2003 enthalten) hinter einer Firewall befindet, die jeglichen direkten SMTP-Verkehr (über Port 25) blockiert, müssen Sie herausfinden, ob es intelligente Firewalls gibt Im Netzwerk verfügbare Hosts. Kann zur Weiterleitung von für das Internet bestimmten SMTP-Nachrichten verwendet werden.
Ein Smarthost ist ein SMTP-Server, der ausgehende E-Mails, die von einem internen SMTP-Server direkt an das Internet gesendet werden, weiterleitet. Der Smart Host sollte in der Lage sein, sowohl eine Verbindung zum internen Netzwerk als auch zum Internet herzustellen, um als E-Mail-Gateway zu fungieren.
Öffnen Sie die Standard-SMTP-Einschränkungen für den virtuellen Server-Eigenschaften-Zugriff-Relay. Sie können sehen, dass diese Weiterleitungs- oder Relay-Funktion eingeschränkt ist. Fügen Sie in der Einschränkungsliste die IP-Adresse des Hosts hinzu, der diesen Server verwenden muss, um das oben genannte Problem zu lösen.
Wenn Sie nicht den mit IIS gelieferten virtuellen SMTP-Server verwenden, sondern andere echte Mailserver wie IMail, Exchange usw. verwenden, besteht häufig das Problem, dass der Server eine Absenderauthentifizierung (ESMTP) erfordert. Bei Verwendung eines Servers, der eine Überprüfung der Absenderidentität erfordert, tritt ein Fehler auf:
Der Server hat eine oder mehrere Empfängeradressen abgelehnt. Die Serverantwort lautete: 550 kein lokaler Host ckocoo.com, kein Gateway.
In der Vergangenheit bin ich darauf gestoßen ASP Es gibt keine Möglichkeit, das Problem zu lösen. Wir können nur die CDO-Komponente (die übergeordnete Komponente von CDONTS) direkt verwenden:
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="brookes";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
In .Net Framework 1.1 wurde diese Anforderung offensichtlich zur MailMessage-Komponente hinzugefügt, um die Absenderidentität im ESMTP-Mailserver zu erhöhen. Probleme bei der Verifizierung. Diese Methode gilt jedoch nur für .Net Framework 1.1, nicht für die .Net Framework 1.0-Version. Der Ablauf zum Versenden von E-Mails mit Absenderauthentifizierung ist wie folgt:
<%@ Import Namespace="System.Web.Mail" %>
<script runat="server">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="eine Test-SMTP-Mail.";
mail.Subject="ru ok?";
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1"); //Basisauthentifizierung
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "brookes"); //Legen Sie hier Ihren Benutzernamen fest
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "walkor"); //Legen Sie hier Ihr Passwort fest
SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.Send(mail);
</script>
Mit dieser Methode müssen Sie sich nicht mehr auf Komponenten von Drittanbietern wie Jmail und EasyMail verlassen, sondern verwenden einfach SmtpMai, um den E-Mail-Versand abzuschließen!