You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言发送邮件失败求助:SMTP配置等问题排查

R发送邮件失败求助

我是R编程新手,正在学习用R发送邮件。查了大量在线资源和YouTube教程都没成功,怀疑问题出在VPN或公司网络环境上。

试过sendmailR、mailR、blastula和emayili这些包,全都失败了,希望有人能针对我的情况推荐解决办法。

我的疑问:

  • SMTP配置是否正确?
  • 使用的端口号是否正确?
  • 代码是否存在错误?

尝试的代码(最接近成功的一次)

require(emayili)
require(dplyr)

sender <- "abc@company123.com.my"
recipient <- "abc@company123.com.my"

email <- envelope() %>%
  from(sender) %>%
  to(recipient) %>%
  subject("Internship_Learning") %>%
  text("Pass?")

smtp <- server(host = "123.45.678.901",
               port = 465,
               username = "abc@company123.com.my",
               password = "***",
               secure = "ssl"
)
smtp(email, verbose = TRUE)

报错信息

> rlang::last_trace()
<error/purrr_error_rate_excess>
Error in `rate_sleep()`:
! Request failed after 5 attempts.
---
Backtrace:
    ▆
 1. └─emayili (local) smtp(email, verbose = TRUE)
 2.   └─purrr (local) send_mail(...) at emayili/R/server.R:190:4
 3.     └─purrr::rate_sleep(rate, quiet = quiet)
Run rlang::last_trace(drop = FALSE) to see 3 hidden frames.
> rlang::last_trace(drop = FALSE)
<error/purrr_error_rate_excess>
Error in `rate_sleep()`:
! Request failed after 5 attempts.
---
Backtrace:
    ▆
 1. └─emayili (local) smtp(email, verbose = TRUE)
 2.   └─purrr (local) send_mail(...) at emayili/R/server.R:190:4
 3.     └─purrr::rate_sleep(rate, quiet = quiet)
 4.       └─purrr:::stop_rate_excess(rate)
 5.         └─cli::cli_abort(...)
 6.           └─rlang::abort(...)

参考截图说明

  • 截图1:展示邮件客户端SMTP配置界面,包含服务器地址、端口、加密方式等核心配置项
  • 截图2:展示邮件客户端的认证设置界面,包含登录账号、密码/授权码输入区域

排查方向及解决建议

  1. 网络环境验证

    • 关闭VPN后测试,部分公司网络会封禁SMTP端口,可切换至手机热点运行代码,排除企业网络限制。
    • 用telnet命令测试SMTP服务器连通性:
      telnet 123.45.678.901 465
      
      若无法连通,说明网络层面被拦截,需联系IT部门开放对应端口权限。
  2. SMTP配置核对

    • 对照截图中的邮件客户端配置,确保host、port、secure参数完全匹配:
      • 若客户端使用STARTTLS加密,需将secure设为"starttls",对应端口通常为587。
      • 部分企业邮箱要求使用授权码而非登录密码,确认密码字段是否为正确的授权码。
  3. 代码调试优化

    • 开启debug模式查看连接细节:
      smtp(email, verbose = TRUE, debug = TRUE)
      
      可获取连接过程中的具体错误提示,定位问题根源。
    • 简化代码逻辑,去掉dplyr管道用基础写法测试:
      email <- envelope()
      email <- from(email, sender)
      email <- to(email, recipient)
      email <- subject(email, "Internship_Learning")
      email <- text(email, "Pass?")
      
  4. 替代方案

    • 若企业网络限制严格,可尝试调用公司内部邮件服务器的API接口(如有提供);或使用curl包对接第三方邮件服务API(如SendGrid,需提前申请API密钥)。

内容的提问来源于stack exchange,提问作者Gambit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:35:10