MATLAB: 用MATLAB发送邮件(以163邮箱为例)

来源:互联网 发布:星际航行概论 知乎 编辑:程序博客网 时间:2024/05/19 08:04

MATLAB: 用MATLAB发送邮件(以163邮箱为例)

问题描述

有时我们运行一些耗时很长的程序,就让计算机自己跑,人走开了。这种情况下如果程序出错或者运行完毕,程序员不能及时获得通知。但是强大的MATLAB可以发送email,我们可以利用这个功能来提升开发体验。

邮箱设置

建议专门注册一个邮箱用于MATLAB发送邮件,方便和其他邮件区分,也比较安全。具体步骤如下:

  1. 注册一个邮箱,如mymatlab@hhh.com;
  2. 在网页端,开启SMTP服务,记录SMTP服务器地址,例如网易163邮箱的是smtp.163.com;
  3. 在MATLAB中配置邮箱账户:
% 账号设置mail = 'mymatlab@hhh.com';  % ①邮箱地址password = 'abcdefg'; % ②密码% 服务器设置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');

也就是说,只有①②③三处需要改,其他都复制就行了。另外,需要注意的是,如果用163邮箱,那么代码中填写的密码不是原始密码,而是“客户端授权码”:

授权码是用于登录第三方邮件客户端的专用密码。
适用于登录以下服务: POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

发送邮件

前面我们已经设置完毕,那么怎么发送邮件呢?
使用sendmai()函数。

% 举个例子,比如想把前面运行得到精确度数据发送给程序员accuracy=0.888; % 收件人receiver='myself@123.com'; % 邮件标题mailtitle='pattern recognition';% 邮件内容mailcontent=['mission compeleted!  ',...    'accuracy=',num2str(accuracy)];% 发送sendmail(receiver, mailtitle, mailcontent);

收到的邮件:
邮件效果图

更进一步

那么既然这个功能我们要经常使用,总不能每次都重新设置吧?不如把这些代码封装起来,打包成一个函数:

function mailme(mailtitle,mailcontent)% 账号设置mail = 'mymatlab@hhh.com';  % ①邮箱地址password = 'abcdefg'; % ②密码% 服务器设置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@123.com'; % ④我的收件邮箱sendmail(receiver,mailtitle,mailcontent);end

这样一来,需要发送邮件的时候,只要mailme(标题,内容)就行啦!

2 0
原创粉丝点击