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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2015, 14:29   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Программа для отправки писем клиентам

Добрый день, нужно написать простенькую программу для рассылки писем клиентам. Если детальнее, есть программа, в которую нужно добавить возможность ежемесячной рассылки новостей клиентам. Есть список email адресов в txt-файле. Подскажите какими компонентами нужно воспользоваться? Буду очень признателен за примерчик.
Dux вне форума Ответить с цитированием
Старый 18.08.2015, 15:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А Ватника написать не хочешь? Вроде в винде есть свой клиент mailto кажись называется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2015, 15:07   #3
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

Бан в гугле что ли словил?
http://bit.ly/1JeUHEx

Пробуй TIdSMTP
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 18.08.2015, 15:10   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А Ватника написать не хочешь?
В смысле?

Мне нужно встроить функцию в программу, а не пользоваться каким-либо почтовым клиентом.
Dux вне форума Ответить с цитированием
Старый 18.08.2015, 17:02   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне нужно встроить функцию в программу, а не пользоваться каким-либо почтовым клиентом.
Ну тогда используй как выше сказали IdSMPT из пакета INDY.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2015, 17:39   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я в своё время через библиотечку SYNAPSE отправлял.
всё было просто и быстро.
Не знаю, как она себя будет вести с SSL (который сейчас все почтовые сервисы в обязательном порядке требуют). Если у Вас почтовый сервер не требует SSL, то рекомендую попробовать synapse
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.08.2015, 20:12   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Компоненты: IdSMTP, IdMessage. Юзаем!
Host и Port, для каждого онлайн почтового сервиса, надеюсь, сможете найти.
По сути можно это сделать в несколько потоков(скажем по потоку на каждый онлайн сервис), но тогда придется иметь для каждого онлайн сервиса свои экземпляры компонентов, а так же придется поделить список адрессов для рассылки.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 27.08.2015, 16:15   #8
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Я использую компоненты Indy: IdSMTP, IdMessage, IdEncoderMIME.
Код нашел в интернете.
Код:
//Функция конвертирования в кодировку windows-1251
	function ConvertToWIN1251(instr:string):string;
	begin
	  result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?=';
end;


procedure TForm1.Button1Click(Sender: TObject);
var
	attach: TidAttachment;
	begin

	  IdSMTP1.AuthenticationType:= atLogin;
  IdSMTP1.Username:='Логин'; //Логин
	  IdSMTP1.Password:='Пароль'; //Пароль
	  IdSMTP1.Host:='Хост'; //Хост
	  //Хосты: smtp.inbox.ru; smtp.list.ru; smtp.bk.ru; smtp.yandex.ru и т.д.
	  IdSMTP1.Port:=25; //Порт (25 - по умолчанию)
	  //Порты mail.ru: 587 и 2525 (без шифрования) или 465 (с шифрованием)

	  IdMessage1.CharSet:='windows-1251'; //Кодировка в теле сообщения
	  IdMessage1.ContentType:='text/plain';
	  // или
	  //IdMessage1.ContentType:='text/html';
	  //если в теле сообщения будет присутствовать HTML код
	  IdMessage1.Body.text:='Текст'; //Текст сообщения
	  IdMessage1.Subject:=ConvertToWIN1251('Тема'); //Тема сообщения
	  IdMessage1.From.Address:='Адрес отправителя'; //Адрес отправителя
	  //IdMessage1.From.Name:=ConvertToWIN1251('User'); //Имя отправителя
	  IdMessage1.Recipients.EMailAddresses:='Кому'; //Кому отправить письмо (можно через запятую если несколько e-mail'ов)
	  IdMessage1.IsEncoded:=true;
	  //attach:=TIdAttachment.Create(IdMessage1.MessageParts,'Путь до файла'); //Вложение

	  try
	    //Соединение с почтовым сервером
	    IdSMTP1.Connect();
	    IdSMTP1.Send(IdMessage1);
	    showmessage('Сообщение отправлено');
	  except
	    showmessage('Ошибка при отправке сообщения');
	  end;
	//Отсоединяемся от почтового сервера
	IdSMTP1.Disconnect;
end;
Aleksandr вне форума Ответить с цитированием
Старый 27.08.2015, 16:57   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Aleksandr Ваши код без SSL он не будет отправить из mail.ru может будет работать только из yandex.ru и то может не будет ...

Это пример проверен на Delphi XE3 на своево INDY10
Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; // Компонент из Indy  SSL
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    btn1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
     
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  SMTP    : TIdSMTP;
  msg     : TIdMessage;
  SSLOpen : TIdSSLIOHandlerSocketOpenSSL;
  Attach : TIdattachmentFile;
begin
  SMTP := TIdSMTP.Create(Application);
  SMTP.Host := 'smtp.mail.ru';
  SMTP.Port := 465; // порт
  SMTP.AuthType := satDefault;
  SMTP.Username := 'xxxxxxx@mail.ru'; // ваши маил из который вы отправляйте 
  SMTP.Password := '******'; // ваши пароль 

  // для SSL
  SSLOpen := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSLOpen.Destination := SMTP.Host+':'+IntToStr(SMTP.Port);
  SSLOpen.Host := SMTP.Host;
  SSLOpen.Port := SMTP.Port;
  SSLOpen.DefaultPort := 0;
  SSLOpen.SSLOptions.Method := sslvSSLv23;
  SSLOpen.SSLOptions.Mode := sslmUnassigned;

  SMTP.IOHandler := SSLOpen;
  SMTP.UseTLS := utUseImplicitTLS;

  msg := TIdMessage.Create(Application);

  msg.Subject := 'Тема по программирование xxbesoxx '; // Название темы
  msg.From.Address := 'xxxxxx@mail.ru'; //  ваши  майл
  msg.From.Name := 'Бесо баратели ';  // Фио 
  msg.Recipients.EMailAddresses := 'xxxxx@gmail.com';    // Кому   мы отправляем ! Получатель

  msg.ContentType := 'text/plain; CharSet = UTF-8'; // Кодировка
  msg.Body.Text := AnsiToUtf8( 'Привет  как дела ? Все нормально у тебя ?'); // тела письмо можно из Memo1.Lines.Text
  SMTP.Connect;
  if SMTP.Connected then
    begin
      SMTP.Send(msg);
      ShowMessage ('Сообщение отправлено');
    end else
      ShowMessage ('Не удалось отправить сообщение');
  SMTP.Disconnect();
  SMTP.Free;
  msg.Free;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
// Кодировка
with IdMessage1 do
  begin
    ContentType := 'multipart/mixed';
    CharSet := 'UTF-8';
 end;
end;

end.
Цитата:
Сообщение от TaLadno Посмотреть сообщение
Бан в гугле что ли словил?
Пробуй TIdSMTP
через SSL или через Synapse как уже сказано выше

Последний раз редактировалось Stilet; 27.08.2015 в 18:25.
xxbesoxx вне форума Ответить с цитированием
Старый 03.09.2015, 15:34   #10
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Пример выше работает отлично!
Dux вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для отправки писем (ошибка компиляции) Ёжик в тумане Работа с сетью в Delphi 2 22.10.2011 12:58
Программа для отправки.... designer999 Фриланс 2 04.03.2010 00:23
Скрипт для отправки писем Droid JavaScript, Ajax 3 16.07.2009 08:20
mailto для отправки писем PHP vs HTML delphin100 HTML и CSS 4 10.09.2008 06:27