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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 13:46   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос Отправка почты через SMTP с использованием Synapse

Написал программку которая отправляет письма по smtp с использованием библиотек Synapse.

Вот пример кода:
Код:
uses
    mimepart, mimemess, SMTPSend;


   * * * * * * * * * * * * * *


var
    tmpMsg : TMimeMess;
    tmpStringList : TStringList;
    tmpMIMEPart : TMimePart;
begin
    tmpMsg := TMimemess.Create;
    if AsHtml.Checked then
      tmpMsg.AddPartHTML(MsgBox.Lines,nil) //Добавляю текст письма в HTML
    else
      tmpMsg.AddPartText(MsgBox.Lines,nil); //Простой текст письма
    tmpMsg.MessagePart.ForcedHTMLConvert:=True;

    tmpMsg.Header.Priority := MP_high;
    tmpMsg.Header.From := LoginBox.Text; //Логин учетной записи почты
    tmpMsg.Header.ToList.Add(SendToBox.Text); //Email получателя
    tmpMsg.Header.Subject := SubjectBox.Text; //Тема письма
    tmpMsg.Header.Organization := 'Çîëîòûå Öâåòû';
    tmpMsg.EncodeMessage;
    if SendToRaw(tmpMsg.Header.From, SendToBox.Text, SmtpServer.Text, tmpMsg.Lines, LoginBox.Text, PassBox.Text) then begin  // отправка письма
      LogList.Lines.Add('письмо отправлено');
    end else begin
      LogList.Lines.Add('письмо не отправлено');
    end;
    tmpMsg.Free;
end;
Очень часто бывает так, что письма не доставляются адресату. Причина в основном в том, что адрес почты отсутствует или заблокирован. Для отправки писем использую сервер smtp.mail.ru. В такой ситуации в ответ приходит письмо от "Mail Delivery System <Mailer-Daemon@smtp4.mail.ru>" с темой "Mail delivery failed: returning message to sender" - письмо не доставлено.

Вопрос. Можно как-то обрабатывать данные сообщения от сервера почты, чтобы вести статистику доставленных сообщений?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 06.02.2011, 13:55   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

А что этому мешает ?
Адрес отправителя сообщения о недоставке известен, тема тоже ..
mss вне форума Ответить с цитированием
Старый 06.02.2011, 14:27   #3
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Мне кажется что при отправке письма сервер возвращает значение (это какой-то код). Если письмо доставлено - один код. Если произошла ошибка - другой код. Если оно так, то как получить данный ответ и его обработать?
Вот тут есть список этих кодов (http://www.delphimaster.ru/articles/smtp/)

Как их получить в Synapse?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 06.02.2011, 17:43   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Эти коды не имеют отношения к факту доставки или недоставки, если адресат сообщения принадлежит другому домену, НЕподконтрольному тому smtp-серверу, через который ты отправляешь сообщение.
mss вне форума Ответить с цитированием
Старый 06.02.2011, 18:58   #5
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Сообщение на сервер приходит в независимости от того принадлежит ли ему адрес получателя письма. Значит все таки можно как-то узнать: доставлено или нет.
Есть компонент Light SMTP, в нем реализована функция получения ответа от сервера, правда ошибки он не принимает (коды начинающиеся на 5).

А что вы говорили о "Адрес отправителя сообщения о недоставке известен, тема тоже .. " ?

Как такое узнать через SMTP? Считывание данных почтового ящика это уже вроде через POP.
лучший подарок женщине-программисту

Последний раз редактировалось chandrasecar; 06.02.2011 в 19:08.
chandrasecar вне форума Ответить с цитированием
Старый 26.06.2012, 13:04   #6
Mafik2121
 
Регистрация: 01.12.2011
Сообщений: 6
По умолчанию

http://thedelphi.ru/articles/otpravk...herez-smtp.php
http://thedelphi.ru научит вас всему!
Mafik2121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка через smtp.live.com iskurt Помощь студентам 0 07.11.2010 12:59
SMTP idmessage отправка почты в дельфи betirsolt Работа с сетью в Delphi 6 28.08.2009 16:46
Отправка почты по SMTP на C#, FW ver.3.5 musomoh Общие вопросы .NET 6 23.08.2009 12:00
Отправка почты (smtp) через proxy dimonbest Работа с сетью в Delphi 9 20.06.2008 14:07
Отправка через SMTP Hottabych Работа с сетью в Delphi 3 09.02.2008 15:18