我在谷歌搜索了一段时间没有成功之后,又用一个愚蠢的问题来打扰你了。我需要发送大量(数百)的个性化电子邮件。我知道可以使用R发送电子邮件,但是到目前为止我检查的所有软件包都需要类似body = "Body of the email"
的东西,也就是说,它们使用固定的预先建立的文本作为电子邮件的正文文本。但是,我需要把它们个性化。例如,让我们有下面的文本:
比尔博非常富有,非常奇特,自从他引人注目的失踪和意外的归来以来,他一直是夏尔六十年来的奇迹。他从旅行中带回来的财富现在已经成为当地的一个传说,不管老人们怎么说,大家都相信袋底洞的小山上到处都是装满宝藏的隧道。如果这还不足以让他名声大噪,还有他那令人惊叹的持久活力。时间在流逝,但这对巴金斯先生似乎没有什么影响。他九十岁的时候和五十岁的时候没什么两样。九十九岁的时候,他们开始说他保存完好,但说他没有变化更贴切。有些人摇摇头,认为这太过分了;
一个人既拥有(据说)无穷无尽的财富,又拥有(表面上)永葆青春,这似乎是不公平的。即包含几个段落的文本。让我们有以下接收器c("Gandalf", "Saruman", "Sauron")
,我想要的是为我的电子邮件创建个性化文本,结合两者,标题:
"亲爱的甘道夫,
当袋底洞的比尔博·巴金斯先生…[所有上述文字]">
我试过这样的东西:
txt <- "When Mr. Bilbo Baggins of Bag End... [all the aforementioned text]"
for(i in 1:length(rs)){
temp <- paste("Dear", rs[i], txt)
}
我也试过从一个。txt文件调用这个文本,这个想法是使用它然后作为body = temp
。但我得到的却是"不自然"。文字,有连续的线条、符号等。你知道如何解决这种情况吗?谢谢!
使用sprintf
,它允许您使用占位符,然后将其替换:
lapply(c("Gandalf", "Saruman", "Sauron"),
sprintf,
fmt = "Dear %s,
When Mr. Bilbo Baggins of Bag End... [all the aforementioned text]")
#[[1]]
#[1] "Dear Gandalf,nnWhen Mr. Bilbo Baggins of Bag End... [all the aforementioned #text]"
#
#[[2]]
#[1] "Dear Saruman,nnWhen Mr. Bilbo Baggins of Bag End... [all the aforementioned #text]"
#
#[[3]]
#[1] "Dear Sauron,nnWhen Mr. Bilbo Baggins of Bag End... [all the aforementioned #text]"
如果需要替换多个字符串,请使用mapply
而不是lapply
。如果你愿意,也可以使用for
循环。