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

Вниз

Отправка почты   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.284 c
14-1095306740
КаПиБаРа
2004-09-16 07:52
2004.10.03
Опрос - Когда вы впервые пришли на этот форум?


3-1094302756
Arnold
2004-09-04 16:59
2004.10.03
Как создать свой файл gdb


3-1094291650
jiny
2004-09-04 13:54
2004.10.03
Вопрос по триггерам


14-1094723822
Guest
2004-09-09 13:57
2004.10.03
Реально-ли сделать прогу которая будет выводить звук через


1-1095231354
Black
2004-09-15 10:55
2004.10.03
Как разбить текст на части?