Open In App

Using curl to send email

In this article, we shall see how to harness the power of the “curl” command line tool and Gmail SMTP server in order to send an email programmatically using a bash script, “curl” is a versatile and powerful utility command line tool for making HTTP requests. And is primarily known for transferring data from and to servers using various kinds of protocols such as HTTP, HTTPS, FTP, FTPS, and SCP. “curl” is an open-source tool and is available on various unix-based systems such as Linux and macOS. It is also available for the Windows operating system as well.

Features

Installation of CURL

Step 1: Update and refresh the package repository using the following command.



$ sudo apt update

Step 2: Install the curl command line tool using the following command.



$ sudo apt-get install curl

Step 3: Check whether curl was successfully installed using the following command.

$ curl --help

The Approach

Step 1: Obtain the SMTP Gmail server details. Here we will be sending the email through the Gmail SMTP server. For this we might need to obtain the Gmail SMTP server details, which includes the following.

NOTE: Regular Gmail password for SMTP authentication is not recommended if you have two-factor authentication (2FA) enabled. Generating and using an App Password is a more secure way to authenticate your email client or script when sending emails through Gmail’s SMTP server.

Step 2: Create a bash script using the following command, and open the file using a text editor of your choice.

$ touch email.sh

Step 3: Use the below shell script.

#!/bin/bash

# SMTP server settings for Gmail
SMTP_SERVER="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USERNAME="YOUR_GMAIL_ADDRESS"
SMTP_PASSWORD="YOUR_GMAIL_PASSWORD"

# Recipient email address
TO="RECIPIENT_EMAIL_ADDRESS"

# Email subject and body
SUBJECT="Hello from Curl"
BODY="This is the email body sent using Curl and SMTP."

# Construct the email message
MESSAGE="Subject: $SUBJECT\n\n$BODY"

# Send the email using Curl
curl --url "smtp://$SMTP_SERVER:$SMTP_PORT" \
--ssl-reqd \
--mail-from "$SMTP_USERNAME" \
--mail-rcpt "$TO" \
--user "$SMTP_USERNAME:$SMTP_PASSWORD" \
--tlsv1.2 \
-T <(echo -e "$MESSAGE")

echo "Email sent to $TO"

Step 3: Modify the permissions to executable and then run the script.

chmod +x ./email.sh

Step 4: Execute the script using the following command

./email.sh

Output

Conclusion

In conclusion, utilizing the curl command to send emails is a powerful and efficient method for automating email communications within your applications or scripts but it is not necessarily the recommended way of sending an email via scripts due to security concerns. With the guidance provided in this article, you have learned how to configure curl to send an email with the help of the Gmail’s SMTP server.

Article Tags :