def acptmail():
email = 'xxx@163.com' #input('Email:')
password = 'xxx' #input('Password: ')
pop3_server = 'pop3.163.com' html
#下載原始郵件
server = poplib.POP3(pop3_server)
server.set_debuglevel(0)
#print(server.getwelcome().decode('utf-8'))
server.user(email)
server.pass_(password)
#打印郵件數量和佔用空間
#print('Message: %s, Size: %s' % server.stat())
resp, mails, octets = server.list()
#print(mails)
#解析郵件
index = len(mails) 服務器
#server.tetr(int),返回最頂部的,即郵箱中最新接收到的郵件
resp, lines, octets = server.retr(index)
msg_content = b'\r\n'.join(lines).decode('utf-8')
msg = Parser().parsestr(msg_content)
#print_info(msg)編碼
content = msg.get_payload(decode = True)
msgfrom = msg.get('From', '')
msgsub = msg.get('Subject', '')#即郵件中的「主題」一欄.net
發送郵件時,郵件服務器會檢測是否爲垃圾郵件,或惡意郵件等,沒有經過其過濾的話就會報DataError,debug
此時須要規範發送內容和格式,以上程序的格式能夠發送,若是仍是不能發送,就須要改動一下郵件內容,使其code
看起來「正經」一點 server
def send_mail(mailaddr):htm
#msg=email.mime.multipart.MIMEMultipart()
#以這種格式發送簡單文本,先發送內容再給msg的各項屬性賦值
content="hello!" #以上是郵件的內容
msg=email.mime.text.MIMEText(content)
msg['from']='xxx@163.com' #發送端地址
msg['to']=mailaddr #接受端地址
msg['subject']=Header('hey boy!','utf-8') #郵件的標題
#msg.attach(txt)
#smtp=smtplib
smtp=smtplib.SMTP() #建立一個SMTP對象
smtp.connect('smtp.163.com') #使用connect方法連接到新浪郵件服務器的25號端口
smtp.login('xxx@163.com','xxx') #登入發送端須要帳號驗證
smtp.sendmail('xxx@163.com',mailaddr,str(msg)) #郵件發送,括號內的順序是(發送端,接收端,文件內容)
smtp.close()對象
收發郵件的最大問題,就是編碼轉換的問題,以上程序只能收取簡單的字符串,如果正常郵件,極可能會有亂碼問題,關於這個問題,有大神已經寫好編碼判斷和轉換的方法,貼在下面:http://blog.csdn.net/kornberg_fresnel/article/details/51227761blog
另外,找到一篇發送各類郵件的方法:http://www.cnblogs.com/UnGeek/p/5830525.html