Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленкий email, Текста бы побольше 
:(
    Опции темы
Pavelbej
Дата 7.8.2005, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Этот код отправляет email с текстом набранным в мемо. Но вот проблема - можно отправлять только примерно 1800 символов. Почему?

Код

procedure TForm1.ToolButton4Click(Sender: TObject);
var em_subject, em_body, em_mail : string;
begin
    if memo1.Lines.Count<>0 then
        begin
        case MessageDlg('Send mail with text?',mtConfirmation,mbYesNoCancel,0) of
        IDYes: em_body := memo1.Lines.Text;
        IDNO: em_body := '';
        IDCancel: exit;
        end;
        end;
    em_subject := '';
    em_mail := 'mailto:[email protected]'+ '?subject=' + em_subject+'&body=' + em_body ;
    ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);
end;



PM MAIL   Вверх
Song
Дата 8.8.2005, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: нет
Всего: 4



Думается мне, больше строка с передачей параметров к файлу не поддерживает.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Pavelbej
Дата 8.8.2005, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



А вот этот код отправляет больше техста. Правда он запускает почтового клиента Mozilla, а верхний код запускает Outlook. В этом дело.



Код

procedure TForm1.ToolButton4Click(Sender: TObject);
var
  MapiMessage: TMapiMessage;
  MError: Cardinal;
begin
  with MapiMessage do
  begin
    ulReserved := 0;
    lpszSubject := nil;
    lpszNoteText := PChar(memo1.Lines.Text);
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;
    lpOriginator := nil;
    nRecipCount := 0;
    lpRecips := nil;
    nFileCount := 0;
    lpFiles := nil;
  end;
    MError := MapiSendMail(0, 0, MapiMessage,
    MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
  if MError <> 0 then MessageDlg('Error sending mail!', mtError, [mbOK], 0);
end;


PM MAIL   Вверх
Гость_Delphin
Дата 8.8.2005, 14:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А не проще вручную отправлять через сокеты?
Или тебе обязательно через почтовый клиент?
  Вверх
Pavelbej
Дата 8.8.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Мне нужно просто отправить email с текстом набранным в Memo. Второй пример кода иногда дает сбои. Есть другой вариант?
PM MAIL   Вверх
FRAGNATIC
Дата 8.8.2005, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Код

unit SendMailTo;

interface

uses WinSock, SysUtils, Windows;  // не забудь этот модуль для работы с сокетами

function sendmail(const smtp, mail_from, mail_to, body: string): boolean;

implementation

function sendmail(const smtp, mail_from, mail_to, body: string): boolean;

const ok = '250';
       cl = #13#10;

var WSAData: TWSAData;
   Host: TSockAddrIn;
   Sock: TSocket;
   res: integer;
   hostEnt: PHostEnt;

 { отправляем данные через сокет }
 procedure senddata(str: string);
 var i: integer;
 begin
   for i := 1 to length(str) do
     if send(sock, str[i], 1, 0) = SOCKET_ERROR then exit;
 end;

 { получаем ответ от команды }
 function recvdata(const accept: string): bool;
 var buff: array[1..255] of char;
 begin
   res := recv(Sock, buff, 255, 0);
   result := (res = SOCKET_ERROR) or (copy(buff, 1, 3) = accept);
 end;

begin
 result := false;
 try
   WSAStartUp($101, WSAData);
   Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
   if Sock = INVALID_SOCKET then exit;

   // получаем IP адрес SMTP-сервера и переводим его через inet_addr
   hostEnt := gethostbyname(PChar(smtp));
   if hostEnt = nil then exit;
   res := inet_addr(PChar(inttostr(byte(hostEnt^.h_addr_list^[0]))+'.'+inttostr(byte(hostEnt^.h_addr_list^[1]))+'.'+
            inttostr(byte(hostEnt^.h_addr_list^[2]))+'.'+inttostr(byte(hostEnt^.h_addr_list^[3]))));
   if res <= 0 then exit;
   { устанавливаем хост и порт сервера }
   Host.sin_family := AF_INET;
   Host.sin_port := htons(25); // порт 25, можешь поменять
   Host.sin_addr.S_addr := res;

   if connect(Sock, Host, SizeOf(Host)) > 0 then exit;
   sleep(200);
   if not recvdata('220') then exit; // приветствие сервера
   senddata('HELO SANTA' + cl); // после HELO можешь написать свое приветствие
   sleep(200);
   if not recvdata(ok) then exit;
   senddata('MAIL FROM:' + '<'+mail_from+'>' + cl);
   sleep(200);
   if not recvdata(ok) then exit;
   senddata('RCPT TO:' + '<'+mail_to+'>' + cl);
   sleep(200);
   if not recvdata(ok) then exit;
   senddata('DATA' + cl);
   sleep(200);
   if not recvdata('354') then exit;
   senddata(body + cl + '.' + cl); // отправляем текст сообщения
   sleep(200);
   if not recvdata(ok) then exit;
   senddata('QUIT' + cl); // отключаемся от сервера
   result := true;
 finally
   closesocket(sock);
   WSACleanup
 end;
end; //sendmail('smtp.inbox.ru', '[email protected]', '[email protected]', 'hello there!')
end.


PM MAIL   Вверх
Гость_Delphin
Дата 8.8.2005, 21:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Извеняюсь но развен не senddata('EHLO SANTA' + cl); и у строки что первый символ 1 ? А не 0???
  Вверх
Medved
Дата 10.8.2005, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Цитата(Song @ 8.8.2005, 11:29)
Думается мне, больше строка с передачей параметров к файлу не поддерживает.


Там указатель на PChar. Думается мне это почтовик просто их проглатывает.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
mvdr
Дата 15.8.2005, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: нет
Всего: 42



Гость_Delphin - ты не почтового рассылателя пишешь?


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.