Это, вероятно, первая ошибка, о которой сообщал заказчик на данный момент для класса System.Net.Mail в .NET 4.0 Framework, или, по крайней мере, первая, над которой я работал.Это было довольно прямолинейное воспроизведение, и мне не пришлось много делать, чтобы воспроизвести проблему локально.
static void Main(string[] args)
{
SmtpClient client = new SmtpClient("contoso_smtp_server");
client.Credentials = new System.Net.NetworkCredential("User1", "Password", "contoso");
MailMessage msg = new MailMessage("user1@contoso.com", "user2@contoso.com", "Large Attachment Mail", "Large Attachment - Test Body");
Attachment attachment = new Attachment(@"d:\3mb.dat");
msg.Attachments.Add(attachment);
client.Send(msg);
}
Это был самый простой код, который вы могли написать для отправки электронной почты с использованием SNM, но проблема в том, что это не удалосьс сообщением «Ошибка при отправке электронной почты».Поэтому я осмотрел происходящее и обнаружил, что проблема связана не с SNM, а с его базовыми классами, а именно с классом Base64Encoding, который использовался как метод кодирования вложений электронной почты при отправке по умолчанию.
Это спасло меня большеустранение неполадок, и я изменил способ кодирования вложений с Base64 на 7Bit, и это работало как чудо.
Так что все, что вам нужно сделать, это добавить любую из следующих строк в ваш код, чтобы заставить его работать.
Любой «один» из этих двух разделов кода будет работать
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.QuotedPrintable;
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
Это решение было найдено в этом сообщении