转载:用MATLAB发送带附件的邮件(以163邮箱为例)

回复
头像
dapanji
帖子: 3036
注册时间: 2018年 1月 12日 16:41

转载:用MATLAB发送带附件的邮件(以163邮箱为例)

#1

帖子 dapanji » 2022年 1月 06日 23:15

https://xian6ge.cn/posts/ab409a27/

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

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

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

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

代码: 全选

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('Error 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
看图出奇迹,看基本面穷三代

回复