Implementierung eines Anfrageformulars mit Google Mail in Rails.
Richten Sie zunächst das Routing ein. Es wird davon ausgegangen, dass Sie, wenn Sie den Anfrageinhalt auf der Anfrageformularseite eingeben und senden, zur Seite zum Abschluss der Übertragung weitergeleitet werden.
config/routes.rb
Rails.application.routes.draw do
resource :contacts, only: [:new, :create] do
get "/thanks" => "contacts#thanks"
end
end
Der Inhalt, der in das Anfrageformular eingegeben werden muss, besteht aus drei Punkten: Name, E-Mail-Adresse und Inhalt der Anfrage.
$ rails g model contact name:string email:string content:text
$ rails db:migrate
$ rails g controller contacts
app/controller/contacts_controller.rb
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
ContactMailer.contact_mail(@contact).deliver
redirect_to thanks_contacts_path
else
render :new
end
end
def thanks
end
private
def contact_params
params.require(:contact).permit(:name, :email, :content)
end
end
Es gibt einige Teile, die nach dem Geschmack der von mir erstellten Site zu Hiragana verarbeitet werden, aber bitte machen Sie sich keine Sorgen.
app/view/contacts/new.html.erb
<h3>Kontaktiere uns</h3>
<%= form_with(model: @contact, local: true) do |f| %>
<%= f.label :name, "Name" %>
<%= f.text_field :name %>
<%= f.label :email, "Mail Adresse" %>
<%= f.email_field :email, autocomplete: "email" %>
<%= f.label :content, "Nicht wie" %>
<%= f.text_field :content %>
<%= f.submit "Kommen Sie" %>
<% end %>
app/view/contacts/thanks.html.erb
<h3>Vielen Dank für Ihre Anfrage.</h3>
$ rails g mailer ContactMailer
app/model/contact_mailer.rb
class ContactMailer < ApplicationMailer
def contact_mail(contact)
@contact = contact
mail to:"Meine Email-Adresse", subject: "Kontaktiere uns"
end
end
app/view/contact_mailer/contact_mail.html.erb
<p>Nutzername:<%= @contact.name %></p>
<p>Mail Adresse:<%= @contact.email %></p>
<p>Inhalt der Anfrage:<%= @contact.content %></p>
config/environments/development.rb
Rails.application.configure do
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
domain: 'gmail.com',
port: 587,
user_name: 'Meine Email-Adresse',
password: ENV["GMAIL_KEY"],
authentication: 'plain',
enable_starttls_auto: true
}
end
Ich werde das Passwort in die .env-Datei einfügen, damit es nicht auf GitHub angezeigt wird.
Beschreiben Sie Folgendes in der ENV-Datei (erstellt, wenn sie nicht vorhanden ist) direkt unter dem Anwendungsverzeichnis.
GMAIL_KEY=Passwort
Rufen Sie für das hier eingegebene Passwort [Google-Konto] auf (https://myaccount.google.com/intro?utm_source=OGB&tab=mk&utm_medium=act) und geben Sie das generierte App-Passwort ein.
Sicherheit → Google-Anmeldefeld Wenn Sie keine zweistufige Authentifizierung eingerichtet haben, richten Sie diese zuerst ein und generieren Sie dann ein App-Kennwort. Geben Sie hier das generierte Passwort ein.
Die Implementierung ist hier abgeschlossen.
Jetzt, wenn Sie eine E-Mail vom Anfrageformular senden
Ich konnte sicher senden und empfangen.
Recommended Posts