我已经让Actionmailer使用gmail通过以下设置发送电子邮件:
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "user_name@gmail.com",
:password => "password",
:authentication => "plain",
:enable_starttls_auto => true
}
但是,我无法上班365邮箱,我有以下设置:
ActionMailer::Base.smtp_settings = {
:address => "smtp.office365.com",
:port => 587,
:domain => "my_domain.com",
:user_name => "username@my_domain.onmicrosoft.com",
:password => "password",
:authentication => :login,
:enable_starttls_auto => true
}
如果我尝试使用此客户端发送电子邮件,我会:
Net::SMTPFatalError
550 5.7.1 Client does not have permissions to send as this sender
答案 0 :(得分:5)
原来微软要求smtp_settings
中的:from
和emailer.rb
字段都需要相同的电子邮件。
答案 1 :(得分:1)
我遇到过与Gmail和Office365相同的问题,经过几个小时的努力,我找到了解决方案。
如果您使用Office365帐户发送电子邮件,则只有在user_name
和sender_address
且值相同时才有效。即
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.office365.com',
port: 587,
domain: 'my_domain.pk',
user_name: 'noreply@my_domain.pk',
password: ENV['PASSWORD'],
authentication: 'login',
enable_starttls_auto: true
}
config.middleware.use ExceptionNotification::Rack,
email: {
deliver_with: :deliver,
email_prefix: '[Email Prefix]',
sender_address: %{<noreply@my_domain.pk>},
exception_recipients: %w{abc@gmail.com}
}
config.action_mailer.perform_deliveries = true
关键点:因此保持以下值同样适用于我
user_name: 'noreply@my_domain.pk'
sender_address: %{<noreply@my_domain.pk>}
答案 2 :(得分:0)
详细了解通过Office 365在此处使用SMTP发送: https://technet.microsoft.com/en-us/library/dn554323.aspx
使用这样的身份验证方法,您不需要设置:domain。
答案 3 :(得分:0)
在devise.rb
我设置了"no-reply@******.com"
,我在production.rb
的smtp设置中提到"noreply@*****.com"
。
将devise.rb
中的电子邮件ID替换为"no-reply@*******.com"
"noreply@******.com"
后,现在工作正常。