Электронная почта

О чем мы еще не поболтали? Об email. В реализации Delphi 5 для обращения к почтовому серверу под протоколом РОРЗ (Post Office Protocol, протокол обработки почты) имеется два компонента: NMPOP3 для приема почты и NMSMTP для отправки. Сперва разберемся с приемом почты. Как в большинстве случаев, сперва нужно установить сообщение с удаленным сервером. Для этого у нас имеется уже привычные особенности Host, port (по умолчанию 110), UserId и Password. Для установки связи используем способ Connect. По окончании того как сообщение установлена, нужно взять перечень писем. Приводим к методу List, что формирует перечень из размера и номеров сообщений каждого из них. Для получения выбранного сообщения используем способ GetMailMessage, а в качестве параметра передаем ему номер того письма, которое желаем взять. Затем в свойство MailMessage будет передано само письмо. Нужно учесть, что в этом свойстве хранится не только тело письма, но и все, что в нем было: заголовок, присоединяемые файлы и т.д. Свойство MailMessage не строкового типа. Для него заведен специальный тип TMailMessage co особенностями Attachments (тип TStringList, т.е. комплект строчков), выдающим перечень присоединенных файлов, Body и Head (тот же тип), воображающими собой заголовок и тело письма, и From, Messageid и Subject (тип string), в которых записываются отправитель, тема письма и идентификатор сообщения, соответственно.

Для штатного окончания сеанса связи употребляется способ Disconnect (без параметров), а для вынужденного разрыва связи — Abort.

Для отправки почты существует компонент NMSMTP (Simple Mail Transfer Protocol, несложный протокол отсылки почты).

Для него, как и для всех прошлых протоколов, заполняются свойства Host, port (по умолчанию 25) и UserId. Затем в составное свойство PostMessage записывается сообщение. У этого свойства имеется множество полей, но необходимыми являются лишь два: FromAddress строкового типа, в котором записывается адрес отправителя, и ToAddress типа TStringList со перечнем адресов, по которым нужно послать письмо. Как видите, не обязательно кроме того показывать фактически содержимое письма. Но в большинстве случаев пользователи предпочитают отправлять какие-либо значащие сообщения, а не безлюдные письма. Для этого в особенности postMessage существует поле Body типа TStringList, в который мы и помещаем собственный письмо. Для указания темы письма, наименования организации и имени отправителя отправителя существуют строковые поля Subject, Fromname и Organization, соответственно. Для указания перечня присоединяемых файлов предназначается поле Attachments типа TStringList. Фактически для отсылки письма используется способ SendMail. Конечно, перед этим нужно удачно выполнить способ Connect. Для штатного и нештатного разрыва связи используются способы Disconnect и Abort.

А сейчас по традиции детальный разбор каждого из компонентов. Начинаем с NMPOP3. Разглядываем свойства.

AttachFilePath. Тип String. Показывает каталог, в котором будут сберигаться присоединенные к письму файлы. В случае если это свойство не объявлено, файлы будут сберигаться в текущем каталоге приложения.

BytesRecvd. Тип Longint, Read only. Показывает количество принятых байтов за время текущего обмена информацией.

BytesTotal. Тип Longint, Read only. Показывает общее число байтов, предназначенных для получения на протяжении текущего обмена.

Connected. Тип Boolean, Read only. Выставлено в True, в случае если было произведено и поддерживается успешное соединение с почтовым сервером, в другом случае, конечно, выставлено в False.

DeleteOnRead. Тип Boolean. В случае если выставляется True, то по окончании прочтения писем они удаляются с сервера. По умолчанию установлено в False.

Host. Тип String. Содержит имя либо IP-адрес почтового сервера, с которым мы планируем связываться.

LocalIp. Тип String. Содержит IP-адрес совокупности пользователя.

Mailcount. Тип Integer. В этом свойстве указывается количество писем в почтовом коробке пользователя на сервере. Ясно, что это значение свойство приобретает лишь по окончании успешного соединения с сервером.

MailMessage. Тип TMailMessage, Read only. Составное свойство, приобретает собственные значения лишь по окончании успешного исполнения способа GetMailMessage.В состав входят поля Attachments, Body и Head типа TStringList, и From, Messageld и Subject типа String. Содержат имена присоединенных к письму файлов, заголовок и тело письма, e-mail-адрес отправителя, идентификатор данного письма на сервере и тему письма, соответственно.

Password. Тип String. Содержит пароль для процедуры аутентификации польз-ля на сервере.

Port. Тип Integer. Содержит номер порта, на котором функционирует почтовый сервер. Значение по умолчанию — 110.

RemoteIp. Тип String. Содержит IP-адрес почтового сервера.

ReportLevel. Тип Integer. Показывает степень детализации сообщений о статусе, каковые будут помещены в свойство Status.

Status. Тип String, Read only. В него помещается последнее сообщение о статусе, полученное с удаленного сервера.

Summary. Тип TSummary, Read only. Составное свойство, в которое входит информация о последнем удачно взятом сообщении. Свойство обретает собственные значения по окончании успешного исполнения способа Get summary. Включает в себя подсвойства From, Messageid, Subject типа string, Bytes типа integer. Header типа TStringList, каковые содержат адрес е-mail отправителя, идентификатор сообщения на сервере, тему письма, количество байтов в сообщении, т.е. его размер, и заголовок письма со служебной информацией.

Timeout. Тип Integer. Указывается время в миллисекундах, за который приложение будет ожидать отклика от сервера при попытке соединения. В случае если сервер за отпущенное ему время не выдаст отклика, возбуждается исключение. При применении значения по умолчанию — 0 миллисекунд — исключение по большому счету не будет возбуждаться.

TransactionReply. Тип String, Read only. В этом свойстве хранится результат исполнения последней команды, отправленной на сервер.

UserID. Тип String. Содержит идентификатор пользователя, необходимый для процедуры подключения (login) к серверу.

WSAInfo. Тип TStringList, Read only. Содержит перечень строчков с информацией о текущей версии Winsock.

Сейчас переходим к способам.

Procedure Abort. По традиции, данный способ разрывает установленное соединение.

Procedure Connect.He менее традиционно устанавливает соединение с удаленным сервером. Перед применением нужно установить свойства Host, Port, UserID и Password. Установка значений вторых особенностей — по желанию.

Procedure DeleteMailMessage (MailNumber: integer). Удаляет сообщение с номером MailNumber. В действительности данный способ практически только ставит пометку, а удаляются помеченные письма самим сервером при окончании сеанса связи. Снять все пометки возможно вызовом способа Reset.

Procedure Disconnect. Разрывает соединение с сервером.

Procedure GetMailMessage (MailNumber: integer). Употребляется чтобы получить электронное письмо с сервера. В качестве параметра показывается номер письма на сервере, как в способе DeleteMailMessage. При выполнении данный способ устанавливает значения свойства MailMessage.

Procedure GetSummary (MailNumber: integer). Действует подобно предыдущему способу, но приобретает не само письмо, а данные о нем, и устанавливает значения составного свойства Summary.

Procedure List. Сканирует содержимое почтового коробки пользователя на сервере. При нахождении каждого сообщения возбуждается событие onList, обрабатывая которое, возможно взять размер и номер сообщения.

Procedure Reset. Снимает все пометки на удаление с сообщений, созэти При вызове способа DeieteMailMessage либо GetMailMessage В том случае, если свойство DeleteOnRead установлено в True.

Function UniqueID (MailNumber: integer): string. Возвращает строковое значение, содержащее идентификатор сообщения, чей номер передан функции в виде целочисленного пар-ра.

На этом перечень способов компонента NMPOP3 заканчивается. Переходим к его событиям.

OnAuthenticationFailed. Инициируется при попытке аутентификации пользователя, т.е. в то время, когда пароль либо идентификатор пользователя указаны неправильно.

OnAuthenticationNeeded. Появляется при попытке выполнить какую-либо операцию, которая предусматривает ввод идентификатора и пароля пользователя, а таковые не предоставлены.

OnConnect.Появляется при успешного соединения с сервером.

OnConnectionFailed. Наступает при попытки соединения с сервером.

OnConnectionRequired. Инициируется при вызова какого-либо метода, что может выполняться лишь при наличия связи с почтовым сервером, а само соединение не было установлено или попытка его установить окончилась неудачей.

OnHostResolved. Появляется при перемене представления удаленного сервера, к примеру, при смене его имени на IP-адрес.

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

OnDisconnect. Появляется при разрыве соединения с сервером.

OnFailure. Появляется при попытки удалить сообщение припримененииметода DeleteMailMessage.

OnInvalidHost. Инициируется при попытке установить соединение с удаленным сервером в том случае, если в свойстве Host указано неверное имя сервера.

OnList. Наступает любой раз, в то время, когда способ List находит размер сообщения и уникальный номер в почтовом коробке пользователя. Имеет два параметра, в каковые и заносятся отысканные размер и номер.

OnPacketRecvd. Появляется любой раз, в то время, когда приложение приобретает очередной пакет данных от почтового сервера на протяжении сеанса связи.

OnReset. Наступает при успешного исполнения способа Reset.

OnRetrieveEnd.Инициируетсяпри успешном исполнении способов GetMailMessage и GetSummary.

OnRetrieveStart. Наступает перед действием способов GetMailMessage и GetSummary.

OnSuccess. Наступает по окончании успешного удаления сообщения.

На этом обзор компонента NMPOP3 закончен, и мы можем перейти к рассмотрению особенностей компонента NMSMTP.

Clearparams. Тип Boolean. В случае если значение этого свойства установлено в True, то любой раз по окончании отправки письма на сервер поля свойства postMessage будут очищаться. Значение по умолчанию — True.

EncodeType. Тип UUMethods. Определяет применяемый тип кодирования для присоединяемых файлов. Может принимать лишь два значения — uuMime и uuCode для обозначения MIME и UUEncoding, соответственно. Значение по умолчанию — uuMime.

FinalHeader. Тип String. Содержит заголовок последнего сообщения, которое должно быть отправлено на сервер.

Host. Тип String. Содержит имя либо IP-адрес почтового сервера, с которым мы планируем устанавливать сообщение.

LocalIp. Тип String, Read only. Содержит IP-адрес совокупности пользователя.

Port. Тип Integer. Содержит номер порта, на котором функционирует почтовый сервер. Значение по умолчанию — 25.

PostMessage. Тип TPostMessage. Составное свойство, содержащее всю информацию об электронном письме, которое мы планируем посылать. В него входят подсвойства FromName, FromAddress, ReplyToAddress, Organization, LocalProgram и Subject Типа String, кожный покров, направляться, ToBCC, Attachments, Body типа TStringList. Поля FromAddress и ToAddress являются необходимыми. В поле FromName хранится имя отправителя письма. В поле FromAddress — e-mail-адрес отправителя. Поле ReplyToAddress содержит e-mail-адрес, на что получатель может послать ответ. В поле Organization указано наименование организации, в которой трудится отправитель. LocalProgram предназначено для наименования программы, отправляющей почту. В свойство ToAddress помешается перечень адресов главных получателей для рассылки письма. Конечно, что данный перечень может состоять и из единственного адреса. В особенностях тосс и товсс указываются адреса получателей копий. Перечень присоединяемых файлов помещается в подсвойство Attachments. Фактически текст письма размещается в подсвойстве Body, а тема письма — в Subject.

ReplyNumber. Тип Smallint, Read only. Содержит последний ответ почтового сервера в численном виде. К примеру, значение 220 сигнализирует о готовности данного сервиса к работе. О смысле конкретных значений стоит совладать в своевременной справке Delphi.

Status. Тип String, Read only. Содержит последнее сообщение сервера о статусе.

SubType. Тип TSubType. Показывает тип текста в передаваемом сообщении. Тип TSubType есть перечисляемым типом и включает в себя пять значений. Значение mtPlain есть значением по умолчанию и характеризует простой текст; mtEnriched показывает на то, что текст в сообщении записан в формате RTF (Rich Text Format); mtSgml разрешает передавать текст в формате SGML (Standard Generalized Markup Language); значение mtTabSepaerated говорит о передаче текста, поделённого знаками табуляции; mtHTHL используется при передаче HTML-документов.

Timeout. Тип Integer. Показывает время в миллисекундах, в течение которого приложение будет ожидать отклика от сервера при попытке соединения. В случае если сервер за отпущенное ему время не выдаст отклика, возбуждается исключение. Как в большинстве случаев, значение по умолчанию — 0.

TransactionReply. Тип String, Read only. Хранит итог исполнения последней команды, отправленной на сервер.

UserID. Тип String. Содержит идентификатор пользователя, необходимый для процедуры подключения (login) к серверу. На некоторых серверах данный параметр не есть нужным.

WSAInfo. Тип TStringList, Read only. Содержит перечень строчков с информацией о текущей версии Winsock.

Количество способов этого компонента относительно мало, и их рассмотрение не займет у нас большое количество времени.

Procedure Abort. Предназначена для разрыва связи.

Procedure ClearParameters.Разрешает очистить все поля свойства PostMessage.

Procedure Connect. Устанавливает сообщение с сервером.

Procedure Disconnect. Предназначена для окончания сеанса связи.

Function ExpandList (MailList: String) -.boolean.Привызове данной функции происходит проверка, есть ли параметр MailList перечнем рассылки для данного сервера. По окончании успешного исполнения возбуждается событие onMailListReturn. Конечно, для успешного исполнения способа нужно наличие связи с сервером.

Procedure SendMail.Разрешает послать письмо, чьи параметры хранятся в полях свойства PostMessage.

Function Verify (User: String): Boolean.Разрешает проверить, зарегистрирован ли пользователь на сервере. В случае если его идентификатор, что передается в качестве параметра User, вправду распознается сервером, то значением функции будет True.

И в самом финише этого раздела мы разглядим все события, каковые смогут появляться при работе с компонентом NMSMTP.

OnAttachmentNotFound.Имеет параметр Filename типа String. Появляется, в случае если присоединенный файл, заявленный в поле Attachments свойства postMessage, не отыскан. В параметре FileName передается имя того самого файла, что не удалось отыскать.

OnAuthenticationFailed. Сделано в виде процедуры, в качестве параметра употребляется переменная Handled типа Boolean. Инициируется в случае, в то время, когда SMTP-сервер требует идентификации пользователя, а свойство useriD не заполнено либо в него подставлен неверный идентификатор пользователя. В случае если параметр Handled установлен в True, то попытки соединения будут повторяться, в другом случае будет возбуждено исключение.

OnConnect. Наступает по окончании успешного соединения с почтовым сервером.

OnConnectionFailed. В противоположность прошлому событию возникает при попытке соединения с почтовым сервером.

OnConnectionRequired. Имеет параметр Handled. Появляется при, если приложение пробует выполнить какую-либо операцию, для которой нужно наличие активного соединения с SMTP-сервером, а оно еще не установлено либо нештатно порвано. В зависимости от значения параметра Handled пробует или повторить операцию, или возбуждает исключение.

OnDisconnect. Наступает по окончании окончания сеанса связи с почтовым сервером.

OnEncodeEnd. Имеет параметр FileName типа String. Инициируется после окончания кодирования одного из присоединенных файлов, чье имя и передается в качестве параметра FileName.

OnEncodeStart. Ничем не отличается от прошлого события по структуре, но появляется в начале кодирования присоединенного файла.

OnFailure. Появляется при попытки отослать письмо.

OnHeaderincomplete. Инициируется, в случае если при попытке послать письмо не заполнены необходимые поля свойства PostMessage. Имеет два параметра — знакомый нам Handled с уже привычным механизмом действия и параметр hiType типа Integer. В данный параметр засылается одна из констант в зависимости от того, какое поле было пропущено. В случае если был проразрешён войти адрес отправителя (поле FromAddress), то приобретаем константу hiFromAddressMissing, а вдруг пропущено поле ToAddress, то, соответственно, появляется константа hiToAddressMissing.

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

Как определить собственный адрес электронной почты

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector