11

SOとグーグルを検索しましたが、問題の解決策が見つからないようです。sendmailR パッケージを使用して、R 内で HTML 形式の電子メールを送信しようとしています。プレーン テキストの電子メールは正常に機能しますが、プレーン テキストから HTML に切り替えることができません。

私のコード:

require(sendmailR)
from <- "alertbot@companyname.com"
message = "<HTML><body><b>Hello</b></body></HTML>"
to = c("me@companyname.com")
subject = "Test Monitor Alert"

sendmail(from, to, subject, msg = msg,control=list(smtpServer="smtp-gw1.wal-mart.com"),headers=list("Content-Type"="text/html; charset=UTF-8; format=flowed"))

私は電子メールを受け取りますが、それはプレーン テキストであり、電子メールの本文には、HTML 形式のテキストではなくメッセージがそのまま含まれています。助けてください。

4

5 に答える 5

16

これは可能です。 https://stackoverflow.com/a/21930556/448145を参照してください :

msg <- mime_part(message)
msg[["headers"]][["Content-Type"]] <- "text/html"
sendmail(from, to, subject, msg = msg, ...)
于 2014-02-24T16:23:55.097 に答える
6

メッセージ部分をテキストとして送信するようにハードコーディングされているため、 sendmailRはこれを行うことができません。パッケージのソースを見ると、sendmail.R の 38 行目は次のとおりです。

writeLines("Content-Type: text/plain; format=flowed\r\n", sock, sep="\r\n")

それをに変更します

writeLines("Content-Type: text/html; format=flowed\r\n", sock, sep="\r\n")

あなたがオプションを通してやろうとしたように、それはうまくいくでしょう。

更新: sendmailRで HTML メールが許可されるようになりました (以下のカールの回答とhttps://stackoverflow.com/a/21930556/448145を参照)。

于 2013-11-07T19:58:08.673 に答える
4

mailR パッケージ ( https://github.com/rpremraj/mailR ) を使用すると、次のように HTML メールを簡単に送信できます。

send.mail(from = "sender@gmail.com",
          to = c("recipient1@gmail.com", "recipient2@gmail.com"),
          subject = "Subject of the email",
          body = "<html>The apache logo - <img src=\"http://www.apache.org/images/asf_logo_wide.gif\"></html>",
          html = TRUE,
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "gmail_username", passwd = "password", ssl = TRUE),
          attach.files = c("./download.log", "upload.log"),
          authenticate = TRUE,
          send = TRUE)
于 2014-05-15T07:49:07.687 に答える
3

私は、R パッケージを使用するよりも、この種のタスクに特化したメール エージェントを使用することを好みます。たとえば、Muttを使用できます。Linux と Windows で利用できます。

ここでは、オプション -e を使用してコマンドを送信しています。

writeLines(message,
           p<-pipe(paste('mutt -e ','"set content_type=text/html"',
                          from,to,' -s ', subject))
close(p)
于 2013-11-07T20:10:29.370 に答える
0

他に何もない場合は、html を php ページに投稿し、php に html メールを送信させることができます。他の誰かがより良い解決策を持っているかどうかを確認します.

于 2013-11-07T19:56:58.173 に答える