【问题标题】:Sending Outlook Emails via R workaround on OSX在 OSX 上通过 R 解决方法发送 Outlook 电子邮件
【发布时间】:2018-04-05 11:31:49
【问题描述】:

我浏览了整个网站,但没有找到答案。

我需要使用 R 通过我的作品 Outlook 电子邮件发送电子邮件。它必须来自 Outlook,而不是其他任何地方。

问题是,我使用的计算机是 OSX,所以RDCOMClient 无法工作。

编辑:试过这个,它不会工作。

sender<-"myemail@outlook.com"
recipients<-c("myemail@outlook.com")
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 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410) 在 org.apache.commons.mail.Email.send(Email.java:1437) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 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.jaNU​​LL 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

【问题讨论】:

    标签: r rstudio rdcomclient


    【解决方案1】:

    因此,您不一定要通过 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<-"fromwho@fromyou.org"
        recipients<-c("emailtosendto@email.com")
        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)
    

    【讨论】:

    • 谢谢。 You would want to allow the R script you write and the libraries employed to be an email client 是什么意思?
    • 没问题。不要使用 Outlook 等邮件客户端,而是让 R 脚本和库成为客户端。 mailR 或 sendmailR 包(也存在其他包)与服务器协商,充当客户端。您的脚本提供了正确的参数,例如 smtp 地址、消息、主题、发件人、收件人、凭据......
    • 谢谢。我刚刚使用您给我的内容在原始帖子中发布了一些更改。我认为我只需要更改我的身份验证权限?
    • github.com/rpremraj/mailR 有几个认证发送的例子。根据此消息,身份验证是问题所在,因此要么在您的脚本中进行身份验证,要么让邮件管理员允许从某些主机进行未经身份验证的发送。
    【解决方案2】:

    这是我使用的,对我来说很好用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-14
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2020-05-30
      • 1970-01-01
      • 2015-08-10
      相关资源
      最近更新 更多