如何配置sendmailR以发出STARTTLS

时间:2014-01-29 10:11:14

标签: r smtp sendmailr

我正在尝试使用以下代码使用sendmailR软件包从R发送电子邮件,但遗憾的是这些代码失败了:

## Set mail contents
from <- sprintf('<sendmailR@%s>', Sys.info()[4])
to <- '<slackline@gmail.com>'
subject <- 'Feeding Plots'
body <- list('Latest feeding graph', mime_part(feeding.plot,
                                               name = "feeding"))
## Set control parameters
control <- sendmail_options(verboseShow = TRUE, 
                            smtpServer ="smtp.gmail.com", 
                            smtpPort = 587, 
                            smtpSTARTTLS = '',
                            blocking = FALSE)
sendmail(from,
         to,
         subject,
         msg = body,
         control = control,
         headers)
<< 220 mx.google.com ESMTP xt1sm884721wjb.17 - gsmtp
>> HELO  kimura
<< 250 mx.google.com at your service
>> MAIL FROM:  <sendmailR@kimura>
<< 530 5.7.0 Must issue a STARTTLS command first. xt1sm884721wjb.17 - gsmtp
Error in wait_for(code) : 
  SMTP Error: 5.7.0 Must issue a STARTTLS command first. xt1sm884721wjb.17 - gsmtp

sendmailR manual没有提到如何配置STARTTLS,虽然它确实表明可以传递其他参数,这就是为什么我根据上面提到的内容包含了smtpSTARTLS = ''选项的原因。其他一些主题(herehere)。我尝试使用smtpSTARTTLS的参数并将其设置为TRUE,但没有快乐。

对文档或解决方案的任何指示都是最受欢迎的。

由于

2 个答案:

答案 0 :(得分:3)

据我了解,sendmailR不支持任何类型的SMTP服务器登录,因此,gmail基本上无法使用。如果您在正确的网络内,并且设置了一个只能在网络内访问的服务器(例如,一个不使用身份验证的服务器),则只能使用该软件包。

替代方案是mail包(您不能使用自己的地址)。

sendmailR documentation的引用是:

  

目前不支持SMTP AUTH。

答案 1 :(得分:2)

您可以为新的mailR包提供允许SMTP授权的镜头:http://cran.r-project.org/web/packages/mailR/index.html

然后应该进行以下调用:

send.mail(from = "slackline@gmail.com",
          to = "slackline@gmail.com",
          subject = "Subject of the email",
          body = "Body of the email",
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "slackline", passwd = "PASSWORD", ssl = TRUE),
          authenticate = TRUE,
          send = TRUE)