电子邮件主题未正确分配Ruby net / smtp

我使用Ruby net / smtp

require 'net/smtp' 

我使用以下方法发送邮件:

 Net::SMTP.start(SMTP_SERVER) do |smtp| smtp.send_message(message,"mailman-ruby@example.de",reciepent) end 

我想在我发送的邮件中添加一个主题,但在文档中找不到。

到目前为止我尝试过的是将主题放入这样的信息中:

 <<END_OF_MESSAGE Subject: test message . . . rest of the message END_OF_MESSAGE 

不幸的是,这并不成功!

任何人都知道如何使用’smtp / net’设置主题?

net/smtp是一个非常低级的库。 它希望message是一封电子邮件,包括所有标题。

从文档中

 msgstr = < To: Destination Address  Subject: test message Date: Sat, 23 Jun 2001 16:26:43 +0900 Message-Id:  This is a test message. END_OF_MESSAGE require 'net/smtp' Net::SMTP.start('your.smtp.server', 25) do |smtp| smtp.send_message msgstr, 'your@mail.address', 'his_address@example.com' end 

在您的情况下,请确保在标题和正文之间添加新行。 更改

 < 

 < 

我强烈建议您使用mail ,而不是使用net/smtpmail使用更高级别的界面来发送电子邮件,而不会失去对邮件的控制。

如果你真的不关心高级用法,你也可以切换到pony

主题的责任不是SMTP协议的责任。 它保存在一个SMTP命令中,也就是说, DATA与此库的责任无关。

但是, DATA将包含正确的(规范指示的)标头,甚至包含未指定但未被禁止的某些标头。 PGP

根据RFC 5321 (和预期的那样)“服务器SMTP系统不应该根据RFC 822或MIME(RFC 2045 [21])消息头部分或消息体中的感知缺陷拒绝消息。”

所以,你的答案将是:“你没有使用它设置主题。” 但是您可以在其中设置包含该信息的DATA。

您链接到的文档有一个完全相同的示例:

 msgstr = < To: Destination Address  Subject: test message Date: Sat, 23 Jun 2001 16:26:43 +0900 Message-Id:  This is a test message. END_OF_MESSAGE require 'net/smtp' Net::SMTP.start('your.smtp.server', 25) do |smtp| smtp.send_message msgstr, 'your@mail.address', 'his_address@example.com' end 

这里没有链接的文档,因为您已经提供了链接。