Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2013, 16:31   #1
vladyok
 
Регистрация: 16.03.2013
Сообщений: 6
Восклицание Консольное приложение для отправки по smtp

Здравствуйте. Вот написал программу. Необходимо отправлять файл по smtp. Если не подключать вложение то содержание письма отправляется. Подключив вложение не отправляется ни вложение, ни содержание. В чем может быть проблема? Подскажите пожалуйста.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Web;


namespace SendingMail
{
    class Program
    {
        static void Main(string[] args)
        {
            SendMail();
        }

        static void SendMail()
        {
            //smtp сервер
            string smtpHost = "smtp.mail.ru";
            //smtp порт
            int smtpPort = 25;
            //логин
            string login = "............@mail.ru";
            //пароль
            string pass = "************";

            //создаем подключение
            SmtpClient client = new SmtpClient(smtpHost, smtpPort);
            client.Credentials = new NetworkCredential(login, pass);

            //От кого письмо
            string from = "...........@mail.ru";
            //Кому письмо
            string to = "...........@ukr.net";
            //Тема письма
            string subject = "Sharp";
            //Текст письма
            string body = "\n\n\n Hello!";

            //Вложение для письма
            //Если нужно не одно вложение, для каждого создаем отдельный Attachment

            String sFile = "E:/.....";// путь на прикрепляемый файл
           Attachment  Attch = new Attachment(sFile);

            //Создаем сообщение
            MailMessage mess = new MailMessage(from, to, subject, body);
            //прикрепляем вложение 
            mess.Attachments.Add(Attch);
            //прописываем заголовок 
            mess.SubjectEncoding = Encoding.Default;
            mess.BodyEncoding = Encoding.Default;
            mess.Headers["Content-type"] = "text/plain; charset=windows-1251";

            try
            {
                client.Send(mess);
                Console.WriteLine("Message send");
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadKey();
            }
        }
    }
}
vladyok вне форума Ответить с цитированием
Старый 16.03.2013, 21:23   #2
carrotik
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 16
По умолчанию

попробуйте добавить к вложению

Код:
Attachment Attch = new Attachment(sFile, MediaTypeNames.Application.Octet);
и саму эту строку поставить после создания сообщения, т.е.

Код:
MailMessage mess = new MailMessage(from, to, subject, body);
Attachment Attch = new Attachment(sFile, MediaTypeNames.Application.Octet);

а еще перед отправкой добавить
Код:
client.DeliveryMethod = SmtpDeliveryMethod.Network
carrotik вне форума Ответить с цитированием
Старый 16.03.2013, 22:18   #3
vladyok
 
Регистрация: 16.03.2013
Сообщений: 6
По умолчанию

Элемент "MediaTypeNames" не существует в текущем контексте.
Вот такая ошибка...
vladyok вне форума Ответить с цитированием
Старый 16.03.2013, 23:13   #4
carrotik
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 16
По умолчанию

добавьте в объявлениях
Код:
using System.Net.Mime;
carrotik вне форума Ответить с цитированием
Старый 16.03.2013, 23:16   #5
vladyok
 
Регистрация: 16.03.2013
Сообщений: 6
По умолчанию

все равно отправляет пустое письмо. без текста и вложения.
vladyok вне форума Ответить с цитированием
Старый 17.03.2013, 15:47   #6
carrotik
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 16
По умолчанию

... может проблемы именно с этим сервером (т.е. мейл.ру) ... Еще у дотнетового клиента SmtpClient были проблемы с неанглийскими длинными именами файлов во вложении (был патч специальный для фреймворка).. Попробуйте имя файла вложения английскими буквами и короткое ... Ну, и чтобы удостовериться, что клиент нормально формирует письмо перед отправкой, попробуйте вместо
Код:
client.DeliveryMethod = SmtpDeliveryMethod.Network
поставить следующее
Код:
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory
client.PickupDirectoryLocation = "d:\tempmail" // здесь укажите реальную папку
в этом случае письмо на сервер отправляться не будет, а сохранится в указанной папке в виде файла с раширением EML .. Его можно будет посмотреть, как там заголовки и кодировка и т.д. и открыть, например, в Outlook Express .. если сообщение клиентом формируется нормально, тогда надо смотреть, чего там надо серверу ...
carrotik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Консольное приложение для обмена сообщениями через интеренет stdio Общие вопросы C/C++ 20 05.03.2012 02:21
передать в параметре путь для сохранения файл[консольное приложение] Snake22 Visual C++ 1 19.01.2012 20:43
Delphi. Консольное приложение для работы с txt. файлом MexX Помощь студентам 1 13.05.2009 09:37
Как отобразить в ProgressBar процесс отправки писем через SMTP leon2009 Работа с сетью в Delphi 15 20.03.2009 21:26