我正在尝试使用 sendmailR 从 R 发送电子邮件包裹。当我在我的电脑上运行下面的代码时,它工作正常,并且我收到了电子邮件。但是,当我在 macbook pro 上运行它时,它失败并出现以下错误:
library(sendmailR)
from <- sprintf("<sendmailR@%s>", Sys.info()[4])
to <- "<myemail@gmail.com>"
subject <- "TEST"
sendmail(from, to, subject, body,
control=list(smtpServer="ASPMX.L.GOOGLE.COM"))
Error in socketConnection(host = server, port = port, blocking = TRUE) :
cannot open the connection
In addition: Warning message:
In socketConnection(host = server, port = port, blocking = TRUE) :
ASPMX.L.GOOGLE.COM:25 cannot be opened
有什么想法可以解释为什么这可以在 PC 上运行,但不能在 Mac 上运行吗?我关闭了两台机器上的防火墙。
最佳答案
您可以通过命令行发送电子邮件吗?
所以,首先,启动终端,然后
$ echo “Test 123” | mail -s “Test” user@domain.com
查看/var/log/mail.log
,或者更好地使用
$ tail -f /var/log/mail.log
发送电子邮件时在不同的窗口中。如果您看到类似的内容
... setting up TLS connection to smtp.gmail.com[xxx.xx.xxx.xxx]:587
... Trusted TLS connection established to smtp.gmail.com[xxx.xx.xxx.xxx]:587:\
TLSv1 with cipher RC4-MD5 (128/128 bits)
那么你就成功了。否则,这意味着您必须配置邮件系统。我在 Gmail 中使用 postfix
已有两年了,从来没有遇到过任何问题。基本上,您需要从此处获取 Equifax 证书 Equifax_Secure_CA.pem
:http://www.geotrust.com/resources/root-certificates/ 。 (他们之前使用 Thawtee 证书,但去年发生了变化。)然后,假设您使用 Gmail,
在
/etc/postfix
中创建relay_password
并输入如下一行(使用正确的登录名和密码):smtp.gmail.com login@gmail.com:password
然后在终端中,
$ sudo postmap /etc/postfix/relay_password
更新 Postfix 查找表。
将证书添加到
/etc/postfix/certs
或您喜欢的任何文件夹中,然后$ sudo c_rehash /etc/postfix/certs/
(即使用 Openssl 重新哈希证书)。
编辑
/etc/postfix/main.cf
,使其包含以下行(如果需要,调整路径):relayhost = smtp.gmail.com:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_password smtp_sasl_security_options = noanonymous smtp_tls_security_level = may smtp_tls_CApath = /etc/postfix/certs smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache smtp_tls_session_cache_timeout = 3600s smtp_tls_loglevel = 1 tls_random_source = dev:/dev/urandom
最后,只需重新加载 Postfix 进程,例如:
$ sudo postfix reload
(
start
/stop
的组合也有效)。
您可以为 SMTP 选择不同的端口,例如465.
仍然可以使用SASL没有 TLS (上述步骤基本相同),但在这两种情况下,主要问题是您的登录信息在计划文本文件中可用...另外,如果您想使用您的 MobileMe 帐户,只需将 Gmail SMTP 服务器替换为smtp.me.com
。
关于macos - 使用 sendmailR 包从 R 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864400/