# Code from best solution in page below:
# https://help.zoho.com/portal/community/topic/zoho-mail-servers-reject-python-smtp-module-communications

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

# Define to/from
sender = 'sender@example.com'
sender_title = "Allan Smith"
recipient = 'recipient@example.com'

# Create message
msg = MIMEText("Message text", 'plain', 'utf-8')
msg['Subject'] =  Header("Sent from python", 'utf-8')
msg['From'] = formataddr((str(Header(sender_title, 'utf-8')), sender))
msg['To'] = recipient

# Create server object with SSL option
# Change below smtp.zoho.com, corresponds to your location in the world. 
# For instance smtp.zoho.eu if you are in Europe or smtp.zoho.in if you are in India.
server = smtplib.SMTP_SSL('smtp.zoho.com', 465)

# Perform operations via server
server.login('sender@example.com', 'password')
server.sendmail(sender, [recipient], msg.as_string())
server.quit()