У меня есть служба WCF, которая отправляет электронную почту на основе ввода пользователя.Мне стало известно, что недавно электронное письмо конкретного пользователя доставлялось без основного текста.Если для .IsBodyHtml установлено значение true, основной текст не передается;но, если для .IsBodyHtml задано значение false, тело имеет соответствующий текст.Тем не менее, он не выглядит непротиворечивым, поскольку это происходит только тогда, когда указанный адрес электронной почты пользователя установлен в качестве адреса «От».Технические детали:У нас есть почтовый сервер MS Exchange.Я сочиняю объект MailMessage, передавая его во встроенный класс SMTP для отправки сообщения.
Код был немного упрощен для краткости / ясности.Тем не менее, оригинальный код довольно стандартный / простой.email
относится к объекту класса LINQ-to-SQL
MailMessage message = new MailMessage();
message.From = new MailAddress(email.fromAddress);
message.To.Add(email.toRecipient);
message.Subject = email.emailSubject;
//set email body
message.IsBodyHtml = true;
message.Body = email.emailBody;
Attachment attachmentFile = null;
if (email.hasAttachment == true)
{
//retrieve attachments for emailID
var attachments = from attach in db.EmailAttachments
where attach.emailID == emailID
select attach;
foreach (var attachment in attachments)
{//attach each attachment
string filePath = Path.Combine(UPLOAD_DIRECTORY, emailID.ToString(), attachment.fileName);
attachmentFile = new Attachment(filePath);
message.Attachments.Add(attachmentFile); //set attachment from input path
}
}
SmtpClient client = new SmtpClient(SMTP_SERVER, SMTP_PORT); //set SMTP server name/URL and port
client.Send(message); //try to send the SMTP email