Giter Club home page Giter Club logo

listman's Introduction

Listman

This is a simple mailing-list manager.

It uses a separate SMTP configuration to the main Nextcloud app, because often your "Transactional-only" email provider will not allow mailing-list type email.

You will need to use the app as an Admin user to set those SMTP settings before a non-admin user may use it.

Features:

  • Multiple mailing-lists
  • Subscribe/Unsubscribe forms
  • A Web-view of each email sent, with "share on X" for
    • facebook
    • twitter
    • linked in
    • pinterest
    • Telegram
    • Email
    • Copy-link-to-clipboard
  • Emojii React buttons on each email, tracked on the web-view page
  • Every email has Un/Subscribe link
  • Every email has "Forward" link, linking to the web-view
  • Can assign a third button text and link per mail-list (I label it "chat" and link to a telegram group, you do what works for you)
  • Footer per list for every email sent.
  • Allows subscribe-form to be generated for external site to link to Listman
  • Max-Per-Day email settings, with queueing and warnings to users when exceeded
  • Slowly but exponentially increase in send-rate
  • HTML:
    • Headers
    • Links
    • Image-links
    • Bullet-links
  • Sane plain-text version of every email too.

Screenshots

The compose screen and a web-view of the email sent:

interface email

Message Syntax

In composed messages you may use special commands. Put them in a line of their own starting with a slash.

Headers

EG:

   /h1 Welcome To This Email

Can use /h1 or /h2 or /h3 or /h4

The rest of the line specifies the headline text.

Links

EG:

   /link https://dalliance.net/ My Home Page

Specify the link first, then the text for the link in the rest of the line.

Bullet Links

EG:

   /*link https://dalliance.net/ Homepage One
   /*link https://starshipsd.com/ My VR Cartoons
   /*link https://wordcloudtarot.com/ My tarot readings
   /*link https://tentacles.org.uk/ My tentacle monster cartoon

I find I want a bullet-point list of links often, so that's for that.

Image Links

EG:

   /img https://dalliance.net/avatar.jpg My Avatar with alt-text

Add an image in-line by linking to the Image's URL and adding alt-text/title for the rest of the line.

Description

Your lists are in the left-hand column. Click one, or the "new list" button to create one.

You then have four buttons on the right-hand display:

  • Show Details
  • Show Members
  • Show Messages
  • Show Subscribe Form

Show Details

Allows you to edit the title of the list, it's description, the name and email of the "sender", the name and link for the 3rd button, a footer, and a URL to return to after a subscribe.

Show Members

Lists the member's names, emails, and their status.

Status may be:

  • Unconfirmed
  • Subscribed
  • Blocked
  • Queued

It only hits "Queued" if we can't send a confirmation message due to sending-limits.

You may add a new member, edit or delete existing ones, but usually you'd prefer to allow users to sign up with the subscribe-form I'd think.

Messages only get sent to "Subscribed" members, though every morning the Queued ones get converted into "unconfirmed" as some confirmation emails get sent.

Show messages

Lists the messages sent to the list, and allows composing a new one.

Each message has a "Web View" link to preview how it should look. Viewing that link will increment the view-counter for the message.

Each message has a "Stats" link, to show (or fetch via api) the number if views and reactions to the message.

Each message has a "widget" button, which will show the HTML of a widget to embed in a web-page equivalent of the message. Paste this into a web-page to make it have react-buttons and view-counters similar to the web-view.

It is NOT "what you see is what you get", email never can be really.

You may special commands to add links, images, headers etc.

It has a "Send to all" button, which will queue sending to all the members of the list.

Show Subscribe Form

You can copy/paste the text shown into your website to add a "subscribe" form to that website.

It also has a button linking to the native subscribe-form in case there is no website to link from.

Settings

Settings panel is shown only to admin Nextcloud users.

It allows setting of SMTP details, and the limit of max-per-day emails that the system will send.

Install

To install it change into your Nextcloud's apps directory:

cd nextcloud/apps

Then run:

git clone https://github.com/revpriest/listman.git listman

Then install the dependencies using:

make composer

Frontend development

  • Run make dev-setup to install the frontend dependencies
  • To build the Javascript whenever you make changes, run make build-js

listman's People

Contributors

fff27 avatar revpriest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

fff27 k4my4b

listman's Issues

Trim down release tarball size

The top five largest directories in the 20.0.0 release tarball are:

305M    node_modules
15M     vendor
3.6M    js
2.2M    build
500K    package-lock.json

Only the package-lock.json and js are really needed for the release, at least unless there is some magic going on that sidetracks Webpack in some way.

Nevertheless, even if that's the case, that 305 MiB directory is clearly a bit too much for this little app, don't you think? :-)

Besides: The release tarball is currently at https://dalliance.net/listman.tar.gz, which makes it hard to fetch an older version. It's probably a good idea to upload each tarball with its version, like this: https://dalliance.net/listman-20.0.0.tar.gz

Can't find that list

When I use the "Link to Native Form" button on a list that I have saved, and submit the name/email/amth problem, here's what I see:

image

Sync members with nextcloud groups

Hey.

looks promising, so I'm gonna leave a few feature requests here, one per issue.

I would love to see a sync between nextcloud groups and members, meaning I can add a group and everyone of that group gets the mails then, new group members also gets them and ppl who leave that group gonna get unsubscribed. Similar to the new feature in talk (nextcloud/spreed#1329).

Share Mailing Lists

I have created a mailinglist, but others don't seem to be able to see it.

Is it possible to share lists with groups or members? Like sharing files.

If not - would be nice to have! Otherwise this is only useful on a personal basis, doesn't make much sense to have it in a collaboration context.

Thanks for your efforts!

CAPTCHA

Running it for a while in production, it's obviously being treated as a login field by spam-robots.

sigh

So could probably use some sort of captcha. Nothing that does tracking or relies on tracking though.

SMTP setting missing STARTTLS ?

i cannot achieve to send mail ...
create a list , members , click on send all : nobody receive mail.

Mar 9 00:28:33 mail1 postfix/submission/smtpd[889279]: connect from web2.tld.org[10.10.10.112] Mar 9 00:28:33 mail1 postfix/submission/smtpd[889279]: lost connection after CONNECT from web2.tld.org[10.10.10.121] Mar 9 00:28:33 mail1 postfix/submission/smtpd[889279]: disconnect from web2.tld.org[10.10.10.112] commands=0/0

Queued Messages

Hi,
I have 26 queued messages but a rate of 224 per 5 minutes and no current warnings
how can I delete the queued messages and set the counter to 0.
Thank you very much for the help and
greetings

Undefined variable

hello , thanks for all,
but i have a multiple error :

[PHP] Erreur: Undefined property: OCA\Listman\Db\Maillist::$getSuburl at /var/www/vhosts/****/nextcloud/apps/listman/lib/Service/ListmanService.php#120

[PHP] Erreur: Undefined variable $counter at /var/www/vhosts/****/nextcloud/apps/listman/lib/Controller/ListmanController.php#215

[PHP] Erreur: Undefined variable $counter at /var/www/vhosts/****/nextcloud/apps/listman/lib/Controller/ListmanController.php#212

so the module do not work at home :-(

"Could not fetch lists" and "Could not create the list"

I had listman installed and I almost had it working, as was getting signups from website listing passed onto listman as they should - but emails still were not sending from listman while using the same settings as smtp for nextcloud.
I had a list of 12 unsent emails that were no longer there, so I deleted them from mariadb and reinstalled.
Now I can't get any lists saved and none can get retrieved. What tables do I need to add to mariadb and should all permissions for nextcloud/apps/listman user:group be www-data:www-data or listman:www-data?

Thanks for any advice as I really want to get this working.

Nextcloud: 27.1.9

Listman: 27.1.4

PHP: Version: 8.2.18
Memory limit: 1 GB
Max execution time: 3600
Upload max size: 100 GB
Extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, random, Reflection, SPL, session, standard, sodium, cgi-fcgi, mysqlnd, PDO, xml, apcu, bcmath, bz2, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, gmp, iconv, igbinary, imagick, intl, exif, msgpack, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, zip, memcached, Zend OPcache

Mysql:
Version: 10.6.16
Size: 504.5 MB

Operating System: Linux 5.15.0-102-generic x86_64
CPU: AMD EPYC 7282 16-Core Processor (8 cores)
Memory: 23.46 GB

Received InvalidUnicodeValueError

Hi,

The script looks great and I tested it on a Win10 machine with Python 3.9.4. I tried to download an album from Deezer (token set) and got the following error message:
`
InvalidUnicodeValueError

Invalid unicode value at line 3 col 13

at C:\Program Files\Python39\lib\site-packages\tomlkit\parser.py:897 in _parse_escaped_char
893│ self.inc_n(len(ue) + 1)
894│
895│ return u
896│
→ 897│ raise self.parse_error(InvalidUnicodeValueError)
898│
899│ raise self.parse_error(InvalidCharInStringError, self._current)
900│
901│ def _parse_string(self, delim): # type: (StringType) -> String

If this was unexpected, please open a Bug Report at https://github.com/nathom/streamrip/issues/new/choose`

Does this relate to my local config or is there anything I should further configure in the .oml file?

Thanks in advance for any help!

Description could be clearer

I would like to suggest one tiny change to the listing on apps.nextcloud.com: Right now, my first interpretation was, a mailing list software like mailman. I think it would be good to make it clear that this is currently not a mailing list (everyone can send to it; mails will be distributed) but a newsletter/campaign tool (one person creates a mailing and it will be distributed to all subscibers. I'm aware of #4, but since this is probably not going to change very soon, I think the description should reflect that.

Emails not being sent

When I send a message using the web form to a list with multiple members, nothing happens. There's nothing in nextcloud.log, and my mail server is never contacted.

The admin UI shows:
image

I'm using the same host/port/username/pw that I use for nextcloud's email server, so I know it's not a configuration issue.

20.0.1 errors

I have installed Listman 20.0.1 on Nextcloud 22.0.0 (docker image) and configured the SMTP server settings.

When I try to send an email, these errors show up in the log:

[PHP] Error: Undefined variable: plain at /var/www/html/custom_apps/listman/lib/Service/ListmanService.php#127

GET /index.phpman/message-view/[redacted]
from [redacted] by [redacted] at 2021-07-15T15:30:21+02:00

and also:

[PHP] Error: Array to string conversion at /var/www/html/lib/private/Security/CSP/ContentSecurityPolicyManager.php#83

GET /index.phpman/message-view/[redacted]
from [redacted] by [redacted] at 2021-07-15T15:30:21+02:00

and finally:

[PHP] Error: array_flip(): Can only flip STRING and INTEGER values! at /var/www/html/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php#442

GET /index.phpman/message-view/[redacted]
from [redacted] by [redacted] at 2021-07-15T15:30:21+02:00

Delete unconfirmed

The robots leave a trail of unconfirmed list-members clogging up the database and making it hard to see the real list-members.

Needs the nightly to do something like delete all the unconfirmed members that haven't touched it for a week. Their links are expired by then anyway.

Is it possible to create/answer to an mail via email?

Hey,

haven't set it up completely, cuz without #3 it is not fitting my intentions, so here just a question I haven't found in description:

As a member would I be able to send an email to the list? And would I be able to answer via email?

smtp connection impossible to make it working

Hello,
I run nextcloud 23.0.5 with listman 20.1.1 on ubuntu server.
My mails are configured in postfix with ispconfig.

Nextcloud is sending emails and my mail server is reachable by telnet mydom.tls 587

I can't succeed in sending mail with listman. I have big difficulties to troubleshoot.

I open vendor/phpmailer/phpmailer/src/PHPMailer.ph
I set $SMTPDebug = 1 and $Debugoutput = 'echo' and obtain

2022-06-20 16:55:06     SMTP ERROR: Failed to connect to server:  (0)
2022-06-20 16:55:06     SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Quite short to troubleshoot !

I try to modify $SMTPSecure = 'tls'; to force tls. No success.

What is very strange : for all these tests, I see no connection on my mail server. No connection attemp !
Same mood : for at least 5 tests, I see in browser "latest Warn" box

 2022-06-20 17:00:05: Not sending to [email protected] today, already passed sending limits. Will do it later

Mail limit is at 500...
I made 10+ tests...
I try to see if number of mail sent is in mysql : seems not to be !

Any idea ?

More undefined variables

20.0.3:

[PHP] Error: Undefined variable: message at /var/www/html/custom_apps/listman/templates/notfound.php#5

POST /index.phpman/subscribe/sub
from redacted by redacted at 2021-07-16T14:27:23+02:00

Maybe you could figure out why your PHP isn’t warning you about undefined variables, because this way isn’t very efficient.

import/export Members

I have almost 100 members in mailchimp, it's hard to fill out the dialog for every member

20.0.2 errors

Here’s what I’m seeing with 20.0.2 on Nextcloud 22.0.0 Docker:

[PHP] Error: Undefined variable: url at /var/www/html/custom_apps/listman/lib/Service/ListmanService.php#946

GET /index.phpman/subscribe/redacted
from redacted by redacted at 2021-07-16T01:28:37+02:00
[PHP] Error: require(): Failed opening required '/var/www/html/custom_apps/listman/lib/Service/../../vendor/autoload.php' (include_path='/var/www/html/3rdparty/pear/archive_tar:/var/www/html/3rdparty/pear/console_getopt:/var/www/html/3rdparty/pear/pear-core-minimal/src:/var/www/html/3rdparty/pear/pear_exception:/var/www/html/apps:/var/www/html/custom_apps') at /var/www/html/custom_apps/listman/lib/Service/ListmanService.php#778

POST /index.phpman/subscribe/redacted
from redacted  by redacted  at 2021-07-16T01:28:30+02:00

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.