asp ruft eine in C# geschriebene DLL auf, um E-Mails zu senden
Autor:Eve Cole
Aktualisierungszeit:2009-06-23 17:00:02
Ich wollte schon immer eine Serverkomponente schreiben, die E-Mails über ASP senden kann, aber die Verwendung von VC ist zu mühsam und ich habe es nie geschafft.
Ich habe vor zwei Tagen einen Artikel darüber gelesen, wie ASP eine in C# geschriebene DLL aufrufen kann, und es hat funktioniert. Jetzt ist es einfacher, etwas zu schreiben, um E-Mails zu versenden.
Haha, es ist ganz einfach. Ich traue mich nicht, es für mich zu behalten. Schauen wir uns zuerst den Code an:
- mit System;
- mit System.Net.Mail;
Verwenden von System.Text; NamespaceIMELS { öffentlich Klasse SendMail { public SendMail() { } Privat string _to = string .Empty; öffentlich Zeichenfolge Zu { set { _to = value } } Privat string _from = string .Empty; öffentlich Zeichenfolge Von { set { _from = value } } Privat string _fromName = string .Empty; öffentlich Zeichenfolge FromName { set { _fromName = value } } Privat string _cc = string .Empty; öffentlich Zeichenfolge CC { set { _cc = value } } Privat string _bcc = string .Empty; öffentlich Zeichenfolge BCC { set { _bcc = value } } Privat string _charset = "GB2312" ; öffentlich String- Zeichensatz { set { _charset = value } } Privat string _contentType = "html" ; öffentlich string ContentType { set { _contentType = value } } Privat string _subject = string .Empty; öffentlich Zeichenfolge Betreff { set { _subject = value } } Privat string _body = string .Empty; öffentlich stringBody { set { _body = value } } Privat string _smtp; öffentlich Zeichenfolge Smtp { set { _smtp = value; } Privat string _username; öffentlich string Benutzername { set { _username = value } } Privat string _password; öffentlich string Passwort { set { _password = value } } Privat int _port = 25; öffentlich int Port { set { _port = value } } öffentlich void Send() { MailAddress from = new MailAddress(_from, _fromName); MailMessage message = new MailMessage(); message.From = from; string [] toadd = _to.Split( ',' ); foreach ( string _add in toadd) { versuchen { message.To.Add( new MailAddress(_add)); } Catch (Ausnahme e) { _error += „An Adressfehler:“ + e.Message + „(“ + _add + „); “ } } if (_cc != string .Empty) { string [] ccadd = _cc.Split( ',' ); foreach ( string _add in ccadd) { versuchen { message.CC.Add( new MailAddress(_add)); } Catch (Ausnahme e) { _error += „CC-Adressfehler:“ + e.Message + „(“ + _add + „); “ } } } if (_bcc != string .Empty) { string [] bccadd = _bcc.Split( ',' ); foreach ( string _add in bccadd) { versuchen { message.Bcc.Add( new MailAddress(_add)); } Catch (Ausnahme e) { _error += „BCC-Adressfehler:“ + e.Message + „(“ + _add + „); “ } } } message.Sender = from; message.Subject = _subject; message.Body = _body; if (_contentType == "html" || _contentType == string .Empty) { message.IsBodyHtml = true ; } anders { message.IsBodyHtml = false ; } message.BodyEncoding = Encoding.GetEncoding(_charset); message.DeliveryNotificationOptions = DeliveryNotificationOptions.None; SmtpClient __smtp = new SmtpClient(); __smtp.Host = _smtp; __smtp.Port = _port; __smtp.UseDefaultCredentials = false ; __smtp.Credentials = new System.Net.NetworkCredential(_username, _password); __smtp.DeliveryMethod = SmtpDeliveryMethod.Network; versuchen { __smtp.Send(message); } Catch (SmtpException e) { _error += „SMTP-Fehler:“ + e.Message + „; “ } } Privat string _error = string .Empty; öffentlich String- Fehler { get { return _error } } öffentlich void ClearErr() { _error = string .Empty; } } } Lassen Sie uns über den konkreten Implementierungsprozess sprechen:
1. Erstellen Sie zunächst ein neues Klassenbibliotheksprojekt. Öffnen Sie die Projekteigenschaftenseite, setzen Sie den Assemblynamen auf der Registerkarte „Anwendung“ auf „IMELS“ (Sie können diesen natürlich auch auf einen beliebigen Namen festlegen) und der Ausgabetyp lautet Klassenbibliothek, wie in der Abbildung gezeigt:
Klicken Sie auf „Assembly-Informationen“ und aktivieren Sie „Assembly-COM sichtbar machen“, wie in der Abbildung gezeigt:
2. Aktivieren Sie auf der Registerkarte „Signatur“ die Option „Programm signieren“, wie in der Abbildung gezeigt:
Wählen Sie dann die Schlüsseldatei in der Dropdown-Liste „Schlüsseldatei mit starkem Namen auswählen“ aus. Wenn keine Schlüsseldatei vorhanden ist, wählen Sie „Neu“ aus, wie in der Abbildung gezeigt:
Geben Sie den Namen des Schlüssels in das Feld „Schlüsseldateiname“ ein. Sie können dem Schlüssel ein Passwort hinzufügen, um ihn zu schützen.
Fügen Sie dann dem Projekt eine Klasse „SendMail“ hinzu, und der Code ist wie oben.
3. Generieren Sie nach Abschluss des Codes die DLL-Datei und legen Sie die DLL auf der Festplatte D: oder einer anderen Festplatte ab. Es ist jedoch am besten, sie nicht auf der Systemfestplatte abzulegen und sie dann zu registrieren. Sie können regsvr32 nicht zum Registrieren verwenden In C# geschriebene DLL. Sie müssen regsvr32 verwenden. Das Format lautet: regasm /codebase d:DLLIMELS.dll.
Auf diese Weise wurden das Schreiben und die Registrierung der DLL abgeschlossen. Die aufrufende Methode in asp ist wie folgt.
- <%
- dimmen senden
- set send = Server.CreateObject( "IMELS.SendMail" )
-
- send.From = "[email protected]"
- send.FromName = „Frage“
- send.Smtp = "smtp.163.com"
- send.Username = "Benutzername"
- send.Password = "Passwort"
- send.Subject = „asp ruft die in C# geschriebene DLL auf, um den E-Mail-Testtitel zu senden“
- send.ContentType = "html"
- send.Charset = "gb2312"
- send.Body = „asp ruft die in C# geschriebene DLL auf, um den E-Mail-Testtext zu senden“
- senden. An = „[email protected]“
- send.CC = „CC-Adresse“
- send.BCC = „Bcc-Adresse“
- send.Send()
- Response.Write( send.Error )
- %>
Okay, du bist fertig! !