Перейти к содержанию
Fire Monkey от А до Я
  • 0

Отправка письма на почту


mrseagull

Вопрос

Рекомендуемые сообщения

  • 0

Работат с почтой в FM ничем не отличается от работы в VCL, компоненты TIdSMTP, TidPOP присутствуют. Можно и через TIdTCPClient сделать вручную. В общем информации по этой теме в инете море...

Ссылка на комментарий
  • 0

Работат с почтой в FM ничем не отличается от работы в VCL, компоненты TIdSMTP, TidPOP присутствуют. Можно и через TIdTCPClient сделать вручную. В общем информации по этой теме в инете море...

Спасибо за наводку. Думал свои особенности есть у платформы в этом плане.

Ссылка на комментарий
  • 0

Надо реализовать функцию отправки сообщений на почту в приложении на android и ios. Рад любой информации по этому вопросу. Спасибо.

Реализовывал через TIdSMTP, как и написал предыдущий оратор. Но встретился с рядом проблем, хочу поделиться с вами частичными решениями. Дело в том, что года 2-3 назад, многие почтовые сервисы перешли на авторизацию через ssl и тд и тп. На это я и напоролся. Решил проблему пока только с почтой яндекса, с маил.ру не решил и бросил. Но все по порядку. Используемые компоненты:

    IdAntiFreeze1: TIdAntiFreeze;    MailMessage: TIdMessage;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    IdServerIOHandlerSSLOpenSSL1: TIdServerIOHandlerSSLOpenSSL;
    SMTP: TIdSMTP;
 
Далее, в вашем обработчике пишите код:
 
SMTP.Host:= 'smtp.yandex.ru' ; // хост
 SMTP.Port:= 465 ; // порт
 Smtp.Username:= ''; //edit3.Text; // почтовый адрес
 Smtp.Password:= '';// edit4.Text; // пароль
Для авторизации, обязательно!
 
 SMTP.UseTLS :=utUseImplicitTLS ; 
   SMTP.Port:= 465 ;
IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IdSSLIOHandlerSocketOpenSSL1.Destination := SMTP.Host+':'+IntToStr(SMTP.Port);
IdSSLIOHandlerSocketOpenSSL1.Host := SMTP.Host;
IdSSLIOHandlerSocketOpenSSL1.Port := SMTP.Port;
IdSSLIOHandlerSocketOpenSSL1.DefaultPort := 0;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
 
SMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
  MailMessage.CharSet := 'KOI8-R';
  MailMessage.From.Name:= ''; // имя
 MailMessage.Subject:= 'Проверка электронного ящика пользователя.' ; // тема
 MailMessage.From.Address:= 'адрес с которого посылаете' ;
 MailMessage.From.Domain:= 'yandex.ru'; // домен
 MailMessage.From.User := 'PharmSuitePro';
MailMessage.From.Name := 'PharmSuitePro';
MailMessage.Recipients.EMailAddresses:= ''; // получатель и копия 
MailMessage.Body.Text: // тело письма
MailMessage.IsEncoded:=true; 
MailMessage.ContentType:='text/plain; charset=KOI8-R';
Коннект и посыл, можно в try
 
   SMTP.Connect;
  SMTP.Send(MailMessage);

Это потом:

SMTP.Disconnect();

Попробовал на компе, все получилось, но когда стал пробовать на реальном сервере, пришла ошибка, пришлось обновлять open SSL, и все заработало!

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...