File: lremailappthebat.pas

package info (click to toggle)
lazarus 2.0.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 214,460 kB
  • sloc: pascal: 1,862,622; xml: 265,709; cpp: 56,595; sh: 3,008; java: 609; makefile: 535; perl: 297; sql: 222; ansic: 137
file content (138 lines) | stat: -rw-r--r-- 6,249 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
unit lrEmailAppTheBat;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, lrEmailExportFilter;

type

  { TEmailAppTheBat }

  TEmailAppTheBat = class(TEmailApp)
  protected
    class function AppFileName:string;override;
    function MakeParams:string;override;
  public
    class function AppName:string;override;
  end;

implementation
uses registry, LCLProc, LazUTF8;

{ TEmailAppTheBat }

class function TEmailAppTheBat.AppFileName: string;
{$IFDEF WINDOWS}
var
  R:TRegistry;
{$ENDIF}
begin
  {$IFDEF WINDOWS}
  R:=TRegistry.Create;
  R.Access     := KEY_READ;
  R.RootKey    := HKEY_CURRENT_USER;
  Result:='';
  try
    if R.OpenKeyReadOnly('Software\RIT\The Bat!') then
      Result:=R.ReadString('EXE path');
    R.CloseKey;
  finally
    R.Free;
  end;
  {$ELSE}
  ..
  {$ENDIF}
end;

function TEmailAppTheBat.MakeParams: string;
var
  FBodyTxt, S:string;
  F:TFileStream;
begin
{
  Result:='"mailto:' + FFilter.Email +
     '?subject='+FFilter.MessageSubject;
  if Trim(FFilter.MessageBody.Text)<>'' then
    Result:=Result + '&body='+Trim(FFilter.MessageBody.Text);
  Result:=Result + '&attach='+FFilter.EmailAttachFileName+'"';
}

{
Автоматизированное создание сообщения - команда /MAIL

Команда /MAIL используется для автоматизированного создания сообщения из шаблона, текстового файла и/или набора присоединенных файлов на определенный адрес. Эта команда чрезвычайно полезна для приложений, которые требуют посылки сообщений электронной почты без вмешательства пользователя, в соответствии со стандартами сети Интернет.

Синтаксис команды /MAIL:

/MAIL:[parameter1[;parameter2[;parameter3 [...]]]

Возможные параметры:

USER=значение или U=значение.
  Значение - название ящика, из которого должно быть отправлено сообщение.
  Если параметр FOLDER не определен, будет отправлено сообщение из папки Inbox данного ящика.
PASSWORD=значение или P=значение.
  Значение - пароль. Используется в том случае, если ящик защищен паролем.
FOLDER=значение или F=значение.
  Значение - путь к папке в ящике, из которой следует оправить сообщение. Если путь не включает имя ящика,
  The Bat! будет просматривать все ящики в поисках папки с таким именем;
  использоваться будет первая найденная папка.
  Если заданная папка не найдена, будет использоваться папка Inbox указанного ящика.
TEMPLATE=значение или T=значение.
  Значение - путь к файлу, содержащему шаблон, который должен использоваться для создания сообщения.
  По умолчанию это - шаблон используемой папки или ящика.

TO=значение.
  Значение определяет первичного адресата сообщения. Вы можете добавлять дополнительных адресатов с помощью макрокоманд шаблона %TO, %CC, %BCC.
SUBJECT=значение или S=значение.
  Значение определяет тему сообщения. Также возможно определить тему сообщения в шаблоне, используя макрос %SUBJECT.
TEXT=значение или CONTENTS=значение или C=значение.
  Значение - путь к текстовому файлу, который содержит текст сообщения.
  Также возможно включить текстовый файл в сообщение, используя в шаблоне макрос %PUT.
ATTACH=значение или FILE=значение или A=значение.
  Значение - путь к файлу, который должен быть присоединен к сообщению. Также возможно использовать макрос %ATTACHFILE в шаблоне.

ПРИМЕЧАНИЯ:
  Для разделения параметров используйте точку с запятой (символ ";"). Не используйте пробелы между параметрами,
  когда используете команду /MAIL в командной строке, потому что отделенный пробелом параметр будет обрабатываться
  как следующая команда и не будет понят программой должным образом.

  Если значение содержит пробелы, поместите его в кавычки. Если значение содержит кавычки,
  Вы должны использовать апострофы (символ " ' ").
}

  if Trim(FFilter.MessageBody.Text)<>'' then
  begin
    FBodyTxt:=GetTempDir(false)+'tmp_EmailAppTheBat_body.txt';
    F:=TFileStream.Create(FBodyTxt, fmCreate);
    try
      S:=UTF8ToSys(FFilter.MessageBody.Text);
      F.Write(S[1], Length(S));
    finally
      F.Free;
    end;
  end
  else
    FBodyTxt:='';

  Result:= '/MAIL:'+ //[parameter1[;parameter2[;parameter3 [...]]]
          'TO='+FFilter.Email+';'+
          'SUBJECT='''+FFilter.MessageSubject+''';';
  if FBodyTxt<>'' then
    Result:=Result+'CONTENTS='''+SysToUTF8(FBodyTxt)+''';';
  Result:=Result+'ATTACH='+FFilter.EmailAttachFileName;

end;

class function TEmailAppTheBat.AppName: string;
begin
  Result:='The Bat!';
end;

initialization
  RegisterEmailApp(TEmailAppTheBat);
end.