I would like to use Python's SMTP to send automated emails with a custom domain iCloud+ email address. However, I can't get logged into the SMTP servers. I will always either get "Mailbox does not exist" or "Authentication failed". From the Apple support pages it seems like you need to use SSL over port 587. Additionally, they want you to generate an "app-specific password" for outside applications. This led me to the following code: import smtplib, ssl smtp_server = "smtp.mail.me.com" port = 587 # For SSL # Create a secure SSL context context = ssl.create_default_context() sender_email = "me@example.com" # Enter your address receiver_email = "you@example.com" # Enter receiver address password = "some,password" # app specific password from Apple ID settings message = """\ To: {to} From: {sender} Subject: Hello There This was sent through Python! """.format(to=receiver_email, sender=sender_email) with smtplib.SMTP_SSL(smtp_server, port, context=context) as server: server.login(sender_email, password) # Send email here server.sendmail(sender_email, receiver_email, message) However, this was still giving me a connection error. Only when I changed the last part to use TLS instead would it connect and give me an authentication error. This was taken from this question: SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:590) try: server = smtplib.SMTP(smtp_server, port) server.ehlo() # Can be omitted server.starttls(context=context) # Secure the connection server.ehlo() # Can be omitted server.login(sender_email, password) # Send email here server.sendmail(sender_email, receiver_email, message) except Exception as e: import traceback print(traceback.format_exc()) finally: server.quit() So how can I use my custom domain address with Apple's iCloud+ service with Python's SMTP? Continue reading...