Help us understand the problem. What is going on with this article?

Flask-Mailを使用してさくらのメールサーバーからメールを送る

More than 1 year has passed since last update.

はじめに

Pythonの軽量WEBフレームワークであるFlaskの拡張機能Flask-Mailを使用して、メールを送信してみました。メールサーバーにはさくらのレンタルサーバーのものを使用しました。

設定

config.pyを以下のように作成。

MAIL_SERVER = '[メールアドレスの@以降]'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USE_SSL = False
MAIL_USERNAME = '[メールアドレス]'
MAIL_PASSWORD = '[パスワード]'
MAIL_DEFAULT_SENDER = '[メールアドレス]'

使用方法

from flask import Flask
from flask_mail import Mail, Message
import config

app = Flask(__name__)
app.config.from_object('config')
mail = Mail(app)

@app.route("/")
def index():
    msg = Message(recipients=[送信先メールアドレス],
                  body=[内容],
                  subject=[タイトル])
    mail.send(msg) 

メモ

以下のようなエラーが出力された。

  File "/usr/local/lib/python3.7/site-packages/flask_restful/__init__.py", line 480, in wrapper
    resp = resource(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask/views.py", line 88, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/flask_restful/__init__.py", line 595, in dispatch_request
    resp = meth(*args, **kwargs)
  File "./api.py", line 74, in post
    mail.send(msg)
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 492, in send
    message.send(connection)
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 427, in send
    connection.send(self)
  File "/usr/local/lib/python3.7/site-packages/flask_mail.py", line 192, in send
    message.rcpt_options)
  File "/usr/local/lib/python3.7/smtplib.py", line 867, in sendmail
    raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (550, b'5.7.1 <[メールアドレス]>... Command rejected', '[メールアドレス]')

不正なアクセスに対するセキュリティを強化するために、日本国外IPアドレスからのアクセスを制限しているらしい。さくらインターネットサーバコントロールパネルのメニューから「国外IPアドレスフィルタ」を選択、「国外IPアドレスからのアクセス制限」を無効にすることで解決。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away