Skip to content

nextcloud/files_frommail

Repository files navigation

files_frommail

Scrutinizer Code Quality

Files From Mail allow an admin to link a drop-mailbox to Nextcloud.
This way, you can set a mail address (files@example.net in our example) and every mails+attachments send to this mail address will be automatically be saved on the cloud.

dependencies

This app will need Mailparse
If not already installed on your server:

$ sudo pecl install mailparse

If the installation failed with a message about mbstring not installed (but mbstring is already installed) you will need to install the Mailparse extension manually:

$ pecl download mailparse
$ tar -zxvf mailparse-3.0.2.tgz
$ cd mailparse-3.0.2/
$ phpize
$ vi mailparse.c

remove lines 34-37:

#if !HAVE_MBSTRING                                                                                                                                                                    
#error The mailparse extension requires the mbstring extension!                                                                                                                       
#endif                          
$ ./configure --with-php-config=/usr/bin/php-config
$ make
$ sudo make install
$ sudo echo "extension=mailparse.so" > /etc/php/7.3/mods-available/mailparse.ini
$ sudo ln -s /etc/php/7.3/mods-available/mailparse.ini /etc/php/7.3/apache2/conf.d/20-mailparse.ini
$ sudo apachectl restart

configuration mail server

You now need to tell your mail server that any mails coming to a specific address (in our example: files@mailserver.example.net) will be redirected to a PHP script: Add this line to /etc/aliases:

files: "|/usr/bin/php -f /path/to/NextcloudMailCatcher.php"

The NextcloudMailCatcher.php can be find in the /lib/ folder of the apps. The script is independant of the rest of the app and can be copied alone on your mail server

Recreate the aliases db:

$ sudo newaliases

Edit NextcloudMailCatcher.php and edit the few settings:

$config = [
  'nextcloud' => 'https://cloud.example.net/',
  'username'  => 'frommail',
  'password'  => 'Ledxc-jRFiR-wBMXD-jyyjt-Y87CZ',
  'debug'     => false
];

Note: the password needs to be a token generated from the webclient in Settings / Security / Devices & session

You can test your setup by running:

$ php -f ./NextcloudMailCatcher.php test

Virtual domain

In case you're using virtual domain (postfix), you will need to create an alias in your MTA:

files@example.com -> files@mailserver.example.net 

Add the drop mailbox address to Nextcloud

To only create the right folder on the right mail address, the app will filters unknown mail addresses. You will need to add the drop-mailbox:

./occ files_frommail:address --add files@example.com

You can choose to secure the mails and ask for a password:

./occ files_frommail:address --password files@example.com your_password

Doing so, only mails containing ':your_password' in their content will be saved.

Changing the generated filename id

By default the generated files start with an identifier in the format 'Y-m-d H:i:s'. This identifier can be changed using

./occ config:app:set --value <NEW FORMAT> files_frommail filename_id

The <NEW FORMAT> value is a string using PHP date() format.