How to setup SendGrid Email Service on Unix
Before you setup SendGrid, you need to setup Twilio, Follow the tutorial how to setup Twilio
Once Twilio is seup, we can install SendGrid using pip
pip install sendgrid
echo "export SENDGRID_API_KEY='api_key'" > sendgrid.env
echo "sendgrid.env" >> .gitignore
source ./sendgrid.env
echo 'source ./sendgrid.env' >> ~/.zshrc
Thats it now you should should able to send email using the following code
ps -aux | twilio email:send \
--from="me@example.com" \
--to="me@example.com" \
--subject="Current processes" \
--text="See attachment"'
Lets do an example of sending Nginx summary using sendGrid...
date
date +"%FORMAT"
todaysdate=$(date)
heading="top 20 most requested broken links"
top_20_most_requested_broken_links=$(awk '($9 ~ /404/)' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20|sed 's/$/<br>/g')
To make sure every result is printed on new line we need to append <br>
text=$(echo -e "$heading<br>$top_20_most_requested_broken_links<br><br>")
twilio email:send \
--from="from_email" \
--to="to_email1,to_email2" \
--subject="Nginx Summary $todaysdate" \
--text="$text"
How to use SendGrid using Python
Install latest Python client using pip.
pip install sendgrid
If you see some syntax error such as the one below...
TypeError: __init__() got an unexpected keyword argument 'html_content'
Make sure you install the latest version. You can check the latest version here github.com/sendgrid/sendgrid-python/releases
pip install sendgrid==6.0.5
Once you have it installed, use the following code to send email...
message = Mail(
from_email='%s'%from_email,
to_emails='%s'%to_email,
subject='Please confirm your email - From example.com',
html_content='<strong>and easy to do anywhere, even with Python</strong>')
try:
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(str(e))