2009-04-20 10 views
1

Я делаю систему бронирования авиабилетов, и я хочу отправить электронное письмо пользователю, который содержит E-Ticket своего путешествия. E-Ticket генерируется динамически с идентификатором бронирования, полученным из базы данных, и другими данными с предыдущих страниц, таких как Имя пассажира и все. Итак, как я могу отправить ему динамически созданный E-Ticket на свой E-Mail ID?ASP.NET- Отправка электронной почты

+0

Как эта проблема может отличаться от отправки строки в формате HTML в виде сообщения электронной почты? – Cerebrus

+0

Я не знаю, как правильно .... – Roshan

ответ

3

ВНИМАНИЕ:. Мой первоначальный ответ на этот вопрос предлагает использовать System.Web.Mail для отправки электронной почты. Однако этот API был заменен на System.Net.Mail обратно в .NET 2.0, а классы System.Web.Mail теперь отмечены устаревшими/устаревшими.


Вы можете использовать класс System.Web.Mail.Mailmessage:

System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage(); 
mailMessage.To = "[email protected]"; 
mailMessage.From = "[email protected]"; 
mailMessage.Subject = "Email subject"; 
mailMessage.BodyFormat = System.Web.Mail.MailFormat.Html; 
mailMessage.Body = "Email body"; 

System.Web.Mail.SmtpMail.SmtpServer = System.Configuration.ConfigurationSettings.AppSettings["mailserver"]; 
System.Web.Mail.SmtpMail.Send(mailMessage); 
+0

Все классы в 'System.Web.Mail' были исключены из .NET 2.0 и устарели от .NET 4.0. См. Ответ Jørn Schou-Rode для получения дополнительной информации. –

3

Письма могут быть отправлены с использованием пространства имен System.Net.Mail. Я хотел бы использовать StringBuilder или String.Format, чтобы поместить детали в тело письма.

+0

tats ok .. Я отправил электронное письмо. Как отправить динамически созданный E-Ticket? – Roshan

+0

Вы динамически создаете свой электронный билет в коде с помощью строковых построек или аналогичных подходов. – schooner

0

Посмотрите на класс MailMessage. Эта страница MSDN содержит полный образец, включающий, как обрабатывать вложения.

Или посмотрите на this short tutorial в блоге Скотта Гутриса - он также объясняет необходимые записи в файле конфигурации (web.config).

0

Очень просто отправить электронное письмо в ASP.NET. Jsut генерирует содержимое сообщения в вашем коде, вытягивая фиксированные и динамические элементы, чтобы создать полную строку для тела, а затем просто отправить его либо в виде обычного текста, либо в формате HTML.

Вот базовая структура для вызова сделать посыла:

Imports System.Net.Mail

 Dim eMessage As New MailMessage(senderAddress, receiverAddress) 

     eMessage.Subject = emailSubject 
     eMessage.Body = emailBody 
     eMessage.IsBodyHtml = emailIsHTML 
     eMessage.Attachments.Add(emailAttachment) 

     ' send email object 
     Dim smtp As New SmtpClient 
     smtp.Send(eMessage) 

Динамическая часть содержания является лишь StringBuilder или аналогичный подход для создания строка из фиксированных и динамических элементов, которые вам нужны, добавление форматирования HTML, если вы хотите использовать HTML-адрес электронной почты и т. д.

1

System.Web.Mail является (по праву) осуждается в asp.net v2.0; вы должны проигнорировать этот ответ и послушать людей, которые указывают вам вместо этого использовать system.net.mail.

5

ВНИМАНИЕ: Принятый ответ на этот вопрос предлагает использовать System.Web.Mail для отправки электронной почты. Однако этот API был заменен на System.Net.Mail еще в .NET 2.0, а классы System.Web.Mail теперь обозначены как устаревшие/устаревшие.


Вот реальный простой пример того, как построить и отправить сообщение электронной почты в .NET:

using (MailMessage message = new MailMessage()) 
{ 
    message.From = new MailAddress("[email protected]"); 
    message.To.Add(new MailAddress("[email protected]")); 
    message.Subject = "Get back to work!"; 
    message.Body = "Stop hanging around SO."; 

    SmtpClient smtp = new SmtpClient(); 
    smtp.Send(message); 
} 

На самом деле, приведенный выше код может быть написан гораздо короче, используя метод SmtpClient.Send():

SmtpClient smtp = new SmtpClient(); 
smtp.Send("[email protected]", "[email protected]", 
      "Get back to work!", "Stop hanging around SO."); 

Однако часто требуется использовать «размашистый» стиль, для того, чтобы иметь возможность установить отображаемые имена на адреса, изменить тип содержимого сообщения или добавление вложений сообщение.

Независимо от того, что вы выберете, вам необходимо настроить приложение в отношении настроек SMTP, сообщив ему, как доставлять электронную почту. В вас конфигурационном файле приложения (который был бы web.config в приложении ASP.NET), вам нужно будет добавить что-то вроде этого:

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
      <network host="smtp.example.com" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

Точные настройки зависит от того, как вы хотите, чтобы ваше приложение для доставки сообщений электронной почты. С приведенной выше конфигурацией выборки сообщения будут передаваться через указанный SMTP-сервер. Другие решения включают, когда приложение записывает сообщения в папку pickup, откуда будет обрабатываться виртуальный почтовый сервер IIS. Подробности см. На странице official documentation.

+1

Кроме того, MailMessage реализует IDisposable, поэтому вы должны либо Dispose() отправить сообщение, либо поместить его в * используемый * блок. – GalacticCowboy

+0

@ Галактика: Вы абсолютно правы, и я обновил свой ответ, чтобы отразить это. –

+1

Все: Обратите внимание: в .NET 4.0 класс 'SmtpClient' также является' IDisposable'! –

Смежные вопросы