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

如何在MATLAB中使用sendmail函数指定抄送(CC)地址

如何在MATLAB的sendmail函数中指定抄送(CC)地址?

我之前用MATLAB发邮件的时候也碰到过这个问题——默认的sendmail调用确实没有直接的CC参数,但借助MATLAB和Java邮件API的集成,我们可以轻松实现抄送功能。下面结合你给出的基础代码,修改出带抄送的版本:


方法:通过邮件对象添加抄送(兼容绝大多数MATLAB版本)

这个方法的核心是先让sendmail创建邮件对象但不发送,然后给对象添加抄送收件人,最后手动触发发送。完整代码如下:

% 1. 准备邮件基础信息
body = '这是测试邮件的正文内容';
attachments = 'attachment.pdf';
primary_addr = 'main-recipient@example.com'; % 主收件人
cc_addrs = {'cc-person1@example.com', 'cc-person2@example.com'}; % 多个抄送地址用细胞数组存储

% 2. 配置SMTP服务器偏好(和你原来的代码一致)
setpref('Internet', 'SMTP_Server', 'smtp.office365.com');
setpref('Internet', 'E_mail', 'your-account@domain.com');
setpref('Internet', 'SMTP_Username', 'your-account@domain.com');
setpref('Internet', 'SMTP_Password', 'your-app-specific-password'); 
% 注意:Office365现在推荐用「应用专用密码」,而非账号原密码(需开启两步验证)

% 3. 设置SMTP连接属性(原代码不变)
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth', 'true');
props.setProperty('mail.smtp.port', '587');
props.setProperty('mail.smtp.starttls.enable', 'true');

% 4. 创建邮件对象并添加抄送
% 使用dryrun=true参数,让sendmail只生成邮件对象,不直接发送
msg = sendmail(primary_addr, '测试邮件主题', body, attachments, 'dryrun', true);

% 遍历抄送列表,逐个添加
for addr = cc_addrs
    msg.addRecipient(javax.mail.Message.RecipientType.CC, addr{1});
end

% 最后发送配置好的邮件
msg.send;

关键细节说明

  • 如果只有单个抄送地址,直接用字符串代替细胞数组即可,比如cc_addrs = 'single-cc@example.com';
  • 若使用Office365/Outlook的SMTP服务,必须开启账号的两步验证,然后生成应用专用密码填入SMTP_Password,否则会被服务器拒绝
  • 如果你用的是其他SMTP服务(比如QQ邮箱、Gmail),只需要修改对应的服务器地址、端口和验证方式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:47:32