![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправка почты [D5, NT4, Win2k, WinXP]
wHammer © (2004-07-28 11:26:00)Подскажите, если кто сталкивался. Необходимо написать код отправляющий почтовое сооьбщение по указанному адресу. Перепробовал все примеры и с данного сайта и с многих других - не работает. Все должно происходить программно, без участия пользователя. Если кто-нибудь осуществлял данную операцию, поделитесь опытом пожалуйста.
С наилучшими...
Александр.
wHammer (2004-07-29 07:50:00) [1]Вот еще вопросик. Как в NMSMTP настроить кодировку чтобы пользователь получал письмо в кодировке (кириллица(koi8-r))?
С наилучшими...
Александр.
wHammer (2004-07-28 15:49:00) [2]Спасибо, разобрался, проблема была в том, что не был установлен proxy-клиент.
С наилучшими...
Александр.
wHammer (2004-07-28 13:46:00) [3]Вот код, вернее последние 6 попыток.
Прошу прошения, 4 попытки.
wHammer (2004-07-28 13:43:00) [4]
> Piter © (28.07.04 12:52) [4]
> wHammer (28.07.04 11:26)
> Перепробовал все примеры и с данного сайта и с многих других
> - не работает
>
> ну что, начнем? Какой код пробовал - приводи. Почему не
> получилось, какие сообщения об ошибке выдавало. Прояви хоть
> каплю уважения к чужому времени.
>
> wHammer (28.07.04 11:26)
> Если кто-нибудь осуществлял данную операцию
>
> да тут ее на неделе раз по пять осуществляют...
Прошу прощения за задержку - был на обеде. Вот код, вернее последние 6 попыток. На форме 6 кнопок, ни одна не работает должным образом (либо вообще не отсылает, либо выводит окно Outlook для интерактивного подтверждения действия). Mail для пробы a.dolotov@nwcompany.spb.ru:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComObj, ShellApi, Mapi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function SendEmail(const RecipName, RecipAddress, Subject, Attachment: string): Boolean;
function SendMail(const From, Dest, Subject, Text, FileName: PChar; Outlook: boolean):Integer;
//function IsOnline: Boolean;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
// константы OlItemType
olMailItem = 0;
olAppointmentItem = 1;
olContactItem = 2;
olTaskItem = 3;
olJournalItem = 4;
olNoteItem = 5;
olPostItem = 6;
// константы OlAttachmentType
olByValue = 1;
olByReference = 4;
olEmbeddedItem = 5;
olOLE = 6;
var
myOlApp, myItem, myRecipient, myAttachments: OleVariant;
begin
// файл VBScript для создания почтового сообщения и прикрепления к нему файла
myOlApp := CreateOLEObject('Outlook.Application');
myItem := myOlApp.CreateItem(olMailItem);
myItem.Subject := 'This is the Subject';
myRecipient := myItem.Recipients.Add('a.dolotov@nwcompany.spb.ru');
myItem.Body := #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + 'DA: Proba,' + #13;
myItem.Body := myItem.Body + 'end;' + #13;
// Теперь прикрепим файлы...
// myAttachments := myItem.Attachments;
// myAttachments.Add('C:\blah.txt', olByValue, 1, 'Blah.txt Attachment');
myItem.Send;
myOlApp := VarNull;
myItem := VarNull;
myRecipient := VarNull;
myAttachments := VarNull;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
EMailDestinationString,SubjectString,Line1String,Line2String,mailstring:String;
BEGIN
EMailDestinationString:='a.dolotov@nwcompany.spb.ru';
SubjectString:='Message Subject';
Line1String:='This is the first line';
Line2String:='This is the second line';
// Можно использовать несколько адресов, разделяя их точкой с запятой //
mailstring:='mailto:' + EMailDestinationString +
'?subject=' + SubjectString +
'&body='+ Line1String +
'%0d' + Line2String;
if (ShellExecute(0,'open',PChar(mailstring),'','',SW_SHOWNORMAL) 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
// RASConn.dwSize:= SizeOf(TRASConn);
// dwSize:= SizeOf(RASConns);
// Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
// Result:= (Res = 0) and (dwCount > 0);
//end;
procedure TForm1.Button3Click(Sender: TObject);
begin
SendEmail('a.dolotov@nwcompany.spb.ru', 'a.dolotov@nwcompany.spb.ru', 'DA:Subject', 'Attachment');
end;
function SendMail(const From, Dest, Subject, Text, FileName: PChar; Outlook: boolean):Integer;
var
Message: TMapiMessage;
Recipient, Sender: TMapiRecipDesc;
File_Attachment: TMapiFileDesc;
function MakeMessage: TMapiMessage;
begin
FillChar(Sender, SizeOf(Sender), 0);
Sender.ulRecipClass := MAPI_ORIG;
Sender.lpszAddress := From;
FillChar(Recipient, SizeOf(Recipient), 0);
Recipient.ulRecipClass := MAPI_TO;
Recipient.lpszAddress := Dest;
FillChar(File_Attachment, SizeOf(File_Attachment), 0);
File_Attachment.nPosition := Cardinal(-1);
File_Attachment.lpszPathName := FileName;
FillChar(Result, SizeOf(Result), 0);
with Message do begin
lpszSubject := Subject;
lpszNoteText := Text;
lpOriginator := @Sender;
nRecipCount := 1;
lpRecips := @Recipient;
nFileCount := 1;
lpFiles := @File_Attachment;
end;
end;
var
SM: TFNMapiSendMail;
MAPIModule: HModule;
MAPI_FLAG: Cardinal;
begin
if Outlook then
MAPI_FLAG:=MAPI_DIALOG
else
MAPI_FLAG:=0;
MAPIModule := LoadLibrary(PChar(MAPIDLL));
if MAPIModule = 0 then
Result := -1
else
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail');
if @SM nil then begin
MakeMessage;
Result := SM(0, Application.Handle, Message, MAPI_FLAG, 0);
end else Result := 1;
finally
FreeLibrary(MAPIModule);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
SendMail('a.dolotov@nwcompany.spb.ru', 'a.dolotov@nwcompany.spb.ru', '4-Subject (2)', 'Text mail', '', true);
end;
end.
Piter (2004-07-28 12:52:00) [5]wHammer (28.07.04 11:26)
Перепробовал все примеры и с данного сайта и с многих других - не работает
ну что, начнем? Какой код пробовал - приводи. Почему не получилось, какие сообщения об ошибке выдавало. Прояви хоть каплю уважения к чужому времени.
wHammer (28.07.04 11:26)
Если кто-нибудь осуществлял данную операцию
да тут ее на неделе раз по пять осуществляют...
Игорь Шевченко (2004-07-28 12:37:00) [6]wHammer (28.07.04 12:10)
Найди в инете компонент Mail2000 - он все делает, что тебе надо :)
wHammer (2004-07-28 12:10:00) [7]
> Rouse_ © (28.07.04 12:02) [1]
Спасибо за ответ, но вот, взять, к примеру, первый вариант - он запускает почтовую программу, создает сообщение, но не отправляет его. Для этого (чтобы нажать "Отправить") опять же необходимо участие пользователя...
С наилучшими...
Александр.
Rouse_ (2004-07-28 12:02:00) [8]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1091000844&n=4
первый вариант без вложений - второй с вложениями и с учаситем пользователя :)