Rails actionmailer,gmail工作,Office 365没有。

时间:2014-10-01 22:07:41

标签: ruby-on-rails actionmailer office365

我已经让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

4 个答案:

答案 0 :(得分:5)

原来微软要求smtp_settings中的:fromemailer.rb字段都需要相同的电子邮件。

答案 1 :(得分:1)

我遇到过与Gmail和Office365相同的问题,经过几个小时的努力,我找到了解决方案。

如果您使用Office365帐户发送电子邮件,则只有在user_namesender_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"后,现在工作正常。