asp вызывает DLL, написанную на C#, для отправки электронной почты
Автор:Eve Cole
Время обновления:2009-06-23 17:00:02
Я всегда хотел написать серверный компонент, который мог бы отправлять электронную почту с помощью ASP, но использовать VC слишком хлопотно, и мне никогда не удавалось это сделать.
Два дня назад я прочитал статью о том, как ASP может вызывать DLL, написанную на C#. Я попробовал, и я очень доволен. Теперь мне стало проще писать что-то для отправки электронных писем.
Ха-ха, это очень просто. Я не смею держать это в секрете. Давайте сначала посмотрим на код:
- с помощью системы
?
- использование System.Net.Mail;
использование System.Text; пространство именIMELS { общественный класс SendMail { общественный SendMail() { } частный строка _to = строка .Empty; общественный строка Кому { установить {_to = значение}; } частный строка _from = строка .Empty; общественный строка От { установить {_from = значение}; } частный строка _fromName = строка .Empty; общественный строка FromName { установить {_fromName = значение}; } частный строка _cc = строка .Пусто; общественный строка CC { установить {_cc = значение}; } частный строка _bcc = строка .Пусто; общественный строка BCC { установить {_bcc = значение}; } частный строка _charset = "GB2312" ; общественный строка Кодировка { установить { _charset = значение}; } частный строка _contentType = «html» ; общественный строка ContentType { установить {_contentType = значение}; } частный строка _subject = строка .Empty; общественный строка Тема { установить { _subject = значение } } частный строка _body = строка .Empty; общественный stringBody { установить {_body = значение}; } частный строка _смтп; общественный строка SMTP { установить {_smtp = значение}; } частный строка _имя_пользователя; общественный строка Имя пользователя { установить { _username = значение } } частный строка _пароль; общественный строка Пароль { установить {_пароль = значение}; } частный интервал _port = 25; общественный внутренний порт { установить {_port = значение}; } общественный аннулировать Отправить() { MailAddress from = новый MailAddress(_from, _fromName); Сообщение MailMessage = новое MailMessage(); сообщение.От = от; строка [] toadd = _to.Split( ',' ); foreach ( строка _add в toadd) { пытаться { message.To.Add( новый MailAddress(_add)); } поймать (Исключение e) { _error += "Чтобы устранить ошибку: " + e.Message + "(" + _add + ");" ; } } если (_cc != строка .Пусто) { строка [] ccadd = _cc.Split( ',' ); foreach ( строка _add в ccadd) { пытаться { message.CC.Add( новый MailAddress(_add)); } поймать (Исключение e) { _error += "Ошибка адреса CC: " + e.Message + "(" + _add + ");" ; } } } если (_bcc != строка .Пусто) { строка [] bccadd = _bcc.Split( ',' ); foreach ( строка _add в bccadd) { пытаться { message.Bcc.Add( новый MailAddress(_add)); } поймать (Исключение e) { _error += "Ошибка адреса BCC: " + e.Message + "(" + _add + ");" ; } } } сообщение.Отправитель = от; сообщение.Тема = _subject; message.Body = _body; if (_contentType == "html" || _contentType == string.Empty ) { message.IsBodyHtml = правда ; } еще { message.IsBodyHtml = ложь ; } message.BodyEncoding = Encoding.GetEncoding(_charset); message.DeliveryNotificationOptions = DeliveryNotificationOptions.None; SmtpClient __smtp = новый SmtpClient(); __smtp.Host = _smtp; __smtp.Порт = _порт; __smtp.UseDefaultCredentials = ложь ; __smtp.Credentials = новый System.Net.NetworkCredential(_username, _password); __smtp.DeliveryMethod = SmtpDeliveryMethod.Network; пытаться { __smtp.Send(сообщение); } поймать (SmtpException е) { _error += "Ошибка SMTP:" + e.Message + ";" ; } } частный строка _error = строка .Empty; общественный строковая ошибка { получить { вернуть _ошибку}; } общественный недействительный ClearErr() { _error = строка .Пусто; } } } Давайте поговорим о конкретном процессе реализации:
1. Сначала создайте новый проект библиотеки классов; откройте страницу свойств проекта, установите имя сборки «IMELS» на вкладке «Приложение» (конечно, вы можете установить для него любое имя), а тип вывода — библиотека классов, как показано на рисунке:

Нажмите «Информация о сборке» и установите флажок «Сделать сборку COM видимой», как показано на рисунке:

2. На вкладке «Подпись» отметьте «Подписать программу», как показано на рисунке:

Затем выберите файл ключа в раскрывающемся списке «Выбрать файл ключа строгого имени». Если файла ключа нет, выберите «Новый». Здесь я выбираю «Новый», как показано на рисунке:

Введите имя ключа в поле «Имя файла ключа». Вы можете добавить пароль к ключу, чтобы защитить его. Здесь я не использовал пароль.
Затем добавьте в проект класс «SendMail» и код такой же, как указано выше.
3. После завершения кода сгенерируйте файл DLL и поместите DLL на диск D: или другой диск, но лучше не помещать его на системный диск, а затем зарегистрировать. Вы не можете использовать regsvr32 для регистрации. DLL, написанная на C#. Необходимо использовать regasm, формат: regasm/codebase d:DLLIMELS.dll.
На этом написание и регистрация DLL завершена. Ниже представлен метод вызова в asp:
- <%
- тусклый отправить
- set send = Server.CreateObject( "IMELS.SendMail" )
-
- send.From = "[email protected]"
- send.FromName = "Вопрос"
- send.Smtp = "smtp.163.com"
- send.Username = "Имя пользователя"
- send.Password = "Пароль"
- send.Subject = "asp вызывает DLL, написанную на C#, для отправки заголовка теста по электронной почте"
- send.ContentType = "html"
- send.Charset = "gb2312"
- send.Body = "asp вызывает DLL, написанную на C#, для отправки тела теста электронной почты"
- отправить Кому = "[email protected]"
- send.CC = "Адрес CC"
- send.BCC = "Адрес скрытой копии"
- отправить.Отправить()
- Ответ.Запись( отправка.Ошибка )
- %>
Хорошо, все готово! !