![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
отправка e-mail через приложение [D6, WinXP]
HrUsT © (2002-07-12 11:37:00)Братья по разуму, неужели только используя OUTLOOK-компоненты в Дельфи можно организовать отсылку сообщения? Или там через ShellExecute опять-таки аутлуку передать сообщение?
Мне просто текст нужно пересылать, без прикрепленных файлов.
Dark Lord (2002-07-15 07:28:00) [1]> MARcoDEN
Ты можешь обьяснить, как работает приведенный тобой код?
MARcoDEN (2002-07-14 11:09:00) [2]А можно и на API:
unit Email;
interface
uses Windows, SusUtils, Classes;
function SendEmail(const RecipName, RecipAddress, Subject, Attachment: string): Boolean;
function IsOnline: Boolean;
implementation
uses Mapi;
function SendEmail(const RecipName, RecipAddress, Subject, Attachment: string): Boolean;
var
MapiMessage: TMapiMessage;
MapiFileDesc: TMapiFileDesc;
MapiRecipDesc: TMapiRecipDesc;
i: integer;
s: string;
begin
with MapiRecipDesc do begin
ulRecerved:= 0;
ulRecipClass:= MAPI_TO;
lpszName:= PChar(RecipName);
lpszAddress:= PChar(RecipAddress);
ulEIDSize:= 0;
lpEntryID:= nil;
end;
with MapiFileDesc do begin
ulReserved:= 0;
flFlags:= 0;
nPosition:= 0;
lpszPathName:= PChar(Attachment);
lpszFileName:= nil;
lpFileType:= nil;
end;
with MapiMessage do begin
ulReserved := 0;
lpszSubject := nil;
lpszNoteText := PChar(Subject);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @MapiRecipDesc;
if length(Attachment) > 0 then begin
nFileCount:= 1;
lpFiles := @MapiFileDesc;
end else begin
nFileCount:= 0;
lpFiles:= nil;
end;
end;
Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;
function IsOnline: Boolean;
var
RASConn: TRASConn;
dwSize,dwCount: DWORD;
begin
RASConns.dwSize:= SizeOf(TRASConn);
dwSize:= SizeOf(RASConns);
Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
Result:= (Res = 0) and (dwCount > 0);
end;
end.
mukha (2002-07-12 23:19:00) [3]В Help-е есть пример отправки сообщения. Найди через поиск по ключевому слову Message
или вот пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Psock, NMsmtp;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
NMSMTP1: TNMSMTP;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit4: TEdit;
Label4: TLabel;
Edit5: TEdit;
Label5: TLabel;
Label6: TLabel;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure NMSMTP1Connect(Sender: TObject);
procedure NMSMTP1Success(Sender: TObject);
procedure NMSMTP1Disconnect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
NMSMTP1.Host := Edit1.Text; //Почтовый сервер
NMSMTP1.UserID := Edit2.Text; //Идентификатор пользователя
NMSMTP1.PostMessage.ToAddress.Text := Edit3.Text; //Куда отправляется сообщение
NMSMTP1.PostMessage.FromAddress := Edit4.Text; //Адрес отправителя
NMSMTP1.PostMessage.Subject := Edit5.Text;; //Тема сообщения
NMSMTP1.PostMessage.Body.AddStrings(Memo1.Lines);
NMSMTP1.PostMessage.LocalProgram:="E-mail";
NMSMTP1.Connect; //Соединение с сервером
end;
procedure TForm1.NMSMTP1Connect(Sender: TObject);
begin
//Memo1.Lines.Add("Connected, sending message");
Memo2.Lines.Add("Соединение установлено. Выполняется отправка сообщения!");
NMSMTP1.SendMail; //Отправка сообщения
end;
procedure TForm1.NMSMTP1Success(Sender: TObject);
begin
Memo2.Lines.Add("Success, you didn""t press Button2 fast enough");
if NMSMTP1.Connected then //Если связь установлена с сервером - разорвать
NMSMTP1.Disconnect;
end;
procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
begin
Memo2.Lines.Add("Disconnected");
end;
end.
HrUsT (2002-07-12 21:17:00) [4]Спасибо, дельная вещь.
Правда, пока выдает кучу ошибок... даже при запуске исходной демки, когда пытаюсь отослать пробное послание, что-то все время ругается. Что-то с connect связано, хотя связь есть.
Skier (2002-07-12 11:44:00) [5]>HrUsT
Загляни сюда что ли
...:\...Delphi6\Demos\FastNet\Smtp\