sendmailR: отправить закодированное сообщение на локальный SMTP-сервер - PullRequest
6 голосов
/ 20 августа 2010

Мне нужна ваша помощь, чтобы отправить сообщение электронной почты с текстом на греческом языке изнутри R, используя функцию sendmail {sendmailR}.

Я пытался использовать функцию iconv, но это не сработало

subject <- iconv("text in greek", to = "CP1253")
sendmail(from, to, subject, msg, control=list(smtpServer="blabla"))

Письмо приходит немедленно, но греческие символы не читаются. Есть идеи?

РЕДАКТИРОВАТЬ

Еще один вопрос, который возник: Второй аргумент to принимает одного получателя. Что делать, если вы хотите отправить его более чем одному? (Я думаю, что попробую sapply передать функцию sendmail вектору получателей) - Хорошо, это сработало. Однако я не совсем удовлетворен, потому что каждый из получателей не может узнать, кто еще получил сообщение.

1 Ответ

4 голосов
/ 20 августа 2010

Почтовый клиент не сможет понять никакую кодировку без Content-Type: charset=..., поэтому вы должны добавить его:

msg<-iconv("text in greek", to = "utf8");
sendmail(from, to, subject, msg, 
control=list(smtpServer="blabla"),
headers=list("Content-Type"="text/plain; charset=UTF-8; format=flowed")
);

, который предназначен для UTF8 (который, я считаю, следует использовать), для CP1253:

msg<-iconv("text in greek", to = "CP1253");
sendmail(from, to, subject, msg, 
control=list(smtpServer="blabla"),
headers=list("Content-Type"="text/plain; charset=CP1253; format=flowed")
);

многократную отправку по скрытым копиям также можно выполнить с помощью заголовочной магии, но я думаю, что лучше всего использовать цикл sapply - тогда пользователь увидит, что письмо было отправлено непосредственно ему.

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