Для отправки электронной почты в .NET используйте SmtpClient и MailMessage и Вложение классы.
Класс MailMessage представляет содержимое почтового сообщения. Класс SmtpClient передает электронную почту на хост SMTP, который вы назначаете для доставки почты. Вы можете создавать почтовые вложения, используя класс Attachment.
Предполагая, что у вас есть новостная рассылка HTML с отдельной таблицей стилей и изображениями, вам необходимо создать MailMessage с содержимым тела HTML и добавить внешние файлы в виде вложений. Вам нужно будет установить свойство ContentId
каждого вложения и обновить ссылки в HTML, чтобы использовать это.
Для ссылки в теле HTML на вложение используется схема cid: . Для вложения с идентификатором "xyzzy", href - "cid: xyzzy".
Чтобы создать MailMessage с телом HTML:
string content; // this should contain HTML
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
"from@example.com",
"to@example.com");
message.Subject = "The subject.";
message.Body = content;
message.IsBodyHtml = true;
Чтобы создать MailMessage с вложением:
string file = "data.xls";
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
"from@example.com",
"to@example.com");
message.Subject = "The subject.";
message.Body = "See the attached file";
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
data.ContentId = Guid.NewGuid().ToString();
// Add time stamp iformation for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
Чтобы отправить MailMessage с SmtpClient:
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);