我正在尝试在 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/