python收發郵件的方法


def acptmail():
  email = 'xxx@163.com' #input('Email:')
  password = 'xxx' #input('Password: ')
  pop3_server = 'pop3.163.com'

#下載原始郵件
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', '')#即郵件中的“主題”一欄

  發送郵件時,郵件服務器會檢測是否為垃圾郵件,或惡意郵件等,沒有通過其過濾的話就會報DataError,

此時需要規范發送內容和格式,以上程序的格式可以發送,如果還是不能發送,就需要改動一下郵件內容,使其

看起來“正經”一點 

 

def send_mail(mailaddr):

#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/51227761

另外,找到一篇發送各種郵件的方法:http://www.cnblogs.com/UnGeek/p/5830525.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM