Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.032 c
14-1094822954
jack128
2004-09-10 17:29
2004.10.03
Как скопировать содержимое окна CPU


4-1093095106
debuger
2004-08-21 17:31
2004.10.03
Приоритет в Вин2к


3-1094639300
DBL
2004-09-08 14:28
2004.10.03
Импорт (добавление)


1-1095675594
bobr12
2004-09-20 14:19
2004.10.03
Создание шаблонов форм


14-1095184236
jack128
2004-09-14 21:50
2004.10.03
Выведи своего бульдога :-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский