ruby - 在 Ruby 中格式化 smtp 消息头字段

标签 ruby smtp

我正在尝试在 Ruby 中创建一个普通的 smtp 消息:

def send_email(msg, to)
    require 'net/smtp'
    require 'tlsmail'

    from = 'user@gmail.com'
    p = hmhmm

    msgstr = <<-END_OF_MESSAGE
    From: User <user@gmail.com>
    To: Jensa <jensa11.11.1@gmail.com>
    Subject: Titel

    Hej PÅ dig. Inte under.   # <- swedish ;)
    END_OF_MESSAGE

    Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)

    Net::SMTP.start('smtp.gmail.com', 587, 'gmail.com', from, p, :login) do |smtp|
        smtp.send_message msgstr, from, to
    end
    puts "message sent"
end

消息已发送,但除“TO”地址外的所有数据都在消息的“FROM”字段中结束,如下所示:

FROM: User <user@gmail.com> To: Jensa Subject: Titel Hej PÅ dig. Inte under.<user@gmail.com>
Date: 9 February 2012 14.36.03 CET

邮件正文中没有任何内容。

当我在“标题”后添加“\n”时,之后的所有文本都会按原样放置在消息中:

From:   User <user@gmail.com> To: Jensa Subject: Titel <user@gmail.com>
Date:   9 februari 2012 14.36.03 CET

      Hej PÅ dig. Inte under.

但是“收件人”地址仍然不可见,它都在“发件人”字段中。

有什么问题?

最佳答案

您必须使用 CRLF 来分隔每一行。

我猜您的行目前仅由“\r”或“\n”分隔 - 而不是两者。尝试:

msgstr = [
  "From: User <user@gmail.com>",
  "To: Jensa <jensa11.11.1@gmail.com>",
  "Subject: Titel",
  "",
  "Hej PÅ dig. Inte under."   # <- swedish ;)
].join("\r\n")

关于ruby - 在 Ruby 中格式化 smtp 消息头字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9212136/

相关文章:

ruby - __callee__ 和 __method__ 之间的区别

ruby-on-rails - 如何在延迟作业队列中指定一名工作人员

ruby-on-rails - 重构 Rspec 规范

smtp - 使用 smtp.gmail.com 设置 couchbase 电子邮件警报

javascript - 使用 Node 的 SendPulse API 进行身份验证凭据

ruby-on-rails - Ruby on Rails - Controller 子目录

ruby - 将 Ruby 字符串范围转换为 Range 对象的最佳方法是什么

python - 在 Python smtplib 中检测退回的电子邮件

python - 如何用python发送邮件

laravel - 无法使用 office365 设置发送 SMTP 邮件