Мне нужно отправить несколько писем в цикле, меняя имена получателей в каждой итерации - PullRequest
0 голосов
/ 15 мая 2019

У меня есть текстовый файл, в одном столбце указаны фамилии получателя, а в другом - их адреса электронной почты.Я использую пакет mailR в R, чтобы отправить им персонализированный текст.

Я пытался поместить его в цикл for, но он не работает.

install.packages("mailR", dep = T)
library(mailR)

email.addresses <- c("mail1@gmail.com","email2@yahoo.com","email3@hotmail.com")
names.addresses <- c("name1","name2","name3")

for (i in length(email.addresses)) {


dear <- "Dear "
comma <- ","
dr <- "Mr. "
name <- names.addresses[i]
subject <- paste(dear, dr, name, comma, sep = "")

email <- send.mail(from = "sender <user@gmail.com>",
             to = email.addresses[i],
             subject = "subject header",
             body = paste(subject, "some text", sep = "\n\n"),
             encoding = "utf-8",
             smtp = list(host.name = "smtp.gmail.com", port = 465,
             user.name = "username", passwd = "password", ssl = T),
             authenticate = TRUE,
             send = TRUE)
}

Что на самом деле отправляется, так этотолько к последнему адресу электронной почты в списке.

1 Ответ

2 голосов
/ 15 мая 2019

Я просто запустил ваш код, и вы должны просто изменить цикл for следующим образом:

for (i in 1:length(email.addresses))

В следующий раз попробуйте напечатать ваши данные (я имею в виду, чтобы напечатать переменную i), и вы бы увиделичто ваш цикл выполняет только один цикл, потому что length (email.addresses) = 3, но при использовании цикла for вам нужно указать 2 значения, начало и конец.1: длина (email.addresses) совпадает с c (1: длина (email.addresses)), и это означает, что он будет принимать все значения от 1 до длины (email.addresses).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...