我正在编写一个ruby脚本,使用'mail'gem发送电子邮件。
和我本地计算机上的smtp设置:
mailer_options:
address: smtp.gmail.com
port: 465
domain: gmail.com
user_name: example@gmail.com
password: example_password
authentication: :login
enable_starttls_auto: true
ssl: true
我想发送这样的信息:-----
Mail.deliver do
to 'receiver@gmail.com'
from 'sender@gmail.com'
subject 'Test Mail'
text_part do
body 'Hello World!!!!!'
end
end
邮件发送成功但是当我打开电子邮件时,我看到发件人电子邮件ID为
example@gmail.com
代替sender@gmail.com
,为什么会这样,我无法理解。
感谢任何评论和回答。
答案 0 :(得分:4)
这通常由您的SMTP服务器完成,并且无法控制。如果Google没有为您服务,您可以尝试使用其他SMTP提供商,例如Sendgrid。
答案 1 :(得分:2)
上面的答案正确,这不是您的代码,而是执行此操作的Gmail SMTP服务器。我为SendGrid工作,如果你想将其改为使用SendGrid(或任何其他提供商),那么你可以很容易地做到这一点。我们的免费计划每天可发送400封电子邮件,适合当地发展。
您的代码将更改如下:
mailer_options:
address: smtp.sendgrid.net
port: 587
domain: yourdomain.com
username: your_username
password: your_password
authentication: plain
enable_starttls_auto: true
您不需要在此阶段设置SSL。在这里,您可以使用原始的Mail.deliver
方法。
您会发现现在可以从sender@yourdomain.com
地址或您在from
属性中指定的地址发送。
还有Ruby& the SendGrid documentation中的SendGrid详细信息。
答案 2 :(得分:1)
谷歌不允许发件人电子邮件屏蔽。这是由GMAIL的服务器完成的。不是你的rails代码!!它总是使用您使用的gmail帐户的电子邮件地址作为“from_email”。 您最好的选择可能是“Mandrill”(每月12000封电子邮件)。它们允许以您希望的方式进行电子邮件路由。
答案 3 :(得分:0)
请在下方设置发件人默认名称,而不是“sender@gmail.com”:
class UserMailer < ActionMailer::Base
default from: 'sender@gmail.com'
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end