Система. Сеть. Почта - Пытающийся отправить почту с вложением к Gmail, работает, но на маленькие вложения только

Я использую этот класс, чтобы отправить почтовой канавке учетную запись Gmail:

public class GmailAccount
    {
        public string Username;
        public string Password;
        public string DisplayName;

        public string Address
        {
            get
            {
                return Username + "@gmail.com";
            }
        }

        private SmtpClient client;

        public GmailAccount(string username, string password, string displayName = null)
        {
            Username = username;
            Password = password;
            DisplayName = displayName;

            client = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(Address, password)
            };
        }

        public void SendMessage(string targetAddress, string subject, string body, params string[] files)
        {
            MailMessage message = new MailMessage(new MailAddress(Address, DisplayName), new MailAddress(targetAddress))
            {
                Subject = subject,
                Body = body
            };

            foreach (string file in files)
            {
                Attachment attachment = new Attachment(file);
                message.Attachments.Add(attachment);
            }

            client.Send(message);
        }
    }

Вот пример того, как я использую его:

GmailAccount acc = new GmailAccount("zippoxer", "******", "Moshe");
acc.SendMessage("zippoxer@gmail.com", "Hello Self!", "like in the title...", "C:\\822d14ah857.r");

Последний параметр в методе SendMessage является местоположением вложения, которое я хочу прикрепить.

Я пытался отправить почту с вложением 400 КБ, работавших отлично (даже работы 900 КБ). Но затем я пытался загрузить вложение 4 МБ, не работал. Испытанные 22 МБ-> не работали также.

Должен быть предел 25 МБ за сообщение в Gmail. Предмет и тело моего сообщения почти пусты, так не рассматривайте их как часть размера сообщения. Почему у меня есть тот низкий предел?

6
задан Moshe Revah 15 July 2010 в 00:09
поделиться

4 ответа

Согласно этому сообщению, это ошибка в .Net 4.0. Ограничение, указанное в сообщении, составляет 3,050,417 байт. Вы можете попробовать код обходного пути, включенный в сообщение. Надеюсь, это поможет.

http://connect.microsoft.com/VisualStudio/feedback/details/544562/cannot-send-e-mails-with-large-attachments-system-net-mail-smtpclient-system-net-mail-mailmessage

5
ответ дан 17 December 2019 в 02:21
поделиться

Проверьте и посмотрите, выходит ли объект SmtpClient за пределы области действия или иным образом удаляется, прежде чем отправка будет завершена и отправил QUIT на сервер.

0
ответ дан 17 December 2019 в 02:21
поделиться

Хорошо, это ошибка в .net 4. Microsoft заявляет, что это будет исправлено в следующем пакете обновления.

0
ответ дан 17 December 2019 в 02:21
поделиться

Отправить по-прежнему можно. Просто измените кодировку прикрепленных файлов на другую, кроме Base64. Я попытался проверить это и обнаружил, что в коде кодировки Base64 есть исключение IndexOutOfBoundsException . Мне удалось успешно отправить себе файл размером 11 МБ с помощью TransferEncoding.SevenBit .

1
ответ дан 17 December 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: