Ruby中发送邮件通常使用mail
或action_mailer
等gem包,400错误通常表示客户端请求有问题(Bad Request)。
# 正确的SMTP配置示例
Mail.defaults do
delivery_method :smtp, {
address: 'smtp.example.com',
port: 587,
domain: 'yourdomain.com',
user_name: 'username',
password: 'password',
authentication: 'plain',
enable_starttls_auto: true
}
end
mail = Mail.new do
from 'sender@example.com'
to 'recipient@example.com'
subject 'Test Email'
body 'This is a test email'
# 添加附件时要正确处理
add_file filename: 'attachment.pdf', content: File.read('/path/to/file.pdf')
end
# 检查邮件格式是否正确
puts mail.to_s
begin
mail.deliver!
rescue => e
puts "Error occurred: #{e.message}"
puts "Backtrace: #{e.backtrace.join("\n")}"
end
如果以上方法无效,可以启用详细日志:
Mail.defaults do
delivery_method :smtp, {
# ...其他配置...
logger: Logger.new(STDOUT),
debug_output: STDOUT
}
end
这将输出详细的SMTP通信日志,帮助你定位具体问题。
希望这些信息能帮助你解决Ruby邮件发送的400错误问题。