none
smtp Запрошенную операцию нельзя выполнить для файла с открытой пользователем сопоставленной секцией RRS feed

  • Вопрос

  • Здравствуйте. Все работало прекрасно пока заказчик не сказал, что у него корпоративная почта на gmail и поэтому выскакивает ошибка: Серверу SMTP требовалось защищенное соединение, или подлинность клиента не была установлена

    Прогуглил, оказалось что нужно добавить ssl соединение. добавил и теперь у меня ошибка через раз выскакивает "Запрошенную операцию нельзя выполнить для файла с открытой пользователем сопоставленной секцией". Читал, что нужно отключать антивирус. отключал, не помогает. Есть идеи, что сделать нужно?

    public static void SendMail(string smtpServer, int port, string from, string password,
            string mailto, string caption, string message, List<string> files = null)
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(from);
                mail.To.Add(new MailAddress(mailto));
                mail.Subject = caption;
                mail.Body = message;
                if (files != null)
                    for (int i = 0; i < files.Count; i++)
                        mail.Attachments.Add(new Attachment(files[i]));
                SmtpClient client = new SmtpClient();
                client.Host = smtpServer;
                client.Port = port;
                client.EnableSsl = true;
                client.Credentials = new System.Net.NetworkCredential(from.Split('@')[0], password);
                client.EnableSsl = true;
                client.Send(mail);
                mail.Dispose();
    }

    28 марта 2014 г. 10:34

Ответы

  • порт нужно для gmail 587 использовать

    public static void SendMail(string smtpServer, int port, string from, string password,
            string mailto, string caption, string message, List<string> files = null)
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(from);
                mail.To.Add(new MailAddress(mailto));
                mail.Subject = caption;
                mail.Body = message;
                if (files != null)
                    for (int i = 0; i < files.Count; i++)
                        mail.Attachments.Add(new Attachment(files[i]));
                SmtpClient client = new SmtpClient();
                client.Host = smtpServer;
                client.Port = port;
                client.EnableSsl = true;
                client.Credentials = new System.Net.NetworkCredential(from, password);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(mail);
                mail.Dispose();
            }

    • Помечено в качестве ответа DenisShvatskiy 1 апреля 2014 г. 10:07
    1 апреля 2014 г. 10:07

Все ответы

  • Возможно кастыльный вариант, но я бы советовал вложение сначала копировать в темп, а у ж потом прикреплять его к письму. Что бы отправка шла тех файлов что в темпе.

    VB.Net - WPF, WinRT, WP

    28 марта 2014 г. 11:18
    Отвечающий
  • Возможно кастыльный вариант, но я бы советовал вложение сначала копировать в темп, а у ж потом прикреплять его к письму. Что бы отправка шла тех файлов что в темпе.

    VB.Net - WPF, WinRT, WP

    А можно поподробней? что значит копировать в temp? а если будет с примером буду очень благодарен:)
    28 марта 2014 г. 13:12
  • порт нужно для gmail 587 использовать

    public static void SendMail(string smtpServer, int port, string from, string password,
            string mailto, string caption, string message, List<string> files = null)
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(from);
                mail.To.Add(new MailAddress(mailto));
                mail.Subject = caption;
                mail.Body = message;
                if (files != null)
                    for (int i = 0; i < files.Count; i++)
                        mail.Attachments.Add(new Attachment(files[i]));
                SmtpClient client = new SmtpClient();
                client.Host = smtpServer;
                client.Port = port;
                client.EnableSsl = true;
                client.Credentials = new System.Net.NetworkCredential(from, password);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.Send(mail);
                mail.Dispose();
            }

    • Помечено в качестве ответа DenisShvatskiy 1 апреля 2014 г. 10:07
    1 апреля 2014 г. 10:07