Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2013, 17:35   #1
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию Отправка файла на e-mail

Всем привет!
Реализовал чтобы программа отправляла файл на почтовый ящик, но не могу решить проблему, надо чтобы программа отправляла файл с ситемного диска, с документов пользователя.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  IdAttachment1:TIdAttachment;
begin
idsmtp1.Host:='smtp.yandex.ru';
idsmtp1.Port:=587;
idsmtp1.Username:='mypochta';
idsmtp1.Password:='passwordmail';
IdAttachment1:=TIdAttachment.Create(IdMessage1.MessageParts,'anketa.txt');
idmessage1.Body.Text:='Íèê:'+ combobox2.Text+#13#10'Òåìà:'+ combobox1.Text+#13#10'Ñîäåðæàíèå:'+ memo1.Text;
idmessage1.From.Text:='mypochta@yandex.ru';
idmessage1.Recipients.EMailAddresses:='mypochta@yandex.ru';
idmessage1.Subject:='Anketa zayavka';

idsmtp1.Connect();
if idsmtp1.Connected=true then
idsmtp1.Send(idmessage1);
idsmtp1.Disconnect;
Application.MessageBox('Âàøå ñîîáùåíèå óñïåøíî îòïðàâëåíî!','Âíèìàíèå',MB_OK);
end;
Эта строка кода отправляет файл:
Код:
IdAttachment1:=TIdAttachment.Create(IdMessage1.MessageParts,'anketa.txt');
анкету.
Как сделать так чтобы программа отправляла файл с директории: c:\Users\ИМЯ КОМПЬЮТЕРА\AppData\Roaming\anket
в которой и находится файл анкеты с расширением *.txt так как у всех имя компьютера отличается, как сделать так, чтобы программа отправляла файл с такого пути? Что-то типа %username% вместо имени компьютера.
Помогите реализовать.
SKS вне форума Ответить с цитированием
Старый 30.12.2013, 17:46   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Во первых там не имя копма, а имя пользователя, а чтобы узнать пользовательскую директорию можно использовать например эту функцию
Код:
function GetUserAppDataDir : string;
var
  c   : array [0..MAX_PATH] of char;
  dir : string;
begin
  SHGetFolderPath(0, CSIDL_APPDATA, 0, 0, c);
  dir := c;
  result := dir + '\';
end;
FaTaL вне форума Ответить с цитированием
Старый 30.12.2013, 17:59   #3
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Во первых там не имя копма, а имя пользователя, а чтобы узнать пользовательскую директорию можно использовать например эту функцию
Код:
function GetUserAppDataDir : string;
var
  c   : array [0..MAX_PATH] of char;
  dir : string;
begin
  SHGetFolderPath(0, CSIDL_APPDATA, 0, 0, c);
  dir := c;
  result := dir + '\';
end;
Подскажите как в моей программе реализовать?
SKS вне форума Ответить с цитированием
Старый 30.12.2013, 18:04   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

IdAttachment1:=TIdAttachment.Create (IdMessage1.MessageParts, GetUserAppDataDir + 'AppData\Roaming\anket\anketa.txt') ;
doktor255 вне форума Ответить с цитированием
Старый 30.12.2013, 18:16   #5
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

Ругается тут:
begin
SHGetFolderPath

[Error] Unit1.pas(40): Undeclared identifier: 'SHGetFolderPath'

Где-то прописать еще что-то нужно?
SKS вне форума Ответить с цитированием
Старый 30.12.2013, 18:25   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В uses SHFolder
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.12.2013, 18:35   #7
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

Идёт дальше и снова также ругается на GetUserApp, что для него прописывать?

пробовал Registry, не помогает, нашел что Registry для GetUserApp.

Последний раз редактировалось Stilet; 30.12.2013 в 20:44.
SKS вне форума Ответить с цитированием
Старый 30.12.2013, 18:53   #8
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

На функцию посмотри внимательно. Где ты там увидел GetUserApp? Функция именуется как GetUserAppDataDir. И что значит ругается? На приблизительную проблему, жди такой же приблизительный ответ, или излагай грамотно. Экстрасенсы в отпуске, в честь нового года.
doktor255 вне форума Ответить с цитированием
Старый 30.12.2013, 19:15   #9
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Хм. А Дельфи не понимает пути вроде "%appdata%" ?
Код:
IdAttachment1:=TIdAttachment.Create(IdMessage1.MessageParts,'%appdata%\anketa.txt');
UPD: нет
alextrof94$gmail.com

Последний раз редактировалось alextrof94; 30.12.2013 в 19:18.
alextrof94 вне форума Ответить с цитированием
Старый 30.12.2013, 19:20   #10
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Все что в кавычках, это обычный текст, и ни как иначе.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка на e-mail romanzi Работа с сетью в Delphi 18 08.03.2014 14:09
создание файла по шаблону и отправка по e-mail s_Putnik Microsoft Office Excel 1 20.02.2011 10:23
e-mail отправка romanzi Работа с сетью в Delphi 1 20.11.2010 21:10