Форум: "Сети";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизОтправка почты Найти похожие ветки
← →
wHammer (2004-07-28 11:26) [0]Подскажите, если кто сталкивался. Необходимо написать код отправляющий почтовое сооьбщение по указанному адресу. Перепробовал все примеры и с данного сайта и с многих других - не работает. Все должно происходить программно, без участия пользователя. Если кто-нибудь осуществлял данную операцию, поделитесь опытом пожалуйста.
С наилучшими...
Александр.
← →
Rouse_ © (2004-07-28 12:02) [1]http://delphimaster.net/view/6-1091000844/
первый вариант без вложений - второй с вложениями и с учаситем пользователя :)
← →
wHammer (2004-07-28 12:10) [2]
> Rouse_ © (28.07.04 12:02) [1]
Спасибо за ответ, но вот, взять, к примеру, первый вариант - он запускает почтовую программу, создает сообщение, но не отправляет его. Для этого (чтобы нажать "Отправить") опять же необходимо участие пользователя...
С наилучшими...
Александр.
← →
Игорь Шевченко © (2004-07-28 12:37) [3]wHammer (28.07.04 12:10)
Найди в инете компонент Mail2000 - он все делает, что тебе надо :)
← →
Piter © (2004-07-28 12:52) [4]wHammer (28.07.04 11:26)
Перепробовал все примеры и с данного сайта и с многих других - не работает
ну что, начнем? Какой код пробовал - приводи. Почему не получилось, какие сообщения об ошибке выдавало. Прояви хоть каплю уважения к чужому времени.
wHammer (28.07.04 11:26)
Если кто-нибудь осуществлял данную операцию
да тут ее на неделе раз по пять осуществляют...
← →
wHammer (2004-07-28 13:43) [5]
> 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)<=32) then
ShowMessage("Auto method failed.");
END;
////////////////////////////////////////////////////////////////////////////////
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
// 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.
← →
wHammer (2004-07-28 13:46) [6]Вот код, вернее последние 6 попыток.
Прошу прошения, 4 попытки.
← →
wHammer (2004-07-28 15:49) [7]Спасибо, разобрался, проблема была в том, что не был установлен proxy-клиент.
С наилучшими...
Александр.
← →
wHammer (2004-07-29 07:50) [8]Вот еще вопросик. Как в NMSMTP настроить кодировку чтобы пользователь получал письмо в кодировке (кириллица(koi8-r))?
С наилучшими...
Александр.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.046 c