1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
1

Error: Message content rejected при отправке сообщения с win 7

07.10.2012, 19:52. Показов 2205. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При отправке сообщения с Windows 7 на @mail выдаёт Message content rejected, при отправке с win XP всё нормально, подсказали что копать надо в области MAPI и MSDN(видимо в win 7 это как-то редактировали).Что это такое узнал, но что делать незнаю.
Собственно код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Clock.idSMTP1.Username:='xxx@mail.ru';
Clock.idSMTP1.Password:='xxx';
Clock.idSMTP1.Host:='smtp.mail.ru';
Clock.IdSMTP1.Port:=25;
msg:=TIdMessage.Create(nil);
msg.Body.Add('');
msg.Subject:='';
msg.From.Address:='xxx@mai.ru';
msg.From.Name:='xxx';
msg.Recipients.EMailAddresses:='yyy@mail.ru';
msg.IsEncoded:=true;
Tidattachmentfile.create(msg.messageparts, u); // прикрепляем к сообщению файл, u- путь файла
repeat
until Clock.TcpClient1.Connect=True; // проверяем соединение
Clock.idSMTP1.Connect;
Clock.idSMTP1.Connected;
Clock.idSMTP1.Send(msg);
Clock.IdSMTP1.Disconnect;
end;
Можно-ли это как-то "адаптировать" под win 7?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2012, 19:52
Ответы с готовыми решениями:

ASP.NET Core Web API - Content negotiation - Error 5000 при отправке XML
Здравствуйте, уважаемые господа! Решил реализовать в своем веб-приложении Content Negotiation. ...

Как при отправке mail в message.Body вставить изображение?
как при отправке mail в message.Body вставить изображение?

An error occurred while executing batch. Error message is: Переполнение при арифметической операции
Может кто-то уже сталкивался с подобной проблемой... select round(0.6, 0) An error occurred...

При отправке заголовка 'Content-Type: text/plain' перестают работать теги HTML
применив header('Content-type: text/plain; charset=utf-8'); перестают работать теги скажем...

14
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.10.2012, 15:10 2
Цитата Сообщение от Zis67 Посмотреть сообщение
подсказали что копать надо в области MAPI
Ерунду полную тебе подсказали.
Индейский smtp-клиент не имеет ни малейшего отношения к MAPI.

Цитата Сообщение от Zis67 Посмотреть сообщение
msg.From.Address:='xxx@mai.ru';
Доменное имя mai.ru не соответствует доменному имени в

Цитата Сообщение от Zis67 Посмотреть сообщение
Clock.idSMTP1.Username:='xxx@mail.ru';
Цитата Сообщение от Zis67 Посмотреть сообщение
repeat until Clock.TcpClient1.Connect=True; // проверяем соединение Clock.idSMTP1.Connect; Clock.idSMTP1.Connected;
А это вообще логически бредовая последовательность операторов.
Так что win7 тут вообще ни причем.
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
08.10.2012, 19:12  [ТС] 3
Цитата Сообщение от mss Посмотреть сообщение
Сообщение от Zis67
repeat until Clock.TcpClient1.Connect=True; // проверяем соединение Clock.idSMTP1.Connect; Clock.idSMTP1.Connected;
А это вообще логически бредовая последовательность операторов.
Так что win7 тут вообще ни причем.
Почему бредовая последовательность? Насколько я понимаю это подключение к интернету перед отправкой соообщения.
А если дело не в win7 то в чём?Ведь с XP отправка осуществляется без проблем а с 7 нехочет.
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.10.2012, 21:24 4
Цитата Сообщение от Zis67 Посмотреть сообщение
Насколько я понимаю это подключение к интернету перед отправкой соообщения
А насколько я понимаю ты вообще нишиша не понимаешь в содранном откуда-то и бездумно впендюренном в свою программу коде.

1. TcpClient1 - он вообще зачем тут нужен, если idSMTP1 есть полноценный наследник того же класса ?

2.
Цитата Сообщение от Zis67 Посмотреть сообщение
TcpClient1.Connect=True
Connect - это не свойство.
В справке черным по белому чказано что Connect - это процедурный метод объекта класса IdTCPClient.
Какой еще такой "true" ты пытаешься присвоить методу, а не свойству ?

3.
Цитата Сообщение от Zis67 Посмотреть сообщение
Clock.idSMTP1.Connected;
В этой строчке ты вообще чего творишь ?
Это функциональный метод, возвращающий признак того что TCP-соединение установлено.
Где ты анализируешь этот признак ? Нигде. Ты попросту плюешь на результат вызова метода, делая этот вызорв абсолютно бестолковым.
Более того, до этой строчки, равно как и до двух последующих, выполнение программы попросту не дойдет, если вызов метода Connect в предыдущей строчке завершится отказом - Инди возбудит исключение.

Короче бред полнейший.
0
Избранный
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
08.10.2012, 22:29 5
Просто пользуйтесь данным кодом отправки письма и проблем не будет
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
idSmtp1.Host:='smtp.mail.ru'; //Хост mail.ru
idSmtp1.Port:=25;
idSmtp1.Username:='login'; //Ваш E-mail
idSmtp1.Password:='pass'; //Пароль
idMessage1.Body.Text:='Текст письма'; //Текст письма
idMessage1.From.Text:='login@domain.ru'; //От кого отправлять данные
idMessage1.Recipients.EMailAddresses:='login2@domain.ru'; //Кому отправлять данные
idMessage1.Subject:='Тема'; //Тема письма
 
idSmtp1.Connect;
if idSmtp1.Connected=true then
idSmtp1.Send(idMessage1);
idSmtp1.Disconnect;
0
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
08.10.2012, 23:07 6
Message content rejected это ответ от smtp сервера, который говорит о том, что в содержании письма есть нечто, что он не хочет пропускать, например спам или вирус в атаче.
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
09.10.2012, 00:15  [ТС] 7
mss, текст я вобщем-то взял с мануала. Зачем connected я собственно непонял, что касается TcpClient1.Connect=True- я не пытаюсь присвоить ему свойство, я проверяю соединение с интернетом.
В программировании начинающий, но если я правильно понимаю то
repeat
until Clock.TcpClient1.Connect=True;
зацикливает попытку соединения с интернетом, и когда происходит соединение программа соединяется с mail-ом и отправляет сообщение(во всяком случае на практике так и получается)).Вобщем- то TcpClient я и добавил для проверки соединения.

Добавлено через 4 минуты
Nutserus ,но почему сервер принимает файл с XP но напрочь отказывается принимать его-же с 7?
Немного разлючаются директории, но это думаю влияет наврядли. А вот может-ли повлять то что на данной XP антивируса нет, а на данной 7 есть... хотя бред по-моему, если только сервер не запрашивает данные о файле у антивируса, что врядли.
0
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
09.10.2012, 01:08 8
Нескромный вопрос, у компа с win 7 имя компьютера из русских букв состоит?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.10.2012, 09:26 9
Цитата Сообщение от Zis67 Посмотреть сообщение
что касается TcpClient1.Connect=True- я не пытаюсь присвоить ему свойство
Насчет присвоения это да, я неправ.
Но тем не менее Connect - это процедурный (!!), а не функциональный метод.
Процедура в отличие от функции не возвращает результат, значение которого можно было бы с чем-то сравнить (в данном случае с true).
Т.е. эта строчка даже скомпилирована быть не может, не говоря уже о ее выполнении.


Цитата Сообщение от Zis67 Посмотреть сообщение
я проверяю соединение с интернетом
Накой для "проверки" понадобился TcpClient, если все тоже самое делает IdSMTP ?


Код
while True do
try
  idSmtp1.Connect;
  try
    idSmtp1.Send(idMessage1);
  finally
    try
      idSmtp1.Disconnect;
    except
    end;
    Break;
  end;
except
end;
Вот и вся премудрость !
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
09.10.2012, 15:58  [ТС] 10
Nutserus, нет. Только английские.

Добавлено через 27 минут
mss,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while True do
try
  idSmtp1.Connect;
  try
    idSmtp1.Send(idMessage1);
  finally
    try
      idSmtp1.Disconnect;
    except
    end;
    Break;
  end;
except
end;
что- то подобное вроде пытался зделать, неполучилось, почему уже не помню) наверно не так встроил.
Что касается
Цитата Сообщение от mss Посмотреть сообщение
эта строчка даже скомпилирована быть не может, не говоря уже о ее выполнении.
то всё прекрасно компилируется и работает ( если вы про repeat until TcpClient1.Connect=True; ), хотя безусловно лишние компоненты на форме ни к чему, но всё, как говорится, приходит с опытом). Мне щас главное чтобы программа с 7-ки смогла отправлять письма (с прикреплёнными файлами), а улучшить какие-либо части программы и рационализировать её работу всегда успеем, просто пока программа толково неработает необходимости в этом думаю нет.
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.10.2012, 17:12 11
Так у тебя TcpClient1 - это не TIdTCPClient что ли ?
Тогда да, метод Connect у него функциональный.


Цитата Сообщение от Zis67 Посмотреть сообщение
лишние компоненты на форме ни к чему
Мало того, цикл с использованием этого твоего "лишнего" TcpClient'а не только бестолковый, но и вредный.


Цитата Сообщение от Zis67 Посмотреть сообщение
until Clock.TcpClient1.Connect=True; // проверяем соединение
// ну проверил ты, ну есть соединение в этот момент
Clock.idSMTP1.Connect; // а в ЭТОТ момент доступа в Интернет может уже и не быть ! И вот тебе грвбли во весь рост.
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
09.10.2012, 19:11  [ТС] 12
mss, нет, TcpClient1 у меня TcpClient )
Вобщем-то этот компонент я разместил как раз для
repeat
until Clock.TcpClient1.Connect=True;
с расчётом на то что если соединения с интернетом нет, то при присоединении к нему сообщение сразу отправлялось, т.к. иначе будет ошибка(про обработку ошибки даже не спрашивай)) ; а насчёт граблей- для отправки сообщения нужно немного времени, тем более учитывая то, сколько сейчас пользователей с высокоскоростным интернетом. В любом случае как уже писалось выше нет смысла этим заниматься пока не налажена основная часть программы, а там уже можно будет и обработку ошибки зделать.
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.10.2012, 20:28 13
Цитата Сообщение от Zis67 Посмотреть сообщение
для отправки сообщения нужно немного времени
По барабану сколько.
Делай как знаешь.
Мое дело предупредить - ждут тебя с этой дилетантской логикой граблищи малыя и большия)
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
09.10.2012, 23:39  [ТС] 14
На каждом пути есть грабли),и думаю самый ценный опыт получаеш не тогда когда слушаеш как больно наступать на них, а когда сам это чувствуеш) а сюда обращаются пожалуй преимущественно те кто уже на них наступил и ищут пути их обхода.
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 10
10.10.2012, 23:50  [ТС] 15
Попробовал на другой семёрке- сообщение нормально отправилось. Но так и не понимаю почему не отправилось с первой.
0
10.10.2012, 23:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2012, 23:50
Помогаю со студенческими работами здесь

Ошибка при отправке сообщения
Доброго времени суток. При отправке сообщения возникает ошибка: Порт 25, сервер smtp.gmail.com....

Исключение при отправке сообщения
При отправке сообщения появляется исключение: Client does not have permissions to send as this...

BSOD при работе в браузере Mozilla Firefox, при переходах или отправке сообщения
Доброго времени) Прошу помощи у специалистов. Блюскрин возникает при работе в браузере Mozilla...

Дропы производительности при отправке сообщения на C#
При отправке сообщения на c# на client.send() фризит на несколько секунд, сообщение отправляется....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru