2011-06-15 33 views
0

发送邮件我尝试使用Python 3.2来发送邮件。我的代码如下:权限被拒绝错误,而使用Python的smtplib

#from email import Encoders 
from email.mime.base import MIMEBase 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.utils import COMMASPACE, formatdate 
import os 
import smtplib 
from base64 import encode 
from email import encoders 

def sendMail(to, subject, text, files=[],server="smtp.mydomain.com"): 
    assert type(to)==list 
    assert type(files)==list 
    fro = "From <[email protected]>" 

    msg = MIMEMultipart() 
    msg['From'] = fro 
    msg['To'] = COMMASPACE.join(to) 
    msg['Date'] = formatdate(localtime=True) 
    msg['Subject'] = subject 

    msg.attach(MIMEText(text)) 

    for file in files: 
     part = MIMEBase('application', "octet-stream") 
     part.set_payload(open(file,"rb").read()) 
     encoders.encode_base64(part) 
     part.add_header('Content-Disposition', 'attachment; filename="%s"' 
         % os.path.basename(file)) 
     msg.attach(part) 

    smtp = smtplib.SMTP_SSL(server, 465) 
    smtp.ehlo() 
    smtp.set_debuglevel(1) 
    smtp.ehlo() 
    smtp.login("[email protected]", "mypassword") 
    smtp.ehlo() 
    smtp.sendmail(fro, to, msg.as_string()) 
    smtp.close() 
    print("Email send successfully.") 

sendMail(
     ["recipient"], 
     "hello","cheers", 
     [] 
    ) 

它给了我以下错误:

raise SMTPSenderRefused(code, resp, from_addr) 
smtplib.SMTPSenderRefused: (501, b'5.7.1 <[email protected]>... Permission denied', '[email protected]') 

是否有人知道如何解决这个问题?

在此先感谢。

+0

什么语句引发异常? – codeape 2011-06-15 10:59:09

+0

@codeape:在堆栈跟踪行27中看到似乎在提高错误。在第27行的代码是'mailServer.ehlo()' – 2011-06-15 11:03:27

+0

嗨mahendraliya有无论如何我可以联系你吗?我有一个关于Android语音命令的问题给我发电子邮件[email protected] – 2011-06-17 13:59:45

回答

1

由于错误说:你需要调用connect方法上smtplib.SMTP_SSL比如你尝试使用它之前。 smtplib.SMTP_SSL不会自动连接(而且也不smtplib.SMTP。)

+0

@Thomas:我应该如何调用connect()方法?你能否通过引用我在问题中粘贴的代码来帮助我解决一些问题。 – 2011-06-15 11:04:50

+0

'mailServer.connect()'。 – 2011-06-15 11:05:13

+0

@Thomas:将所述线'mailServer.connect()''后MAILSERVER = smtplib.SMTP_SSL( 'smtp.mydomain.net',465)'给我一个新的误差,其'socket.error:[错误10061]无可以连接,因为目标机器积极拒绝它...... – 2011-06-15 11:08:12