Matlab 发送带附件的邮件

通过 Matlab 自带的一些功能可以用 STMP 服务可以给指定的邮箱发送邮件。在跑一个比较大的程序的时候,可以用来通知程序跑完了或者出错了。 并且,Matlab 是支持将程序保存的结果文件以附件的形式发送。也是间接的起到备份结果的作用。

通过 Matlab 发送邮件主要是下面的语句

1
sendmail(receiver,mailtitle,[mailcontent,filePath]);

包含四个参数,receiver 指的是收件邮箱,mailtitle 是邮件的主题,mailcontent 是邮件的正文内容,filePath 是附件文件,我用的是文件的绝对路径。这四个参数都是字符串类型。

当然发送邮件还需要一些其他的设置,封装好的函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function mailMe(mailcontent,filePath,mailtitle)
% 账号设置
mail = 'maresult@example.com'; % ①邮箱地址
password = 'password'; % ②密码
if nargin <3
mailtitle='Matlab Result';% 邮件标题,因为我的使用习惯,这个不会经常更改。所以一般缺省
end

% 服务器设置
setpref('Internet','E_mail',mail);
setpref('Internet','SMTP_Server','smtp.163.com'); % ③SMTP服务器
setpref('Internet','SMTP_Username',mail);
setpref('Internet','SMTP_Password',password);
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
props.setProperty('mail.smtp.socketFactory.port','465');
% 发送邮件
receiver='myself@example.com'; % ④我的收件邮箱
try
if nargin==1
sendmail(receiver,mailtitle,mailcontent);
elseif nargin==2
sendmail(receiver,mailtitle,mailcontent,filePath);
elseif nargin==3
sendmail(receiver,mailtitle,mailcontent,filePath);
else
error('Eror input arguments');
end
catch
fprintf('邮件发送失败,内容:\n');
fprintf(mailcontent);
end

这样,就可以向指定邮箱发送带附件的邮件了。

需要注意的是,一般而言,附件不要超过 30mb,不过国内的 163 和 QQ 邮箱都支持 50mb 大小的附件,但如果发送方邮箱是这两方的话,设定的密码就不是你原本的密码,而是 “授权码”。可以在邮箱的 “设置” 或者 “安全与密码” 里找到。接收的邮箱推荐选择 QQ 邮箱,新邮件到来的时候,可以通过 QQ 与微信提醒,并且还有不限量的邮箱空间。或者各家运营商的手机邮箱也不错,每月有 100 或 200 条的免费邮箱短信提醒。可以实时接收到程序发来的消息。

参考:
https://blog.csdn.net/eswai/article/details/53454987