で HTML メールを送信するのは簡単でsendmailR
はありませんが、昨年のパッケージ作成者とのメールの議論に基づいて可能です (Olaf Mersmann の親切な助けに感謝します) - 単純にContent-Type
ヘッダーをオーバーライドするだけです。例えば:
msg <- mime_part('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>HTML demo</title>
<style type="text/css">
</style>
</head>
<body>
<h1>HTML demo</h1>
</body>
</html>')
## Override content type.
msg[["headers"]][["Content-Type"]] <- "text/html"
from <- '<foo@example.com>'
to <- "<bar@example.com>"
subject <- "HTML test"
body <- list(msg)
sendmail(from, to, subject, body, ...)
一方、HTML で表や人間が読める形式で表示する必要はありません。data.frame
たとえば、 Rオブジェクトをマークダウンにできるascii
パッケージまたは私のpander
pkgがあります。クイックデモ:
> library(pander)
> panderOptions('table.split.table', Inf)
> pander(head(iris, 3))
-------------------------------------------------------------------
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
-------------- ------------- -------------- ------------- ---------
5.1 3.5 1.4 0.2 setosa
4.9 3 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
-------------------------------------------------------------------
> pander(head(iris, 3), style = 'grid')
+----------------+---------------+----------------+---------------+-----------+
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
+================+===============+================+===============+===========+
| 5.1 | 3.5 | 1.4 | 0.2 | setosa |
+----------------+---------------+----------------+---------------+-----------+
| 4.9 | 3 | 1.4 | 0.2 | setosa |
+----------------+---------------+----------------+---------------+-----------+
| 4.7 | 3.2 | 1.3 | 0.2 | setosa |
+----------------+---------------+----------------+---------------+-----------+
これを電子メール本文に連結したい場合はpander.return
、コンソールに書き込む代わりに文字ベクトルを返します。また、他にも利用可能なテーブルがいくつかあります。たとえば、小数点記号、日付形式などを設定style
するのに役立つものもあります: http://rapporter.github.io/pander/panderOptions