Отправка почты стандартными средствами Delphi 7

Как то потребовалось написать программу для наполнение сайта контентом на вордпресе через почту.

В интернете нашел много разных вариантов отправки, но почему то не все работали как нужно, некоторые вообще не работали.

Данный код делает следующее:

Берем некий текст из мемо1 отправляет его на нужный почтовый адрес.

Полностью листинг.

На форму кидаем Button1, Memo1, IdEncoderMIME1, IdMessage1, IdSMTP1. Это стандартные компоненты Delphi 7.

 

unit Unit1;

interface

//в uses добавилось все автоматически, ничего руками не прописывал.

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient,

IdMessageClient, IdSMTP, IdMessage, IdBaseComponent, IdCoder,

IdCoder3to4, IdCoderMIME;

 

type

TForm1 = class (TForm)

Button1: TButton;

Memo1: TMemo;

IdEncoderMIME1: TIdEncoderMIME;

IdMessage1: TIdMessage;

IdSMTP1: TIdSMTP;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

implementation

{$R *.dfm}

 

// функция конвертирование текста, в данном случает темы сообщение.

function ConvertToWIN1251 (instr:string):string;

begin

result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode (instr)+'?=';

end;

// сама кнопка

procedure TForm1.Button1Click (Sender: TObject);

begin

IdSMTP1.Host:='smtp.mail.ru'; // адресс почтового сервера (smtp.qip.ru, smtp.rambler.ru и тд.)

IdSMTP1.Port:=25;    // порт по которому будет осуществляться подключение обычно 25ый

IdSMTP1.Username:='ящик';  // логин пользователя в формате логин@mail.ru

IdSMTP1.Password:='пароль';     // пароль пользователя для авторизации на свой почтовый ящик

IdSMTP1.AuthenticationType:=atLogin;

 

//конектимся к своему почтовому ящику.

IdSMTP1.Connect;

Sleep (2000); // здесь я просто сделал задержку, вроде так лучше.

 

//устанавливаю кодировку письма в  'utf-8'

IdMessage1.CharSet:='utf-8';

 

//указываем что это текстовая информация

IdMessage1.ContentType:='text/plain';

 

//переводим текст письма в формат utf-8 (не обязательно, но меня без этого на почту приходили крякозябры)

IdMessage1.Body.Text:=AnsiToUtf8 (Memo1.Lines.Text);

 

//здесь указываем адрес отправителя сообщения, он должен быть обязательно такой же как и адрес почтового ящика с которого вы отправляете сообщение.

IdMessage1.From.Text := ‘логин@mail.ru’;

 

//адрес почтового ящика на который вам нужно отправить сообщение

IdMessage1.Recipients.EMailAddresses := ‘логин@qip.ru’;

 

//конвертируем тему письма в формат  WIN1251 что бы тоже была читабельной.

IdMessage1.Subject:=ConvertToWIN1251 ('тема письма'); //Тема сообщения

 

//отправляем сообщение

IdSMTP1.Send (IdMessage1);

 

//отключаемся.

IdSMTP1.Disconnect;

end;

end.

Данный код 100% работоспособен!!!!!!

About admin

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

Подтвердите, что Вы не бот — выберите самый большой кружок: