Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.19;
Скачать: CL | DM;

Вниз

отправка e-mail через приложение   Найти похожие ветки 

 
HrUsT   (2002-07-12 11:37) [0]

Братья по разуму, неужели только используя OUTLOOK-компоненты в Дельфи можно организовать отсылку сообщения? Или там через ShellExecute опять-таки аутлуку передать сообщение?
Мне просто текст нужно пересылать, без прикрепленных файлов.


 
Skier ©   (2002-07-12 11:44) [1]

>HrUsT

Загляни сюда что ли

...:\...Delphi6\Demos\FastNet\Smtp\


 
HrUsT   (2002-07-12 21:17) [2]

Спасибо, дельная вещь.
Правда, пока выдает кучу ошибок... даже при запуске исходной демки, когда пытаюсь отослать пробное послание, что-то все время ругается. Что-то с connect связано, хотя связь есть.


 
mukha ©   (2002-07-12 23:19) [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.


 
MARcoDEN ©   (2002-07-14 11:09) [4]

А можно и на 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.


 
Dark Lord   (2002-07-15 07:28) [5]

> MARcoDEN
Ты можешь обьяснить, как работает приведенный тобой код?



Страницы: 1 вся ветка

Текущий архив: 2002.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-60998
Mike222
2002-08-29 13:27
2002.09.19
delete record


8-61215
de_Nuke
2002-05-19 16:30
2002.09.19
Как прослушать .xm


1-61205
Hiking
2002-09-08 19:09
2002.09.19
Как из строки S удалить все пробелы кроме первых двух?


3-60960
Radimir
2002-08-28 17:15
2002.09.19
База данных словаря


7-61330
Alik
2002-06-27 19:54
2002.09.19
Мультимедия клава