-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathChangeLog.txt
1192 lines (1149 loc) · 71.3 KB
/
ChangeLog.txt
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
============================
[ Blat ChangeLog Legend: ]
[ + Added feature ]
[ * Improved/changed feature ]
[ - Bug fixed (we hope) ]
============================
3.2.23
[-] When parsing attachment names, the parser would stop after the first
closing quotation mark (") if found. Any filenames that are present after
the first closing quotation mark were not identified, therefore not sent
as attachments. This bug has existed since at least version 2.50.
-------------------------------------------------------------------------------
3.2.22
[+] Added new command line options -msgid and -addch2bin. The -msgid option
takes a string which will be used in the Message-ID: header instead of the
string created by Blat. The string will work best when enclosed by
quotation marks ("). This request came from Christophe Ross on
SourceForge.net, for use in sending control messages. For example:
-msgid "ThisIsAUniqueMsgId"
Heiko Mück, also on SourceForge.net, requested the ability to add
charset="utf-8" to the Content-Type: header for binary attachments. This
request allows him to be certified with his recipient. It seems to me his
recipient might be receiving a mixture of ASCII and UTF-8 files from
different locations, and want some to force senders to use UTF-8 for
binary attachments (XML files).
[-] If sending Unicode attachments as text, and 8bitmime is forced with the
-force8bit command line option, attachments were being sent as UTF-7 when
the SMTP server did not say that it supports 8bitmime. This -force8bit
option will now force text attachments to use UTF8 instead of UTF-7 when
UTF-7 would have otherwise been used.
-------------------------------------------------------------------------------
3.2.21
[+] Added support for Blat registry entries to be located in VirtualStore. For
example, HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\
WOW6432Node\Public Domain\Blat. Malcolm Sokol reported Blat was not able
to print the profiles, including the default. This appears to be because
his Windows 10 system had moved the Blat profiles to be in the above
location, which Blat had no knowledge of. My guess is this had occurred
when Windows was upgraded to Windows 10 Home from an earlier version. Blat
will not attempt to place profiles into VirtualStore, but it can read from
that location.
Malcolm also stated he found Blat entries under HKEY_USERS, now Blat will
look there when listing profiles, or attempting to get a profile to use.
However, Blat will not attempt to create files in HKEY_USERS.
[*] When deleting a profile, including the default, if there are no further
data entries or keys below \Public Domain\Blat, Blat will attempt to delete
\Public Domain\Blat. The benefit to users comes when those users no longer
want Blat to be on their system, Blat will attempt to remove its registry
keys when using -delete with the -profile option. As part of this effort,
I made "<all>" work with -delete so all of your profiles will be deleted at
once.
[*] The message about not being able to access Blat's registry keys could be
annoying, or downright misleading. I am now setting a flag to show this
message only when BLat is unable to access its registry keys anywhere in
the registry. Based on the above changes, Blat will search for keys in
HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, and HKEY_USERS. It is not desirable
to see warning messages for all registry locations, so I try to limit this
to just one instance when Blat is unable to find keys anywhere.
-------------------------------------------------------------------------------
3.2.20
[+] Added -force8bit option to make Blat believe the SMTP server supports
8bitmime option when the server does not actually advertise this in its
250 responses. It was mentioned by Heiko Mück that his server does support
8-bit MIME messages even though the server does not say that in the 250
responses. This option will allow Blat to use UTF-8 character set instead
of UTF-7, thus allowing Heiko to pass his certification.
-------------------------------------------------------------------------------
3.2.19
[+] Added -MDN option that allows Blat to be used for sending Message
Disposition Notifications in response to incoming emails through a third
party email client. Supported MDN types are defined in RFCs 2298, 3798,
and 8098. The defined types are: displayed, dispatched, processed,
deleted, denied, and failed. When -MDN option is used with any of these
six values, the message headers will indicate "MDN-sent-automatically"
along with the requested MDN type, as part of a multipart MIME message.
This option will not work with attachments or embedded files.
[*] When using -priority with a zero value, Blat will set message headers
"Priority: non-urgent" and "Importance: low". Blat has for years set these
message headers "Priority: normal" and "Importance: normal" whenever
priority was defined to be zero. Nissl Reinhard indicated Microsoft
Outlook 2013 has been treating Blat messages as normal priority instead of
the intended low priority. This change should help Outlook 2013 identify
low priority messages properly.
-------------------------------------------------------------------------------
3.2.18
[-] Found a workaround for a problem that exists in Microsoft Visual Studio
library routines that caused Blat to output an error message indicating
\blat.exe was not found. The issue was reported by Tim H. In his case,
his command window showed:
"C:\Program Files\NoInstallReqd\Blat"\blat.exe
Blat v3.2.17 (build : Aug 10 2016 22:32:21)
32-bit Windows, Full, Unicode
unknown error code 2 when trying to open \blat.exe
Blat is written in C++ programming language, which has its own command line
parser as part of the executable preamble. This parsing of the command
line occurs before the first line of Blat.cpp is given control, because a
requirement by C standards is that C program entry points must be given a
count of the command line arguments, what those individual arguments are,
and a list of environment variables and values. What you have stumbled
upon is a bug in Microsoft's Visual Studio 2010 32-bit library routines
that parse the command line argument in the preamble. Apparently, the
library routines stop parsing the program's path at the second quotation
mark, before picking up at the following backslash to present \blat.exe as
the "first" argument to be given into the C code.
I solved this by looking for the program sees the first argument does not
end with .exe, and the second argument does end with .exe. When these two
conditions exist, Blat will concatenate the two together and check if the
result is a valid filename. If the result is a valid filename, I replace
the first argument with the new string, and remove the second argument from
the argument list given.
If Tim H had placed his closing quotation mark after \blat.exe instead,
Blat would have behaved as expected.
-------------------------------------------------------------------------------
3.2.17
[-] Fixed -profile option that could cause the program to crash when using an
improperly initialized variable.
-------------------------------------------------------------------------------
3.2.16
[+] Added a feature to allow users to specify an attachment's content
description. Someone in Europe requested special Content-Description:
values for their project, so now users may give a content description
with the -attach options by including the description between <> characters
after the attachment filename. For example: -attacht "*.txt<NASCAR>"
Filenames may not have < or > characters, which is why the program looks
for these two characters to identify content descriptions. I must stress
this is only for attachments.
-------------------------------------------------------------------------------
3.2.15
[-] Missed some edits that use the Buf class where earlier versions used _TCHAR
array.
-------------------------------------------------------------------------------
3.2.14
[-] Vishnu Raju reported a string overflow when processing the profile option,
leading to a program crash. I changed the string processing so this cannot
occur again.
-------------------------------------------------------------------------------
3.2.13
[+] If an error is encountered with the server, and the connection is closed
by the server, do not attempt to continue sending commands. If try count
is not exhausted, then attempt to reestablish a connection.
-------------------------------------------------------------------------------
3.2.12
[+] Added a new command line option -IMAF to Ignore Missing Attachment Files.
If Blat is told to attach files to the outgoing message, and if the search
criteria fails to find a file, Blat normally stops to allow the user to
fix their problem with the requested attachment filename. This new option
will tell Blat to continue with the process of sending the email even if
the requested attachment filename cannot be found. Blat will still log a
message that the requested filename was not found, but Blat will not stop
when this option is used. This request came through SourceForge from
Robert Widdicombe.
[-] Corrected UTF-8 text conversion to Unicode. Some valid values were being
flagged as invalid. This was found when saving a Chinese text file as
Unicode and as UTF-8, then comparing the UTF-8 conversion to the original
Unicode file saved from Notepad.
[-] Correctly handle empty Unicode files that contain only the BOM.
[-] Corrected the help text for IMAP UserID and IMAP Password.
-------------------------------------------------------------------------------
3.2.11
[-] Alain Loubert found a problem with processing a plain text file for the
message body, resulting in a UTF-8 byte order marker (BOM) being sent as
part of the message. I fixed this oversight and added more test cases to
my validation batch file.
-------------------------------------------------------------------------------
3.2.10
[-] R Massey found a problem with processing a subject file that resulted in
garbled subject text. This was exposed as a problem with the most recent
changes, but there was a latent bug in the source code for a while which
actually caused problems for R Massey.
-------------------------------------------------------------------------------
3.2.9
[*] If the message body is from keyboard input, and if the user enters Ctrl-Z
without anything else before it, then a carriage return / line feed will be
the message body. This forces the program to add attachments properly.
[-] Checking the message body for Unicode was causing every other character to
be lost. This should be fixed now. At the same time, Unicode files
without a Byte Order Marker (BOM) should be properly handled. Version
3.2.6 was an attempt to fix this last piece, but it broke non-Unicode file
handling.
-------------------------------------------------------------------------------
3.2.8
[-] When impersonating (-f option) and the message content is formatted, it was
possible to get two Date: header lines in outgoing email.
-------------------------------------------------------------------------------
3.2.7
[*] Look for non-ASCII hyphen (hex code 0x2013) in the first position of
command line options, and replace it with ASCII hyphen (hex code 0x002D).
-------------------------------------------------------------------------------
3.2.6
[-] When checking file content for Unicode, if the second byte of every pair is
binary zero, then strip the binary zeroes before proceeding. It is
possible to create a Unicode file with the echo command such that a Unicode
Byte Order Marker (BOM) is not present in the file. Without the BOM, Blat
was not properly handling these Unicode files.
-------------------------------------------------------------------------------
3.2.5
[-] After closing the server connection, clear the authenticated user flag to
force reauthentication.
-------------------------------------------------------------------------------
3.2.4
[-] Changed X- header processing to use Buf definition rather than a fixed
array. The change is made to organization and aheaders, to prevent
memory overruns.
[-] If using alternate text, such as when sending plain text and HTML, and if
that alternate text is Unicode, be sure to set the charset for the
alternate text section and set Content-Transfer-Encoding: 7BIT or 8BIT
as needed and available.
[-] If the message body charset is UTF-8 or UTF-7, and MIME is expected, set
Content-Transfer-Encoding: 7BIT or 8BIT as needed and available instead of
setting Content-Transfer-Encoding: quoted-printable. The Unicode message
body can then be sent as-is, if 8-bit is allowed, or sent as UTF-7 if 8-bit
is not available from the server.
[-] Ensure message headers are properly sent when sending multiple attachments
across multiple messages, and the charset is UTF-8 or UTF-7.
[-] Ensure the closing boundary marker is sent, when needed.
-------------------------------------------------------------------------------
3.2.3
[+] Added -logcmds option to write the command line arguments to the log,
or to the screen, when also using -log option.
[*] RFC 6152 spells out that SMTP clients and servers must use "8BITMIME"
when support for 8-bit octects is requested and/or supported. However,
some SMTP software is responding with "250-8 BITMIME" instead, with an
embedded space in violation of RFC 6152. "8 BITMIME" is now accepted as if
it were "8BITMIME".
[-] If UTF-8 is selected with -charset option, and neither 8BITMIME nor
BINARYMIME are supported by the server, then UTF-7 will be used instead.
-------------------------------------------------------------------------------
3.2.2
[-] Fixed message body handling for Unicode / UTF-8.
[-] Fixed the -af option to read Unicode / UTF-8 files. The change was in a
routine common to several options.
[-] Fixed a variable initialization in the sockets code.
[-] Fixed attachment filename encoding for UTF-8 where the name does not
contain Unicode characters, but also is not strictly US ASCII.
[-] -LOG does not require a filename. If no filename is given, then Blat will
write everything to the stdout (screen). Fixed.
-------------------------------------------------------------------------------
3.2.1
[*] Completely removed "reply-type=original" from the source, so it cannot be
added to any message headers. No reference to this text was found in any
RFC at ietf.org.
[*] Add the whole server name/address to the Message-ID header. Before, only
the domain portion of the server name was added to the header. In testing
a multithreaded program, the routine that attempted to identify the domain
was causing a crash. The crash condition goes away if I just use the
server name as given by the user.
[-] When checking user input for Unicode, the buffer length should already be
set, therefore set the buffer length only if not already set. This allows
users to send binary files as their message body like older versions.
-------------------------------------------------------------------------------
3.2.0
[+] First attempt to make Blat.dll thread safe, meaning that a multithreaded
program that uses Blat.dll should be able to send emails with each thread
without stomping on each other. One caveat, if logging is desired, each
thread must provide a unique filename for the log file, so that the threads
do not corrupt each other's log entries. To make this thread safe version,
I took all of the global variables and made a structure of these, which a
pointer to the structure being passed to all routines. Each thread calling
Blat.dll will cause a new structure to be allocated, initialized, and used
for that thread's process. Some features of this change have not been
tested because I do not have the GSS library, nor have a need to use that
library for my home testing. The person who originally requested a thread
safe version of Blat.dll should have the means to test this change, and I
will attempt to contact that person to shake it out.
-------------------------------------------------------------------------------
3.1.2
[*] Changed the MultiByte to Unicode support calls to use CP_ACP instead of
CP_OEMCP, because the latter was not working for some folks using Cyrillic
code pages natively.
[*] Changed the ordering of attachments so that embedded attachments come
first, inline attachments are second, text attachments are third, and
binary attachments are last. It was reported that the prior ordering did
not work for some users, and the new ordering now works for the user who
reported an issue.
[*] -LOG does not require a filename. If no filename is given, then Blat will
write everything to the stdout (screen).
[-] Fixed the Try count INFINITE to work as intended.
[-] Removed some code that attempted to use the shortest encoded attachment
name that spanned multiple lines. The change returns the encoded lines
back to the same as done with versions 3.0.0 through 3.0.4.
[-] Found UTF-7 encoding was adding an extra hyphen in some cases.
-------------------------------------------------------------------------------
3.1.1
[-] Fixed a problem with parsing the command line and email addresses that have
an ampersand (&) or a percent sign (%) by themselves, not using HTML
formatting.
-------------------------------------------------------------------------------
3.1.0
[+] Added support for Blat.wcx in Total Commander (http://www.ghisler.com)
[*] Blat 64-bit includes GSS encryption support once again. gssapi64.dll can
be downloaded from http://web.mit.edu/kerberos/dist/testing.html#kfw-3.2.3
Download kfw-3-2-3-amd64.zip and extract the files. gssapi64.dll is in
the kfw-3-2-3-final/bin folder.
[+] Added more support for HTML in email addresses, such as %20 in place of
spaces, or < and > in place of < and >, respectively. This should
make the email parser more compatible with web servers. I do not know if
there is currently a problem, but I saw a change from someone else that
made a quick effort to support %20 in email addresses, so I took that idea
and expanded it.
[+] The ability to have multiple -body options used for each session was an
undocumented "feature" in versions 2.6.2 through 2.7.6, but this was
dropped when version 3.0.0 was developed to support Unicode. A user on
SourceForge.net complained that this "feature" was missing from version
3.x, so I added this back in and now it is being documented in this
Change log.
http://tinyurl.com/alx3z7z
[+] Replace the user's login password in blat's log file with "*****" when
using -debug. -superdebug is not effected, because this mode will write
the individual bytes in HEX mode, which the user can then validate if their
login credentials are being rejected.
[-] Fixed inline attachments to remove "reply-type=original", making the
headers look like they did with Blat version 2.6.1. The test message
received by Windows Live Mail looks as expected -- inlined text attachments
are viewed as if part of the original message.
[-] RFC 2046 says that if "Content-Type:" is message/rfc822, then only 7BIT,
8BIT, and BINARY are permitted encoding types. If an attachment is found
to have this content type defined, then the attachment will be treated as a
text file, and the encoding will be either 7BIT or 8BIT. However, the
content of the attachment will not be validated for RFC 822 compliance.
[-] Fixed a missing terminator byte for text attachments that sometimes allowed
text attachments to be longer than expected, and/or incorrectly converted
to UTF-8.
-------------------------------------------------------------------------------
3.0.7
[-] Removed a line of debug code that printed command line arguments to the
screen, always.
-------------------------------------------------------------------------------
3.0.6
[+] Added error messages for attachment problems. These include: no file was
found for a given search string, a name that matches the search string does
not appear to be an actual file, a file that is larger than 4 GB, a file
that cannot be opened, and a file that cannot be read. These extra
messages should help people understand why their attachment(s) did not get
sent, or why Blat exits with error code 12.
[+] Add more intelligence for checking UTF-8 byte sequences when the UTF-8 Byte
Order Marker (BOM) is not present. This helps reduce the likelihood of
incorrectly marking the charset as "UTF-8" or not.
[-] Forgot to properly set charset= in headers when Blat determines the message
body is UTF/Unicode. Blat will now set charset= to UTF-8/UTF-7 as needed.
[-] Fixed options file parsing that I broke in 3.0.5, trying to support UTF-8
and Unicode files that may not have a BOM.
-------------------------------------------------------------------------------
3.0.5
[*] Text attachments will be sent in their entirety, even if the message is
supposed to be multipart. This change allows UTF/Unicode files to be
processed correctly so that all characters of the file should be received
and decoded without issue.
[-] Extensive changes related to how Unicode is handled versus 7-/8-bit
characters in English, European, and some other languages. These changes
include fixes to salutations, postscripts, the subject line, text
attachments, and attachment file names. Additional changes identify 7-bit
data for text messages and text attachments.
-------------------------------------------------------------------------------
3.0.4
[+] If 32-bit Unicode code is run with Windows 9x/ME, exit with error code 14
because Unicode is not supported with Windows earlier than Windows 2000.
[+] Try to support non-ANSI computer names, as found with a Russian version of
Windows 7.
-------------------------------------------------------------------------------
3.0.3
[-] Per Thomas Beutlich, changed how the blat log file is opened, to create
this file as UTF-8 when Blat is compiled with Microsoft Visual Studio 2005
or newer. When compiled with Visual Studio 2003, or earlier, Unicode
strings will be converted to UTF-8 before being written to the log. If the
log is created, the first three bytes will be a UTF-8 marker. Testing with
Visual C++ 6.0 in Unicode showed that VC could not write Unicode strings
correctly, which required that strings be converted to UTF-8 before writing
to the log.
[-] Fixed yEnc encoding to work properly with binary files. One line of code
needed to be moved about eight (8) lines lower.
-------------------------------------------------------------------------------
3.0.2
[+] Changed subject handling to use Buf class, and to convert to UTF-8 right
away, if necessary.
[+] Added "*** Warning ***" to certain messages related to authentication
and message size. Added "*** Error ***" to additional messages related to
authentication.
[*] Changed error messages related to opening / reading files to more
accurately tell what the problem is. Previously, these messages simply
said "Error reading ...".
[-] Fixed a potential crash with the network connection code when an error
occurs with the network.
[-] Fixed -tf/-cf/-bf option to permit Unicode file content.
-------------------------------------------------------------------------------
3.0.1
[+] When printing messages to a log, or to the screen, convert UTF-8 strings
to Unicode when possible before writing to the log or screen. This allows
the user's strings to appear as readable text to that user, hopefully.
[*] Removed dependance on MSVCRT.DLL and MSVCR100.DLL. The program size is
larger, but Blat now does not need these .dll files to be distributed.
[*] Blat 32-bit is being built with Microsoft Visual C++ 6.0, and should still
run under Windows 98 and Windows 2000.
[*] Blat 64-bit is being built with Visual Studio 2010, and should run under
any Windows 64-bit edition.
[*] Blat 64-bit does not include GSS encryption support.
[*] Dropped the "w/GSS encryption" version suffix.
[-] Fix base64 encoding of message headers to issue a line break on the nearest
space character to a 72 character line length. Before this change, some
Unicode strings were not interpreted correctly by some email clients. With
this change, email clients like Thunderbird can decode the headers
properly.
[-] Fixed the message output for blat.dll to use a caller's print function
when it is available.
[-] Fixed blat.dll functions printDLLW(), printDLLA(), BlatA(), BlatW(),
SendA(), and SendW() to correctly convert from/to Unicode strings.
-------------------------------------------------------------------------------
3.0.0
[+] Allow Unicode domain names, which will be made compliant with RFC 5890.
[+] Converted the source code to use Unicode throughout. As a result, I added
both MBCS and Unicode interfaces for the .DLL. Developers will need to
adapt or include blatdll.h into their projects so they can call the .DLL
properly. Blatdll.h is included in the release package.
[+] Blat will write to its log file in UTF-8 format when possible. This will
allow the log file to show Unicode filenames instead of showing a series
of question marks (?). The log file can still be opened with Notepad
without any issues. Thanks to Thomas Beutlich for this suggestion.
[+] Unicode filenames will be converted to UTF-8 before being included into
the message body and/or message headers.
[+] When storing login and password registry keys, Unicode values will be
converted to UTF-8 before encoding to base64. This makes Unicode login
and password values compliant with RFC 4616. Existing keys from Blat 2.xx
should continue to work just fine.
[+] Blat can be compiled as either 32-bit or 64-bit. The 64-bit version will
look for its registry keys first under SOFTWARE\Wow6432Node\Public Domain
before looking under SOFTWARE\Public Domain. This allows users to keep
their existing profiles should they change from using 32-bit Blat version
to the 64-bit version.
[+] The version of DLLs that are required for Blat will be included with the
release package. For example, building Blat with Visual Studio 2010 means
that MSVCR100.DLL will be called, and thus I will be including the required
version with the release package.
[+] Allow HTML in salutations. For example:
-to "1st <some@> \"<img src=\\\"cid:banner.gif\\\"><BR>Hey 1st,\""
Here's why -- the three backslashes and quotation mark are actually taken
as two different character sequences, the double backslash is first, then
the backslash and quotation mark is next. What you see above on the
command line will be initially seen in Blat as this:
1st <some@> \"<img src=\\\"cid:banner.gif\\\"><BR>Hey 1st,\"
Then when I go to parse this to look for a name, an email address, and a
salutation, the result will be these three parts:
Name: 1st
Email: <some@>
Salutation: "<img src=\"cid:banner.gif\"><BR>Hey 1st,"
The escaped quotation mark in front of the '<' is the tell Blat this is not
the next email address. Instead, '<' is to be taken as part of a
salutation. Otherwise, '<' is normally seen as the start of the next email
address.
Note now that the salutation has internally to it an escaped quotation
mark. The next step is for me to remove the leading and trailing quotation
marks, to make it presentable in an email message. Lastly, I remove the
escape characters leaving this final text to be put into the outgoing
email:
<img src="cid:banner.gif"><BR>Hey 1st,
During testing, I run Blat from .bat files with a variety of options. I
had to make a small change, or enhancement, to permit HTML in salutations
when using .bat and .cmd files to run Blat. The issue is that Windows 7
command processor does not like < or > in command lnes, except as used for
keyboard input and screen output redirectors. This is not a problem if the
< and > are used around email addresses, but it is a problem when used as
part of HTML. The workaround that I came up with is to allow square
brackets '[' and ']' to be used in place of '<' and '>', respectively, when
in salutations. In salutations, Blat will convert square brackets '[' and
']' to '<' and '>', expecting them to be used as HTML.
Applications that call Blat to send emails might be able to use '<' and '>'
properly. However, if you find a situation where these do not work, try
using square brackets instead.
[*] Keep the server connection open until the email has been sent to all
recipients. Previously, the server connection was closed after each
message, even when sending to multiple recipients.
[*] Changed how the command line is processed in processOptions(), so that only
options will have forward slashes (/) changed to hyphens (-) automatically.
This feature was introduced in version 2.5.
-------------------------------------------------------------------------------
2.7.7
[-] Abort the program if an attachment is not found. The return code is 12.
[-] Aligned the help text for -level option.
-------------------------------------------------------------------------------
2.7.6
[*] Make sure all uses of strncpy() properly terminate the target string, to
eliminate a potential memory overrun.
[-] Attempt to fix a potential problem with time zone adjustments in the Date:
header for locations that do not have daylight savings time.
[-] Fixed a memory leak in gensock_connect(), introduced at version 2.6.0.
-------------------------------------------------------------------------------
2.7.5
[-] Fixed a problem with looking for default extension types. The instruction
ordering was backwards, causing a crash if the file type was not listed in
our source file (filetype.cpp).
-------------------------------------------------------------------------------
2.7.4a
[+] Removed first attempt at wide char/unicode for the time being. I do not
have any way to test it.
[+] Added X-MimeOLE: header for Blat with its version number when adding header
X-MSMail-Priority.
[-] Fixed the help text for spelling error and alignment.
-------------------------------------------------------------------------------
2.7.4
[+] First attempt at making the code compatible with wide character / Unicode
compiles.
[*] Small changes for encoding headers when 8-bit characters are used.
-------------------------------------------------------------------------------
2.7.3
[*] OpenWatcom v1.8 can now build Blat after making changes to makefile.w32 and
some of the source files.
[*] I made some preliminary changes for compiling as 64-bit with Visual Studio
2005, but there needs to be more changes so VS 2k5 will build in 64-bit
mode. For now, the changes do not affect the 32-bit builds. When I get
the 64-bit build working, Blat will identify itself as "a Win64 (AMD64)
SMTP mailer" instead of "a Win32 SMTP mailer". I am running Vista 64-bit
so I can test Blat when I have it building as 64-bit. The goal is to have
both 32-bit and 64-bit versions available to choose from.
[-] Fixed a memcpy() bug in options.cpp that I introduced with version 2.7.2; I
had used an ampersand (&) with the first argument when I should not have.
[-] Removed ampersands from the fifth (5th) argument to RegQueryValueEx() in
regs.cpp. These ampersands have existed from before I took on the source.
-------------------------------------------------------------------------------
2.7.2
[*] When delaying between messages, and if POP3 access is requested, then delay
after the POP3 access before sending the first SMTP message. Some service
providers require a delay after POP3 access before they will acknowledge
and allow SMTP access. This time delay is unknown, so a little testing is
required to find what delay value works and what does not.
[-] Use "strncpy" instead of "memcpy" to avoid potential page faults in
gensock.cpp and options.cpp.
-------------------------------------------------------------------------------
2.7.1
[*] Allow -log to be used without a filename. When no filename was specified
before, this could have caused problems with Blat.
[*] Force the -contenttype option to be available for all builds *except* LITE.
[-] If the body filename is not specified with the -bodyf option, allow Blat to
continue without crashing.
-------------------------------------------------------------------------------
2.7.0
[+] Added "-nomd5" option to disable CRAM-MD5 authentication. This is for
users who know their SMTP server/service provider has a flawed CRAM-MD5
implementation.
[+] Added "-contentType <string>" option so users can specify the ContentType
header for attachments that do not have a registered content type for the
extension. For example: -contenttype "text/calendar"
[*] Removed an extra "m" in the word "comments" associated with the -comment
help text.
[*] If the POP3 server name has not been specified, and POP3 access is
requested, then use the SMTP server name as the POP3 server name. In some
cases this is true, but most cases I have seen these functions are handled
by different servers and using the SMTP server name as the POP3 server name
would fail the POP3 access. Using POP3 access without specifying the POP3
server name should be used carefully.
[*] When an error message is written to the log, preface it with
"*** Error ***" so these messages can be found more easily.
[*] Allow "-mps" / "-multipart" option to be used without a specified size,
and to use the SMTP server's maximum message size to be the guide for
breaking up attachments for multiple part messages.
[-] Changed "ISO-8859-1" to "iso-8859-1".
[-] Changed base64 encoding and quoted encoding to use lower case 'b' and 'q'
respectively, even though the RFC that I read originally had upper case.
This was causing some email clients and/or servers to have problems with
encoded headers.
-------------------------------------------------------------------------------
2.6.3
[+] Added "-pwd" option for -password. It was pointed out that this was
mentioned in text somewhere.
[-] Changed the way email addresses are encoded for headers to encode only the
name, not the email address itself. This was causing some servers to have
problems, where the server was expecting the email address itself to be in
the clear.
[-] When closing the POP3 session, make sure to send QUIT to the server before
disconnecting, and wait for a possible response.
-------------------------------------------------------------------------------
2.6.2
[+] Add -overwritelog option to delete an existing log file and start writing
a new log. This is used with the -log option.
[+] Add -bodyF option to specify a filename that contains the message body.
This could be used in an options file to specify a default text file.
[*] Use MSVCRT.DLL instead of MSVCRT71.DLL.
[*] Allow command line -t/-to options to override and eliminate -t/-to settings
from a default options file. This change also effects -c/-cc, -b/-bcc,
-tf, -cf, and -bf. Previously, if any of these were specified in the
options file, users could not override them from the command line.
[*] Allow zero length attachments to be sent, as a notification that such files
were created by some other activity.
[*] Changed the method of checking Windows version. The new method was found
at Microsoft's MSDN website.
[-] Checking for a message body file has been improved to not leave files
locked. Files that have been opened will be closed. This was overlooked
before.
[-] Fix memory leak, by removing the last allocated block of memory.
-------------------------------------------------------------------------------
2.6.1
I started to make changes to support Microsoft Visual Studio 2005. The
changes are to define some global compile time switches so I won't have to
make source level changes. The code still builds from Visual Studio 6.0 and
Visual Studio .Net.
[+] When the user requests authentication, if that authentication fails for
CRAM-MD5, try to use AUTH PLAIN. If authentication fails for AUTH PLAIN,
try using AUTH LOGIN. I do not check if the server supports AUTH LOGIN,
just try it anyway if earlier authentication methods do not work. This was
done to get around bugs in servers that advertise CRAM-MD5 but do not
support it correctly.
[-] Encoding of headers for non-USASCII values has changed so client programs
can interpret the headers correctly. This has been tested with Outlook
Express, and Blat's output has itself been compared to the output from OE.
[-] The change I made for 2.6.0 to open files with the Microsoft recommended
32-bit API call does not work for Windows 98/ME. Its been reported that
this change failed to open files under Win2000, also, although I have not
experienced any problems with my Win2000 on my office laptop. This version
will use the old 16-bit type Windows function call for Windows versions up
to and including Win2000, but use the recommended 32-bit call for Windows
XP and beyond.
-------------------------------------------------------------------------------
2.6
[+] support for XTND XMIT command for Eudora users. This is a shortcut to use
a POP3 server as an SMTP server. The non-standard option was created as an
extension for the Unix Popper server. Without this command support, users
are unable to use SMTP with their ISP's Popper server. -B recipients are
put into a Bcc: header line so the Popper server software knows how to send
messages to those recipients since the server does not support the RCPT TO:
SMTP command. The command line option is -xtndxmit.
[+] support IMAP before SMTP, similar to POP3 before SMTP.
[+] add support for message sensitivity using the Sensitivity: header. The
command line option is -sensitivity=x where x is 0 for personal, 1 for
private, and 2 is for company confidential.
[+] add Priority: and Importance: headers for Lotus Notes users.
[+] add the CPU clock count (rdtsc) to the Message Id: header value. This is
useful in cases where multiple copies of Blat are running. Nothing is
foolproof, but this is better than before, for making unique message id
values.
[*] added Reply To: header when the -reply option is used with the -i option.
[*] moved the cram-md5 support to its own function so it can be called for
IMAP login as well as SMTP login.
[*] server responses are recognized faster, almost instantly now, which means
email is sent quicket.
[-] fix the makefile for md5.obj, to put it into the correct directory.
[-] clear the socket handle when the connection is closed. This will allow
Blat to open a new connection instead of trying to reuse a closed/old
socket connection.
[-] fix the -install option to accept normal command options to specify the
server, from address, etc. For example:
blat -install -server smtp.example.com -f me@mozilla -u abc -pw xyz
[-] fix Unicode support.
-------------------------------------------------------------------------------
2.5
[+] when parsing the command line, if the first character is a forward slash
(/), this is changed to a hyphen. BEWARE that this _will_ effect text
within strings, such as your subject line and message body.
[+] allow the use of normal command line options with -install. For example:
blat -install -server smtp.xyz.com -u me -pw goaway -try 1 -port 900
-f myemailaddy
[+] added -nomps to disable automatic multipart messages. If the message is
larger than the SMTP allows, Blat will exit with code 14.
[+] added support for Unicode files as the message body. The file content will
be converted to UTF-7 and the Charset changed also.
[+] added -attachI to allow inline text attachments, similar to the former
definition of -attachT.
[+] for the .DLL, created a cSend() entry point that uses C style entry/exit
code, for an Oracle database application.
[*] changed some of the help text, hoping to make it clearer.
[*] -attachT changed to use "Content-Disposition: ATTACHMENT".
[*] allocate enough memory to contain the encoded attachments, rather than
continually realloc memory as the buffer grows. This can speed up the
encoding process significantly on Win9x systems.
[*] perform smarter header encoding when headers have quotable characters.
[*] message IDs will include the process ID value, so two or more copies of
blat may execute at the same time on the same system.
[*] Try count will be used when attempting to establish a connection to the
server. Previously, this was used only for the sending of messages after
a connection was established. The purpose is to allow Blat to connect to
busy or slow response servers.
[*] any text sent to the server will have a carriage return for each line feed,
and a line feed for each carriage return. Messages without carriage
returns have caused problems for some servers.
[-] when adding a new boundary layer, the last byte of the boundary marker is
incremented within the limits of the defined boundary character set.
[-] changed the attachment sorting sequence to have embedded attachments first,
binary attachments second, then text and inline attachments. This fixes a
bug in the boundary headers with adding attachments to messages.
[-] remove the space between "MAIL FROM:" and the From address, to be aligned
with the RFCs. At least one mail server did not like a space after the
colon (:), and rejected the messages.
[-] remove the space between "RCPT TO:" and the To address, to be aligned
with the RFCs.
[-] fix up file positioning for Win9x. Multipart messages was causing
problems for Win98 users.
-------------------------------------------------------------------------------
2.4
[+] support multihomed servers. No visible change for this, it is done
at the connection state. If the primary IP address does not answer,
alternate IP addresses will be attempted, if available.
[+] added "To: Undisclosed recipients:;" when only using the -bcc option.
This is in RFC 2822. Use -ur option if you want this.
[+] added "forced" authentication for NNTP if -u/-pw options are used. This
means that if the server does not specifically request authentication,
Blat will attempt it anyway if the userid is specified on the command
line.
[+] added support for format=flowed when adding alternate text. This was
not added for the regular message body since the message could be
binary.
[+] added -af, -atf, and -aef options that take a filename parameter. These
new options are for using a file that contains a list of attachments to
be sent. -Af is for binary files, similar to using -attach. -Atf is
for text files, like using -attacht. Lastly, -aef is for embedded files
in the same way as using -embed option. Each attachment named can be on
separate lines, or be separated by commas. Quotation marks (") are not
needed. Do not use two backslash characters for your path delimiter.
[+] added content-type defaults for these filename extensions: pdf, xls,
gif, jpg, bmp, png. This was done in case the registry does not have
them defined.
[+] support packet sizes up to 64240 bytes. This will allow more efficient
data transmission than using only 512 byte packets.
[+] print how many parts of a message will be sent if more than one.
[*] disable -base64 if attachments are included. This only effects the
message body so that it does not get encoded with base64 *if* there are
any attachments/embedded files.
[*] changed the Content-Type header when adding alternate text and embedded,
to be compliant with RFC 2387.
[*] changed the access mode when opening a message file, to allow sharing on
read and write mode. This was needed to send files that may still be
open by another application.
[*] increased the transmit buffer size to almost 64K, and ask Windows for
the size of its send buffer. This allows Blat to be more efficient when
transmitting.
[*] when adding a plain text message with -alttextf, the message will not be
converted to quoted printed if the text contains only US-ASCII, tab,
carriage return, and newline characters. Any other control character,
or 8-bit byte will be converted as before.
[*] some code cleanup to support 64-bit compilation for AMD Opterons.
[*] makefile.w32 tweaked for Watcom C/C++ 10.6 and newer.
[*] makefile.g32 tweaked for Gnu gcc.
[*] yEnc will display the original filesize in the subject line, so people
who are math challenged can determine if they want to spend dial-up time
to download files.
[-] changed how the different parts of a message are constructed when
sending attachments, especially when also sending html with embedded
objects. This now lets Outlook and Outlook Express show their paperclip
when attachments are included. Thanks to Richard (a.k.a. crazymitchuk2)
for alerting me to this problem with Outlook.
[-] increased the server timeout when looking for responses from one second
to the global timeout value, which by default is 30 seconds.
[-] clear _all_ global variables at initialization, do not expect them to be
preset. This will allow blat.dll to be called multiple times without
unloading it between calls.
-------------------------------------------------------------------------------
2.3
[+] add support for GSSAPI authentication using Kerberos v5. This change also
supports encrypted packets using Kerberos. You need gssapi.dll from MIT.
http://web.mit.edu/kerberos/www/
Joseph Calzaretta from MIT provided the code.
[+] new command line options for GSSAPI: -k, -kc, -service, -level.
-------------------------------------------------------------------------------
2.2.2 (2004.02.26)
[-] fixed a bug where a socket was being left open after sending mail. A break
instruction in a for() loop needed to be removed, in sendmail.cpp. Thanks
go to Tim Musson for the suggestion, and Denis Mikhailitsky for reporting
it.
[-] fixed a bug in parsing email addresses where the address is 31 bytes long.
Thanks to Doug Jenkins for reporting this issue.
[-] minor changes to the options list.
-------------------------------------------------------------------------------
2.2.1 (2003.12.20)
[+] more command line options have been allowed for cgi script support, such as
-debug and -log options.
[+] support a comment character in options files and recipient list files. The
command line option for this is -comment <char>, where <char> is the
character to be used as the start of a comment. In DOS batch files, this
would be the semicolon (;), which is the default character in Blat. In
Perl scripts, this would be a hash or pound sign (#). If the comment
character is found in an options file, or recipients list file, the rest
of that line will be ignored. You can use the comment character to add
comments to your recipients list that would help you remember important
items about each recipient.
[+] support accessing a POP3 server prior to sending to SMTP. Use the new
-installPOP3 to place your server name, login name and password values into
the registry. The format of this command line option is:
blat -installPOP3 servername - - port {profile} loginname password
The profile in the above line is optional. If not needed, then replace it
with a hyphen. The other hyphens mean those values are not used with
-installPOP3. The default value for the port number is 110.
When Blat wants to send a message to the SMTP server, if a POP3 server has
been defined for the profile being used, Blat will perform the following
steps:
1. Connect to POP3 server.
2. Send USER xxxx using the user's POP3 login name, wait for +OK.
3. Send PASS yyyy using the user's POP3 password, wait for +OK.
4. Send STAT command to get a count of messages, wait for +OK.
5. Send QUIT, wait for +OK.
After the Quit is issued, Blat will proceed to send email to the SMTP
server.
The requirement for POP3 before SMTP is an attempt by some ISPs to stop
spam from originating through their service. They justify this tactic by
requiring people to have a paid account, but do not enforce any real kind
of SMTP authentication or tracking.
[+] added -alttext and -alttextf options. These should be more meaningful
than -althtml or -htmaltf options. The latter two take a filename argument
that contains the plain text to be associated with the intended message
body. -Alttext takes text on the command line as its argument,
while -alttextf takes a filename. It is my intention to drop -htmaltf
and -althtml options at some future date. The usage text already drops
them both in favor of -alttextf. The original code to use -althtml was a
hack, to get something quick for testing. Changing the name to -alttextf
seems to be more meaningful and has wider application.
Please stop using -htmalf and -althtmf, use -alttextf instead because it
should make this clearer. The -alttext is new, it accepts text on the
command line only, like between quotation marks ("). If the pipe character
is in the text, it will be effected by the -binary option just like it
would be if used with the -body option.
[+] added -hkcu to -install[SMTP|NNTP|POP3] to place Blat's values into
HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE. -hkcu has also been
added to the -profile -delete command line options to delete Blat's values
from HKEY_CURRENT_USER. An example of its use might look like this:
blat -install server emailaddy -hkcu
or
blat -profile -delete -hkcu oldisp oldnntp
When listing profiles from the registry, if any profiles exist in
HKEY_CURRENT_USER, Blat will first print "Profile(s) for current user --".
When listing profiles from HKEY_LOCAL_MACHINE, Blat will first print
"Profile(s) for all users of this computer --" if it finds there are
profiles in HKEY_CURRENT_USER. The -hkcu option is not accepted when
listing the profiles; it will be ignored if found.
[+] Blat will look for its values in HKEY_CURRENT_USER before it looks in
HKEY_LOCAL_MACHINE, but will not generate any errors if it cannot find
profile data in HKEY_CURRENT_USER.
[+] when storing profile data to the registry, if Blat encounters an access
denied error when trying to use HKEY_LOCAL_MACHINE, Blat will try to store
the profile data to HKEY_CURRENT_USER. The purpose for this is to allow
users of multiuser machines to keep their personal Blat preferences and
system administrators to put access restrictions on HKEY_LOCAL_MACHINE.
A request for this came from 'wolfgangbeyer2' on the Blat mailing list.
[*] added "<all>" and "<default>" to -profile -delete, to delete all profiles
and the default profile, respectively. Use the quotation marks to ensure
the < and > characters are included. Without the quotation marks, Windows
will interpret these characters as something else.
[*] crtdll.dll will no longer be used by blat.exe. Instead, Blat will use
msvcrt.dll after it was discovered that msvcrt.dll is significantly faster
than crtdll.dll. According to Microsoft, only Windows 95 was shipped
without msvcrt.dll. By this time, Win95 users should have installed this
.dll as a result of some other program they installed in the intervening
years. The speed difference between the two DLLs is most apparent when
using large amounts of memory. Otherwise, the size of Blat's executable
increased by only 512 bytes.
[*] if authentication is required for the server, and no password is given,
the username will still be sent. Not all users have a password.
[*] If there is no default profile and the user creates a profile (eg. test),
there is a possibility Win2K will return garbage in the userid/password
variables when trying to read the default profile. Checks were added to
reg.cpp to look for this condition. Windows XP does not exhibit this bad
behavior.
[*] when building headers for attachments, Blat will not include the pathname
in those headers. It will now look for the last path delimiter or a colon
to remove the pathname. Your recipients do not need to know where you
store your files.
[*] options for cgi support have been moved out of blatcgi.cpp and into
options.cpp next to their respective command line names. This should allow
new cgi options to be added or turned on easier. In the process, usage.cpp
has been removed, the help text moved to options.cpp, so that as new
command line options are added, the corresponding help text can also be
added at the same time in the same file. This will help eliminate adding
options in one area of Blat and forgetting to add them in another.
[*] allow binary files to be sent as the message body with base64 encoding for
email systems that do not understand normal attachment rules. This was
identified by "mduitz" on the blat mailing list on September 3, 2003.
[*] some minor changes to the usage text, mostly for consistency.
[-] changed "MAIL From:" and "RCPT To:" commands to all uppercase. These two
commands have been in Blat as shown since at least 1.9.4. A problem with
them appeared recently when a Yahoo proxy program would not accept the
lowercase versions.
[-] Blat can now send a file as your message body to SMTP and NNTP servers at
the same time. Blat used to close the file during the SMTP process, which
caused the NTNP process to fail.
[-] Blat no longer causes a GPF when quoted header lines exceeds 80 characters.
Quoted headers has been improved. Please test this very thoroughly and
report any issues you find. Credit goes to Pavel Savara from the Czech
Republic for finding this issue.
[-] the requirement for quoted headers has been relaxed a bit, in case all the
characters are lower ASCII. Bert/blatax pointed out on the Blat mailing
list that his ancient fax software was not able to accept quoted subject
lines.
[-] fixed the command line parsing for blat.dll so it can accept a single
backslash (\) character as a path delimiter, just as the blat.exe command
line does.
[-] when sending to a long list of email addresses, Blat will not GPF. The GPF
was caused if the length of the email addresses exceeded 8190 bytes. Tim
Kustner found this issue on October 16.
[-] fixed a bug that resulted from a cut/paste operation, then forgetting to
remove an argument to a function. It causes no stability issues, but when
viewing the received email it was noticed the charset= said html instead of
ISO-8859-1.
[-] added the -delay option to the usage text.
[-] the first command line option for blat.exe must be a hyphen or a filename.
[-] blat has been tested with IIS6 under Windows 2003 Server, and is now
working after a few minor changes to how variables are defined internal to
blat source code.
[-] when blat is run from other applications, blat will return back gracefully.
In previous versions, blat would issue a hard exit when it processed a
-install or -profile command, which caused the calling program to exit.
-------------------------------------------------------------------------------
2.2.0 (2003.09.17)
[+] attempt to support binarymime. If the SMTP indicates 250-BINARYMIME, and
the message is using quoted-printable mime, then only two bytes will be
converted to quoted-printable: the equals sign (=), and binary zero. All
other byte values will be sent as-is.
[+] add Message-ID: to the headers.
[+] add support for -delay <seconds> to pause between messages when using
the -maxnames option or when sending multipart messages. It is used only
for sending mail, not for posting to newsgroups.
[+] add support for -maxnames <count> to send messages to blocks of <count>
recipients. This is useful for home-based email lists with restrictions
from their ISP on how many names can be sent to per message. It does not
change the To: or Cc: lines in the message, it only changes how many RCPT
names are sent to the SMTP server.
[+] support for alternative plain text messages has been added. Use the
-htmaltf <filename> option to specify a plain text file that should be used
with your HTML message. Recipients who do not have html email support will
see the plain text. Others will see the HTML.
[*] when adding a new profile, the opposite server (SMTP v NNTP) will not be
created at the same time. If creating a new SMTP profile, NNTP server
information will not be created in the registry. If creating a new NNTP
profile, SMTP server info will not be created.
[-] fixed a bug that prevented binary files being sent as the message body. To
send binary files as the body of a message, the -uuencode or -base64 option
must be used. For example: blat binfile.exe -to me -s test -base64.
-------------------------------------------------------------------------------
2.1.1 (2003.08.13)
[*] removed support for gwinsock.dll and gensock.dll, since that functionality
is built into blat.
[*] when using the -profile option to list available profiles, quotation marks
(") will be surround the email address, just in case a people name is used
with it.
[-] one global and one static buffer variables are now being initialized /
cleared properly in the .DLL.
[-] parsing email addresses was causing memory to be corrupted if the list of
email addresses did not include people names.
[-] when checking options for missing arguments, check each argument against
the list of known options and stop if one is found. This will allow
hyphens to be used at the beginning of arguments if those arguments are
not also known option names. For example,
blat - -body "-testing-" -s "subject matter" -to me.
[-] userid/password variables cleared if there is an error reading these
values from the registry. In this condition, Win2K placed garbage in
these variables, while WinXP does not.
-------------------------------------------------------------------------------
2.1.0 (2003.07.22)
[+] lite version selectable with a compile option.
[+] add support for comma delimited filenames with -attach or -attacht or
-embed. For example, -attach *.jpg,*.gif
[+] support for signature files. Blat will include the '-- '. Use the new
option '-sigfile' or '-sig' followed by a filename.
[+] support for a random tagline through a compile-time switch. Use '-tag'
or '-tagfile' followed by a filename. This file must be text. Each
tagline must be on a single line. To have line breaks in the outgoing
email, use "\n" in the text. For example: "This is a line break.\nChip"
would become
This is a line break.
Chip
[+] support for postscript lines (PS.), like instructions for how to
unsubscribe from a mailing list. Use the option '-ps' followed by a
filename.
[+] support for automatic detection of salutations. When an email address for
the -to option has text that follows the '>', this is used as a salutation
for the message body. If the salutation has a comma, the text must be
surrounded with quotation marks.
For example: blat file -to "Chip <nul@localhost> \"Dear Chip,\"" In this
example, the "Dear Chip," will be the first line of the message, which will
be sent to "Chip <nul@localhost>". Please notice the \ before each
quotation mark, this is to tell the command line parser to keep the next
character. The two quotation marks at the end are for delimiting the
salutation, and for delimiting the whole name/email/salutation text. If
the salutation does not have a comma, then you do not need an extra pair
of quotation marks.
Salutation support does not work with -cc or -bcc names.
[+] support for the 250-pipelining option at compile time. The net effect is
to increase the .exe size by 1K without gaining anything useful at runtime.