Some highlights of SlyMail:
- It has a text-based user interface with a look & feel (at least somewhat) similar to my DDMsgReader & SlyEdit mods for Synchronet
- It's multi-platform: It works on Linux and Windows, and should also build for Mac OS, BSD, and other *nix-style OSes
- Compatibility with ANSI, as well as color codes of various BBS software
Some highlights of SlyMail:
Are you planning on adding the ability to send a REP packet back to the remote host?
Are you planning on some light lastread pointers maybe showing "New" alongside "Msgs" so you know which messages you have read out of which ones are in the packet?
Do you have future plans, or are you just going off of feedback and feature requests from here on out? I only ask, because I don't want to ask a bunch of questions you may already be in the works of. ;)
I think that may be a more complicated thing, and maybe I'm wrong, but
after uploading the REP packet back to the host, I'm not sure how I
would trigger the host to import the REP packet, or if that normally
happens automatically. Now that I think about it, I could look at what Synchronet does when a REP packet is uploaded. Since Synchronet's
source code is available, that should be easily accessible, and maybe
even the AI could look at Synchronet's code regarding REP uploads. When
REP packets for Dove-Net are uploaded, their messages will get imported,
so I'm wondering that Synchronet does auto-import messages when a REP
packet gets uploaded.
I'm not sure yet, but perhaps.
I'm not entirely sure yet. :) I was initially just going to go off feedback, but when I start working on a project, I start thinking about things to improve to make it work well and make it easy to use, etc., so
I may end up down a rabbit hole with this. :)
It most definitely does automatically import it. All you have to do is the reverse of how you download the QWK packet. FTP it to the same directory you download the QWK packet from, and the host will take care of the rest.
Thanks for the feedback on SlyMail. I've saved your email and will look
at the issues as I have time.
I've released a new version of SlyMail, which improves (or maybe even
fixes) some of the things you mentioned:
I've released a new version of SlyMail, which improves (or maybe even
fixes) some of the things you mentioned:
I posted a few minutes ago, but I've released a new vresion that includes being able to upload a REP packet to the host. I've tested it, and
indeed, messages from the REP packet get auto-imported on the BBS that
way.
Quote character works much better now.
I've also realized that I had this option wrong:
; Whether to word-wrap quoted lines to the terminal width wrapQuoteLines=true
With the description, originally, I had it set to false, because I *didn't* want to wrap to terminal width (160 characters). Is the description wrong? Or is
true/false backwards?
Setting it to true definitely started quoting at 76 characters, though..
The settings options now show the check mark, so I'm going to assume ANSI in a UTF-8 terminal may be getting closer. I'll let you know when I get to a message with ANSI in it.
Home and End keys are still not working here, but this could be a Putty setting I just don't have enabled.
Definitely quite a bit less screen flickering, too!
"/Q" on the first line of a newly replied to message doesn't seem to be bringing up the quote window any more. I had to use "CTRL-Q" for this message. However, I can hit "/Q" on any line after the first one and it works.
Looking great so far, besides the new "/Q" on the first line issue. I had to hit enter once to get to the second line, and it worked.
By the way, ANSI displays perfectly now. ;)
Feature request: the ability to read/edit your already written messages. This REP packet is going to contain an empty message that I couldn't find/edit/or delete before sending it out.
Quote character works much better now.
Good to hear.
; Whether to word-wrap quoted lines to the terminal width
wrapQuoteLines=true
I think I had forgotten about that setting, so it might just not be
working correctly. When I was updating SlyMail, I was thinking I thought it would be best to just wrap quote lines to 79 characters, since an 80-character terminal is a fairly common size. But SlyEdit has a wrapQuoteLines setting, so maybe there's value in having it. I'll have
to look at that again.
I'll add that as something to implement. Are you thinking you'd want SlyMail to prompt the user whether to read/edit the message immediately
upon saving the message, or would you want this to be a feature where the user can go back later and edit already-written messages at some point before sending the REP packet?
Thanks. :)
I'm not sure how you meant to implement it, but maybe just the description in the .ini is wrong? Rather than "the terminal width" it should be "to the specified characters set below" or something.
Using the "delete" and "backspace" keys to reformat the above quoted text got me into a bit of a pickle, as well. The line below the line I was editing got pulled up to the line I was editing, including the quote characters.
Probably not a prompt. I think the second option would suffice. You could possibly store them in their own area or something, so one could view all of their
messages before creating the REP packet.
That sounds as expected; that's how the editor works in general, whether
a quote line or not. What would you expect it to do in that case for
quote lines?
I'll have a look.
I'll have a look at implementing that.
I guess I've just spoiled myself with Golded and Thunderbird, but quoted lines seem to be able to be edited without any wrapping (or unwrapping) of lines. For example, if I quote some initials (eg. " > XX> ") and want to remove themmanually (eg. " >>> "), it would just pull the current line back 3 characters
without
unwrapping the next line on to the current line, keeping the 76 character wrap limit in tact. This also seems to work in nano when using it as an external editor.
Speaking of which, how do I use nano as an external editor here? I have "useExternalEditor=true" and "selectedEditor=nano" at the moment, and it didn't work.
I'm confused by the "must match an [external_editor:NAME] section" part of the description.
Since SlyMail really has nothing to do with a BBS, I think one should be able to use "nano" if it is in your PATH, or even the full path to it (eg. /usr/bin/nano), but have no idea what your description means.
Before I forget, you have "userName=Nightfox" in the default slymail.ini. Might want to remove that, or change it to something more "default" so people don't accidentally post as you in the future. ;)
I noticed when viewing the message I wrote in SlyMail with another method (in this case, Thunderbird specifically), my written text is wrapped at the screen width I used when I wrote the message. I first noticed this when you quoted a couple of my previous messages so tried to investigate more..
https://pharcyde.org/slymail_quotewrap.png
I think I see what you mean. I've added that as an enhancement
issue on GitHub.
I think the easiest way to set up Nano as an external editor would
be to use the config program - There's a section to add external
editors in there, similar to the way you'd add external editors in
SCFG for Synchronet. You can set the name to Nano, an then in the
setting for which external editor to use, choose Nano. You can look
at the .ini file afterward to see what it looks like.
And I was thinking, I might remove slymail.ini from the releases and
from the repo; When you run slymail or config, it should generate a slymail.ini in your .slymail directory from your home directory, if
it doesn't do that already.
Thanks; I've added this as a bug in GitHub.
And I was thinking, I might remove slymail.ini from the releases and from
the repo; When you run slymail or config, it should generate a slymail.ini
in your .slymail directory from your home directory, if it doesn't do that
already.
Generated on the first use of the program wouldn't be a bad idea, as long as it works. Granted, keeping a "default" .ini to look back on still isn't a bad idea, either. If you go the first route, maybe have the config run automatically upon first startup, so that the .ini can be generated with some user defined settings already, instead of the defaults?
Thanks; I've added this as a bug in GitHub.
Some people are picky, and so far you haven't been.. but would you rather the bug reports and feature requests be on github? Ever since we started going back and forth about this, I did notice we were in the AGN_ADS area here and may not be the greatest place for everyone to know what's going on.. and while I don't care where it is, you might prefer it to all be in one place. ;)
One issue I thought of is that when it's distributed as a zip file, I
feel like having slyedit.ini included in the zip file might make it a
little confusing because SlyMail will end up using slymail.ini in the
user's .slymail directory rather than slymail.ini in the current
directory.
:) I'm not really picky on that, but you can go ahead and file issues
on GitHub:
https://github.com/EricOulashin/SlyMail/issues
I've added some issues there too, so it would be good to see if an issue already exists before creating a new issue. Also, you can comment on
any existing issues if you have thoughts on it if you think it should
behave differently than the issue describes.
I don't mind talking about issues here either, but as you said, the ads
echo might not be the best place; perhaps the 'general' echo would be
better for that.
I'm also managing my time too, as I'm doing a job search right now, and
I need to set aside time for that.
You could just rename it to something like "slymail_default.ini" or "slymail_example.ini" or something like that, so it makes it obvious it's not the /actual/ config file?
If SlyMail automatically creates a slymail.ini in the user's .slymail directory, based on the settings you specify in config or within the configuration dialog in SlyMail itself, I've been wondering what the
purpose would be of having the .ini at all in the release zip file or in
the GitHub repository. I suppose a user could want to edit it with a
text file first and then manually create their .slymail directory and
copy the .ini file over.. But I'm not sure what other reasons there may
be for keeping the .ini in the zip or GitHub repo.
One example is that some people would rather edit an .ini manually with a text editor than use a GUI config, always. Having an example .ini to look back on is sometimes helpful if there isn't commented out default settings in the *actual* config file.
If you remember, I had asked you why when I tried to set nano as my external editor it didn't work (via editing the .ini), until I actually found it in the GUI config and figured out how it actually stores that setting - which was way off from what I had assumed.
I seem to recall you also saying that SlyMail could run its
configuration program on first startup? After that, the user could
always edit it with a text editor. Do you no longer think that would be acceptable?
Either way, I suppose I'll leave the .ini in the install zip & GitHub
repo. I just think there should then be some clear instructions
somewhere that that isn't the .ini file that will be used, and the .ini
file will be created in the .slymail directory in the user's home
directory, and that's the one that will be used.
I've made a new release of SlyMail, which should hopefully address/fix
some of the issues we've discussed (I've added notes in the change log in the release page):
If you'd rather pull the changes and build it yourself rather than
download one of the binary release zips, you can do that too (not sure if that's what you've been doing already).
Re: New offline QWK mail By: Accession to Nightfox on Mon Mar 30 2026 06:23 pm
I've made a new release of SlyMail, which should hopefully address/fix
some of the issues we've discussed (I've added notes in the change log in the release page):
https://github.com/EricOulashin/SlyMail/releases/tag/SlyMail_054
If you'd rather pull the changes and build it yourself rather than
download one of the binary release zips, you can do that too (not sure if that's what you've been doing already).
Nightfox
--- SBBSecho 3.37-Linux
* Origin: Digital Distortion: digitaldistortionbbs.com (46:1/150)
I've made a new release of SlyMail
I've made a new release of SlyMail
I had to edit this pending message, and wrote this just to send it out with some content.
SlyMail sent this to my external editor (nano) so I could reply, and while I aborted the message (I didn't save it), SlyMail still kept it as a pending message. That probably shouldn't happen.
I've made a new release of SlyMail
Before I forget, I'm displaying the kludges, and "TZ: fe5c" seems to be showing, and I don't know what that is. Are you trying to do "TZUTC: "?
There also seems to be a lot of kludge lines missing, but I'm not used to the QWK format, which probably carries a lot less so that's probably why I noticed.
Lastly (for this run, anyway), I had 8 messages in AGN_ADS when I grabbed my QWK packet, and there was a checkmark under the "New" tab. Once I read all 8 messages and went back to the sub-board (maybe Conf in this case?) list, there was still a checkmark under the "New" tab.
I imagine this would need some kind of implementation of last read pointers, which I don't think you've done (or are going to do?).
If you don't plan on it, then the "New" tab, or even any keeping track of read/unread messages is kind of pointless.
1) The MSGID kludge is still at the top of all messages that includes ANSI, whether kludges lines are turned on (expected) or off (not expected).
2) If you're using UTF-8 in your local version, take a look at the AGN_TST area. It looks like some of those messages that contain high ascii (CP437) characters aren't displaying properly.. and while I want to assume it's because none of them contain a "CHRS: " kludge, I'm unsure as to what is going on there. I'd imagine if ANSI can display properly, those messages should be able to also..?
Looking great dude!
Do you mean you initially had an empty message, then went back to
edit it, then aborted, and it still sent out that message?
If you aborted out of the editor, I'd think the editor would not
have saved the changes.. So I'm a little confused - What was the
original message, and what did you add when editing the message?
I actually hadn't directly done anything with those; it must have
been something Claude AI decided to do. I'm actually not entirely
sure what "TZ: fe5c" means or what that is; and does "TZUTC" mean
UTC time zone?
I'll have to file that as an issue and look into it later.
Yeah, it doesn't keep track of last read messages yet, so it
probably thinks any message in a packet is "new".
I do plan to implement last read pointers at some point (not sure
where you got the impression that I wasn't).. I had filed an issue
for that a couple weeks ago:
I haven't gotten to that yet, so when I get to that, hopefully that
fixes the "New" indicator issue.
I'm not entirely familiar with what the MSGID kludge is. I'd need
to look that up to learn more about it, and probably other kludge
lines too, to understand what they're for.
No, it wasn't empty. SlyMail sends the quoted text over to nano. When I got into nano, I hit CTRL-X and then "N" so as to not save. When I got back to SlyMail, it still said it was a pending message, and asked me if I wanted to make a REP packet.
Yes, I aborted out of the editor, SlyMail still considered it a pending message, and when I went to edit it with SlyMail, it gave me the quoted text I originally aborted out of nano with. When I edited the message, I added all of the unquoted text you replied to.
I'm not asking for anything outside the QWK standards, so if everything is correct, by all means leave it. I just have no idea what "fe5c" means. ;)
The only assumption I had was that you haven't gotten into lastread stuff yet.
I would imagine it would. With that said, and once this is actually implemented, do you plan on adding another column between "Msgs" and "New" with "Unread"? ;)
No, it wasn't empty. SlyMail sends the quoted text over to nano. When I got into nano, I hit CTRL-X and then "N" so as to not save. When I got back to SlyMail, it still said it was a pending message, and asked me if I wanted to make a REP packet.
fe5c could be a hexadecimal number, which is 65116 in decimal,
though after trying to do a few calculations, I'm still not sure
what that number would represent. I'll need to look into it.
I actually did ask Claude AI to implement some tracking of last-read pointers, which should be in this latest release. In your .slymail
directory from your home directory, there may now be a file called lastread_<QWKID>.json (where <QWKID> is the QWK ID of the BBS you
got it from). Maybe SlyMail still isn't keeping good track of those
last read mesasge numbers everywhere.
Then I tried subtracting it from 65536 for whatever reason I don't know (maybe because QWK format stuff still has 16bit limits or something?), ended up with 420. I double checked all of your messages, and didn't see any posted at or near 420 (even a couple hours each way). So, I'm at a loss and am probably way off anyways. ;)
I was thinking "New" and "Unread" would mean the same thing for a
QWK reader - It seems that a BBS would only include messages in the
QWK packet if they're new messages for you (which you haven't read
yet) - but maybe I'm mistaken about that.
I've just pushed an update just now that should fix that issue, so
if you want to pull the latest changes and rebuild, you can try it
out.
I've just pushed an update just now that should fix that issue, so
if you want to pull the latest changes and rebuild, you can try it
out.
The "New" column is currently only a check mark if there are new messages in any listed area. Once all 10 of those messages are read, I would assume the check mark would disappear.
Just looking at how MultiMail handles this, it looks like the area#, and description is highlighted if there are new messages (bright cyan whereas any areas without new messages are regular cyan; kind of like how SlyEdit does it, I believe). Then, there are only two columns on the right, "Total" which would be the same as your "Msgs" column, and "Unread".
When I go into a different area, read two messages, and back out. "Total" shows 22, "Unread" shows 20, and the entire line stays highlighted. Read messages end up with a star next to them in the message list.
Then, when I read all messages in the area, "Total" stays 22, "Unread" is 0, and the entire line is back to regular cyan (ie: not highlighted any more).
"The message was not changed in the editor. Message not posted. Press any key..."
Much better, thank you. ;)
I've also noticed that the "New" column is updated with no check mark after reading the entire area now. Thumbs up!
420 looks like the most reasonable number of all of this though, but
like you said, I'm still not sure what that would mean. If it's
minutes, 420 would be 7 hours, but I'm not sure if that would be
applicable (I don't think +7 would be right, and -7 from UTC might
be too far west - although I think -7 from UTC is considered to be
my time zone accounting for daylight saving time; normally we're -8
here).
| Sysop: | Eric Oulashin |
|---|---|
| Location: | Beaverton, Oregon, USA |
| Users: | 139 |
| Nodes: | 16 (0 / 16) |
| Uptime: | 05:48:36 |
| Calls: | 8,136 |
| Calls today: | 7 |
| Files: | 9,443 |
| D/L today: |
360 files (81,897K bytes) |
| Messages: | 405,725 |
| Posted today: | 4 |