Sinatra の助けを借りて簡単なフォームを送信すると、次のエラーが表示されます。
Net::SMTPAuthenticationError at /contacts 535-5.7.8 ユーザー名とパスワードが受け入れられない Ruby Sinatra
プログラムのバージョン:
- OS: Windows 7/64
- Ruby バージョン: ruby 2.6.3p62 (2019-04-16 リビジョン 67580) [x64-mingw32]
バンドルに含まれる宝石:
- バックポート (3.15.0)
- バンドラー (2.0.2)
- メール (2.7.1)
- ミニマイム (1.0.2)
- multi_json (1.14.1)
- ポニー (1.13.1)
- ラック (1.5.2)
- ラック保護 (1.5.1)
- ラックテスト (1.1.0)
- シナトラ (1.4.4)
- sinatra-contrib (1.4.7)
- 傾き (1.4.1)
そして、これがsinatraのapp.rbの私のコードです:
# app.rb
require 'rubygems'
require 'sinatra'
require 'sinatra/reloader'
require "pony"
get '/' do
erb "Hello! <a href=\"https://github.com/bootstrap-ruby/sinatra-bootstrap\">Original</a> pattern has been modified for <a href=\"http://rubyschool.us/\">Ruby School</a>"
end
get "/contacts" do
erb :contacts
end
post "/contacts" do
login = params[:login]
message = params[:message]
Pony.mail({
:to => '***1***@gmail.com', # real mail 1
:from => '***2***@gmail.com', # real mail 2
:via => :smtp,
:subject => "New message from user: #{login}",
:body => "#{message}",
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => '***2***@gmail.com', # real mail 2
:password => '**********',
:authentication => :plain, # :plain, :login, :cram_md5, no auth by default
:domain => "gmail.com" # the HELO domain provided by the client to the server
# :openssl_verify_mode => 'none'
}
})
erb :contacts
end
そして、これがsinatraのcontacts.erbの私のコードです:
<body>
<h2> Feedback </h2>
<form action="/contacts" method="POST">
<div class="form-group">
<label>Your name:</label>
<input name="username" type="text" class="form-control" placeholder="Your name">
<label for="comment">Text of the appeal:</label>
<textarea name="message" class="form-control" rows="5" placeholder="Text of the appeal"></textarea>
</div>
<button type="submit" class="btn btn-primary">Send:</button>
</form>
バックトレース:
C:/Ruby26-x64/lib/ruby/2.6.0/net/smtp.rb in check_auth_response
raise SMTPAuthenticationError, res.message
C:/Ruby26-x64/lib/ruby/2.6.0/net/smtp.rb in auth_plain
check_auth_response res