Command-line interface (CLI) tool

Pyautomail has prepared an easy to use CLI tool which gather several useful command for creating and editing lists of your contacts emails, templates and so on.

Pyautomail CLI can be used by following commands:

pyautomail <command>

It support the following commands:

init command

Before anything else, pyautomail project should be initialized. This is done by the following command:

pyautomail init [options]

This command has the following options:

  • --db-path or -db: This option is used for setting the name of project and refers to the path of database directory.

  • --smtp-serve or -ss: This option is used for setting the smtp host of your project.

  • --smtp-port or -sp: This option is used for setting the smtp port of your project.

  • --email or -e: This option is used for setting the default email address of your project.

  • --password or -p: This option is used for setting the default email password of your project.

  • --test or -t: This option sets the testing mode and in this mode no email will be sent.

  • --help: This option is used for showing the help message.

If the init command is run without necessary options, some questions will be asked that help client to initialize the project. The questions are as follows:

  1. If --db-path or -db option is not set, the following question will be asked:

    Where do you want to initialize the automail project? [./automail-workspace]:
    

    The path or name of the directory in which the project should be initialized must be entered after this question.

    Note

    The directory should be empty or be an old pyautomail project and if that directory doesn’t exist it will be created after init command.

  2. If --smtp-serve, -ss, --smtp-port or -sp options is not set, the following questions will be asked:

    What is your smtp server? [smtp.gmail.com]:
    What is your smtp port? [465]:
    

    These two questions are about smtp server setting. The smtp host and port should be entered. (by default the pyautomail is set on GMAIL server).

  3. If --email or -e option is not set, the following question will be asked:

    Enter a default email address? [<your-email>]:
    

    The answer of this question will set a default email address for your project.

    Note

    This email address can be used as the default sender email address but you can set another email address for every list of your contacts. For more information please see register command.

  4. If --password or -p option is not set, the following question will be asked:

    If you want to save the password of default email please enter your password
    otherwise press enter to continue? [None]:
    

    This question is about default email password. If the password is entered, it will be saved in the config file. Otherwise, if it’s leaved empty the password should be entered every time you want to start a process.

    Warning

    If you want to save your password in the config file, you should know that it will be saved in plain text format. So, it is not recommended to save your password in the config file.

When the pyautomail project initialization process is done, a new directory with the name of your project will be created which the following files exist on it:

<project-name>
    |_ config.cfg
    |_ mail.db

The config.cfg file contains the configuration of your project and the mail.db file is a sqlite database which is stored the processes ans records of your project.

config.cfg:

[smtp]
host = smtp.gmail.com
port = 465
is_test = True

[account]
user = example@gmail.com
password = 12345678

[log]
file-path = ./log.log
level = 10

User can edit this file manually. But, it is recommended to use the init command for editing this file.

Important

All the other command must be run from the inside of the project folder. For more information see cli best practices

register command

This command is used to register a new list of contacts. You can register a new list of contacts by the following command:

pyautomail register <path/to/contacts/file> [options]

The <path/to/contacts/file> is the path of your contacts file. The contacts file should be a .csv file and must have a column with the name of email. Every row of this column should be a valid email address.

Other columns of the contacts file are optional and you can add as many columns as you want. The name of the columns will be used as the name of the variables in the template file. For example, if you have a column with the name of name, you can use the {{ name }} in your template file.

Additionally, if you want to attach a custom file to every email the .csv file should have a column with name of cpdf, every row of this column should be the path of your file.

There is an example of the contact-list.csv:

email,name,data1,cpdf
contact1@gmail.com,contact1,ali,/path/to/pdf1
contact2@gmail.com,contact2,mohammad,/path/to/pdf2
contact3@gmail.com,contact3,soheila,/path/to/pdf3

The register command also has some options which are as follows:

  • --email or -e: This is used for setting the sender email address of the list.

  • --title or -T: This is used to set a title for the list. The title should be unique.

  • --template or -t: The path of the template file.

  • --subject or -s: The subject of the email.

  • --custom-pdf or -CA: This is a switch option and if is set, the custom pdf file will be attached to every email. based on the cpdf column of the contacts file.

  • attachment or -a: The path of the attachment file. This file will be attached to every email.

  • --custom-pdf-dir or -cpd: The path of the directory that contains the custom pdf files. This option will be used if the --custom-pdf option is set.

  • --help: This is used for showing the help message.

If the register command is run without any option, the pyautomail will ask some questions. The questions are as follows:

What is your email address? [default(see config.cfg)]:
What is the title of your contact list? [Contact List]:
What is the subject of your email? [None]:
Do you want to use template? [y/N]:

After registering a new list of contacts, a new directory with the name of your list will be created in the <project-name>/<title> directory and returns the id of the list.

ID: 1 => Registering Process <your-email> with contacts Contact List\contact.csv

Additionally, all registered lists can be seen by the list command.

start command

This command is used to start a process. You can start a process by the following command:

pyautomail start <process-id>

list command

This command is used to show all registered lists. You can see all registered lists by the following command:

pyautomail list

list-records command

This command is used to show all records of a list. You can see all records of a list by the following command:

pyautomail list-records <process-id>

stop command

This command is used to stop a process. You can stop a process by the following command:

pyautomail stop <process-id>

resume command

This command is used to resume a process. You can resume a process by the following command:

pyautomail resume <process-id>

delete-process command

This command is used to delete a list. You can delete a list by the following command:

pyautomail delete-process <process-id>

Warning

This command will delete all data of the list. So, be careful when you want to use this command.

delete-record command

This command is used to delete a record of a list. You can delete a record by the following command:

pyautomail delete-record <process-id> <record-id>

Warning

This command will delete the record of the list. So, be careful when you want to use this command.