-
-
Save chrisswanda/57fbc7c587f76d8437880657c0893009 to your computer and use it in GitHub Desktop.
import smtplib | |
#email.mime.multipart is specific to python3 | |
from email.mime.multipart import MIMEMultipart | |
from email.mime.text import MIMEText | |
msg = MIMEMultipart() | |
msg['From'] = '[email protected]' | |
msg['To'] = '[email protected]' | |
msg['Subject'] = 'Subject' | |
message = 'Message body' | |
msg.attach(MIMEText(message)) | |
mailserver = smtplib.SMTP('smtp.mail.me.com', 587) | |
# identify ourselves | |
mailserver.ehlo() | |
# secure our email with tls encryption | |
mailserver.starttls() | |
# re-identify ourselves as an encrypted connection | |
mailserver.ehlo() | |
mailserver.login('iCloud ID', 'app-specific password') | |
mailserver.sendmail('[email protected]', | |
'[email protected]', msg.as_string()) | |
mailserver.quit() |
Hi Chris, do you have any IMAP script as well? Im trying to receive iCloud mails with a python script but it doesn't work. All tutorials use gmail.
I do not. But if you are using a Google example, I would imagine using iCloud's IMAP settings should work also.
# Connect to the iCloud IMAP Mail Server
imap.put_Ssl(True)
imap.put_Port(993)
success = imap.Connect("imap.mail.me.com")
if (success != True):
print(imap.lastErrorText())
sys.exit()
# The username is usually the name part of your iCloud email address
# (for example, emilyparker, not [email protected]).
success = imap.Login("ICLOUD_USERNAME","ICLOUD_PASSWORD")
if (success != True):
print(imap.lastErrorText())
sys.exit()
I get to the point to actually download a list with all email and am able to read the UIDs but the emails don't contain anything. In all the gmail examples its as easy a calling the fetch method and getting the email with all its payload.
Sorry for not pointing this out in the first place.
Maybe try something like this?
# Once the folder/mailbox is selected, the NumMessages property
# will contain the number of emails in the mailbox.
# Loop from 1 to NumMessages to fetch each email by sequence number.
n = imap.get_NumMessages()
bUid = False
for i in range(1,(n)-1):
# Download the email by sequence number.
email = imap.FetchSingle(i,bUid)
if (imap.get_LastMethodSuccess() != True):
print(imap.lastErrorText())
sys.exit()
print(str(i) + ": " + email.ck_from())
print(" " + email.subject())
print("-")
# Disconnect from the IMAP server.
success = imap.Disconnect()
What example did you use?
.get_NumMessages is not an IMAP4 command for me.
Exception has occurred: AttributeError
Unknown IMAP4 command: 'get_NumMessages'
File "/Users/lars/Desktop/Test/Test-Env/src/email.py", line 25, in
n = mail.get_NumMessages()
I believe it is due to the
from
andto
addresses must be provided as part of the message body for iCloud to send the message out.I think you would use
imaplib
.