天天看點

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

這段時間一直在學習flask架構,看到flask擴充中有一個mail插件,是以今天就給大家示範如果發郵件。

首先我注冊了一個163郵箱,需要開啟smtp功能,(網易的電子郵件伺服器)。

注冊好163郵箱,然後開啟smtp功能,如下圖所示:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!
python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

開啟的過程中需要綁定手機。

我最終實作的樣子是這樣的:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

使用flask搭建了一個web伺服器,然後做了一個網頁,将收件人,主題,正文填好之後,點選發送,上面會顯示發送結果。

下面是整個工程的結構:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

templates是存放了兩個html檔案,pyMail實作所有的功能。接下來我列一下源代碼,然後将發送部分的核心代碼進行講解。

base.html:

{% extends "bootstrap/base.html" %}

{% block title %}Flasky {% endblock %}

{% block navbar %}

Toggle navigation

七夜

  • CSDN部落格
  • 部落格園
  • 公衆号:qiye_python

{% endblock %}

{% block content %}

{% for message in get_flashed_messages() %}

×

{{ message }}

{% endfor %}

{% block page_content %}{% endblock %}

{% endblock %}

index.html:

{% extends "base.html" %}

{% import "bootstrap/wtf.html" as wtf %}

{% block title %}首頁 {% endblock %}

{% block page_content %}

{% if name %}

Hello,{{ name }}!

{% else %}

Hello,Stranger!

{% endif %}

{{ wtf.quick_form(form) }}

{% endblock %}

pyMail.py:

#coding:utf-8

from flask import Flask,render_template,session,url_for,redirect,flash

from flask.ext.mail import Mail, Message

from flask.ext.moment import Moment

from flask.ext.wtf import Form

from flask.ext.bootstrap import Bootstrap

from wtforms import StringField,SubmitField, TextAreaField

from wtforms.validators import Required, Email

import sys

reload(sys)

sys.setdefaultencoding('utf8')#設定系統預設編碼為utf-8

'''

這個類描述了網頁上的結構

'''

class MailForm(Form):

receiver = StringField('收件人:',validators=[Required(),Email()])

style = StringField('主題:',validators=[Required()])

body = TextAreaField('正文:',validators=[Required()])

submit = SubmitField('發送')

app = Flask(__name__)

app.config['SECRET_KEY'] = 'qiyeboy'

#下面是SMTP伺服器配置

app.config['MAIL_SERVER'] = '' #電子郵件伺服器的主機名或IP位址

app.config['MAIL_PORT'] = '25' #電子郵件伺服器的端口

app.config['MAIL_USE_TLS'] = True #啟用傳輸層安全

app.config['MAIL_USERNAME'] ='xxxxxx@' #os.environ.get('MAIL_USERNAME') #郵件賬戶使用者名

app.config['MAIL_PASSWORD'] = 'your password'#os.environ.get('MAIL_PASSWORD') #郵件賬戶的密碼

mail = Mail(app)

bootstrap = Bootstrap(app)#進行網頁渲染

moment = Moment(app)#時間

@app.route('/',methods=['GET','POST'])

def index():

'''

flask中的路由

:return:

'''

mailForm = MailForm()#表單

if mailForm.validate_on_submit():#表單送出成功的判斷

try:

receiverName = mailForm.receiver.data #收件人文本框的内容

styledata = mailForm.style.data#主題文本框的内容

bodydata = mailForm.body.data#正文文本框的内容

msg = Message(styledata,sender='xxxxxx@',recipients=[receiverName])#發件人,收件人

msg.body = bodydata

mail.send(msg)

flash('郵件發送成功!')#提示資訊

except:

flash('郵件發送失敗!')

return render_template('index.html',form=mailForm,name ='xxxxxx@' )#渲染網頁

if __name__ == '__main__':

app.run(debug=True)

我将代碼中我的郵箱和密碼都隐藏了,如果大家要試驗的話,請換成自己的郵箱和密碼,記住這個密碼不是登入密碼,而是開啟smtp時輸入的管理密碼。

mail核心代碼:

1.首先配置smtp伺服器:

#下面是SMTP伺服器配置

app.config['MAIL_SERVER'] = '' #電子郵件伺服器的主機名或IP位址

app.config['MAIL_PORT'] = '25' #電子郵件伺服器的端口

app.config['MAIL_USE_TLS'] = True #啟用傳輸層安全

app.config['MAIL_USERNAME'] ='xxxxxx@' #os.environ.get('MAIL_USERNAME') #郵件賬戶使用者名

app.config['MAIL_PASSWORD'] = 'xxxxxx'#os.environ.get('MAIL_PASSWORD') #郵件賬戶的密碼

2.發送郵件:

msg = Message(styledata,sender='xxxxxx@',recipients=[receiverName])#發件人,收件人

msg.body = bodydata

mail.send(msg)

填好發件人,收件人,主題,正文,然後發送就OK了。

最後給大家看一下發送的示範圖:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

這時候我的qq郵箱已經收到了郵件:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!

今天的分享就到這裡,七夜音樂台的開發正在進行中,敬請期待,記得打賞呦。

歡迎大家支援我的公衆号:

python郵件發送哪個好_(原創)python發送郵件 Hello,{{ name }}! Hello,Stranger!