2013-05-05 237 views

回答

11

是;这里是代码:

import smtplib 
fromMy = '[email protected]' # fun-fact: from is a keyword in python, you can't use it as variable, did abyone check if this code even works? 
to = '[email protected]' 
subj='TheSubject' 
date='2/1/2010' 
message_text='Hello Or any thing you want to send' 

msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % (fromMy, to, subj, date, message_text) 

username = str('yourMai[email protected]') 
password = str('yourPassWord') 

try : 
    server = smtplib.SMTP("smtp.mail.yahoo.com",587) 
    server.login(username,password) 
    server.sendmail(fromMy, to,msg) 
    server.quit()  
    print 'ok the email has sent ' 
except : 
    print 'can\'t send the Email' 
+4

server.starttls()应该添加到server.login之前,否则会引发异常。 – user6972 2014-02-17 08:39:46

+0

'服务器不支持SMTP AUTH扩展.' – Volatil3 2017-07-17 06:40:53

2

为了支持非ascii字符;你可以使用email package

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from email.header import Header 
from email.mime.text import MIMEText 
from getpass import getpass 
from smtplib import SMTP_SSL 

# provide credentials 
login = '[email protected]' 
password = getpass('Password for "%s": ' % login) 

# create message 
msg = MIMEText('message body…', 'plain', 'utf-8') 
msg['Subject'] = Header('subject…', 'utf-8') 
msg['From'] = login 
msg['To'] = ', '.join([login, ]) 

# send it 
s = SMTP_SSL('smtp.mail.yahoo.com', timeout=10) #NOTE: no server cert. check 
s.set_debuglevel(0) 
try: 
    s.login(login, password) 
    s.sendmail(msg['From'], msg['To'], msg.as_string()) 
finally: 
    s.quit() 
5

我苦苦使用雅虎的SMTP服务器关于头(简述)。 465就是行不通。我决定通过端口587去TLS路由,并且我能够验证并发送电子邮件。

import smtplib 
from email.mime.text import MIMEText 
SMTP_SERVER = "smtp.mail.yahoo.com" 
SMTP_PORT = 587 
SMTP_USERNAME = "username" 
SMTP_PASSWORD = "password" 
EMAIL_FROM = "[email protected]" 
EMAIL_TO = "[email protected]" 
EMAIL_SUBJECT = "REMINDER:" 
co_msg = """ 
Hello, [username]! Just wanted to send a friendly appointment 
reminder for your appointment: 
[Company] 
Where: [companyAddress] 
Time: [appointmentTime] 
Company URL: [companyUrl] 
Change appointment?? Add Service?? 
change notification preference (text msg/email) 
""" 
def send_email(): 
    msg = MIMEText(co_msg) 
    msg['Subject'] = EMAIL_SUBJECT + "Company - Service at appointmentTime" 
    msg['From'] = EMAIL_FROM 
    msg['To'] = EMAIL_TO 
    debuglevel = True 
    mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 
    mail.set_debuglevel(debuglevel) 
    mail.starttls() 
    mail.login(SMTP_USERNAME, SMTP_PASSWORD) 
    mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string()) 
    mail.quit() 

if __name__=='__main__': 
send_email()