Отправка электронной почты Outlook с помощью обходного пути R на OSX

Я просмотрел весь сайт, но не смог найти ответ.

Мне нужно использовать R для отправки электронных писем по электронной почте Outlook Works. Это должно быть из Outlook, а не где-либо еще.

Проблема в том, что я использую компьютер с OSX, поэтому RDCOMClient не будет работать.

РЕДАКТИРОВАТЬ: Пробовал это, и это не сработало.

sender<-"[email protected]"
recipients<-c("[email protected]")
send.mail(from = sender, to = recipients,
          subject = "Test",
          body = BodyOfMessage,
          smtp = list(host.name = "smtp-mail.outlook.com"),
          authenticate = FALSE,
          html = TRUE,
          send = TRUE)Does anyone have a workaround? 

И это привело к этой ошибке:

org.apache.commons.mail.EmailException: не удалось отправить электронное письмо на следующий сервер: smtp-mail.outlook.com:25 в org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410) в org. apache.commons.mail.Email.send(Email.java:1437) на sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) на sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) на sun.reflect.DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в RJavaTools.invokeMethod(RJavaTools.java:386) Вызвано: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Клиент не прошел проверку подлинности для отправки анонимной почты во время MAIL FROM [BN6PR19CA0117.namprd19.prod.outlook.com]

на com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2202) на com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1693) на com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:1194) в javax.mail.Transport.send0(Transport.jaNULL va:254) в javax.mail.Transport.send(Transport.java:124) в org.apache.commons.mail.Email.sendMimeMessage (Email.java:1400) ... еще 6 Ошибка: EmailException (Java): не удалось отправить электронное письмо на следующий сервер: smtp-mail.outlook.com:25


person Karl Marxdown    schedule 04.04.2018    source источник


Ответы (2)


Таким образом, вы не обязательно будете отправлять это через свой клиент Outlook, который является всем, чем является Outlook. Вы хотели бы, чтобы сценарий R, который вы пишете, и используемые библиотеки были почтовым клиентом. Я использую mailR с большим успехом. Некоторым людям нравится sendmailR для отправки сообщений. Они оба имеют свои преимущества. Ваш администратор электронной почты может разрешить отправку без проверки подлинности, если вы запускаете много сценариев с хоста. Или вы можете аутентифицироваться в своем скрипте. Например:

library(mailR)
#################
# Generate Spam #
#################
BodyOfMessage <- paste("<html><body><p>Hello,</p><p>This is an email message.</p>
                      <hr>
                      <p>The second table is a list of users that need to be toggled in the system, by adding them to the correct securitygroup.</p>
                      <p>", toggle.these.people, "</p>
                      <p>Scott</p></body></html>")
#mailR
    sender<-"[email protected]"
    recipients<-c("[email protected]")
    send.mail(from = sender, to = recipients,
    subject = paste("Blah. Created: today.", sep = ""),
    body = BodyOfMessage,
    smtp = list(host.name = "smtp.exchangeserver.org"),
    authenticate = FALSE,
    html = TRUE,
    attach.files = CSVFileNameIs,    
    send = TRUE)
person Scottieie    schedule 04.04.2018
comment
Спасибо. Что вы имеете в виду под You would want to allow the R script you write and the libraries employed to be an email client? - person Karl Marxdown; 04.04.2018
comment
Без проблем. Вместо использования почтового клиента, такого как Outlook, пусть скрипт R и библиотека будут клиентом. Пакет mailR или sendmailR (существуют и другие) взаимодействуют с сервером, выступая в роли клиента. Ваш сценарий предоставляет правильные параметры, такие как smtp-адрес, сообщение, тема, от, до, учетные данные... - person Scottieie; 04.04.2018
comment
Спасибо. Я только что опубликовал некоторые изменения в своем исходном сообщении, используя то, что вы мне дали. Я так понимаю, мне просто нужно изменить мои права аутентификации? - person Karl Marxdown; 04.04.2018
comment
github.com/rpremraj/mailR содержит несколько примеров аутентифицированной отправки. Судя по этому сообщению, проблема заключается в аутентификации, поэтому либо выполните аутентификацию в своем скрипте, либо попросите почтового администратора разрешить отправку без аутентификации с определенных хостов. - person Scottieie; 04.04.2018

Это то, что я использую, и это отлично работает для меня.

library(RDCOMClient)
## init com api
OutApp <- COMCreate("Outlook.Application")
## create an email 
outMail = OutApp$CreateItem(0)
## configure  email parameter 
outMail[["To"]] = "[email protected]"
outMail[["subject"]] = "some subject"
outMail[["body"]] = "some body"
## send it                     
outMail$Send()
person ASH    schedule 05.04.2018