MATLAB發送郵件

下午學習MATLAB的時候,翻看Demo文檔,想查找些玩樂的代碼,比如說用MATLAB調用windows下面的應用程序和系統進程,比如要運行電腦中的電影或者歌曲,
用system如下:
system('E:/娱乐/电影/放牛班的春天 唱诗班男孩.rmvb')
程序運行開,MATLAB會佔用內存,一直busy,即要想關閉MATLAB首先要關閉所運行程序,結束之後返回ans=0,說明成功找到并運
行。顯然這樣很浪費資源,因此采用winopen,如下:
winopen('E:/娱乐/电影/放牛班的春天 唱诗班男孩.rmvb'),這樣運行之後便與matlab無瓜葛。
進行批處理文件后,需要進行定時定點關機,使用system('shutdown.exe -s -t 3600');在一個小時后關機接著又不小心看到sendmail函數,當時就覺得挺好玩,用MATLAB的發smtp邮件,假如做個循環,那豈不是......
MATLAB中的Demo中有詳細介紹。但是不同的MATLAB版本會遇到不同的問題。
首先,設定设定smtp服务器:
setpref('Internet','SMTP_Server','smtp.email.com');%將email改為平時所用的郵箱,如gmail
setpref('Internet','E_mail','邮箱地址');
其次,在7.0以下的版本中sendmail的一些smtp语法跟不上当前的时代,需要修改语句:
在Matlab7.0版sendmail.m的140到150行左右:
sendSMTP(out, in, ['MAIL FROM: ' from], 1);改为:sendSMTP(out, in, ['MAIL FROM: <' from '>'], 1);
sendSMTP(out, in, ['RCPT TO: ' to{i}], 1); 改为:sendSMTP(out, in, ['RCPT TO: <' to{i} '>'], 1);
sendSMTP(out, in, ['RCPT TO: ' to], 1);改为:sendSMTP(out, in, ['RCPT TO: <' to '>'], 1);
在第210~220行附近:
sendSMTP(out, in, '.',1); 改为:sendSMTP(out, in, sprintf('/n./n'), 1);
在7.0版本以上不需要修改即可用,輸入以下代碼:
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');
然而,現行的smtp服务器都需要身份验证,Matlab7.0版的sendmail.m不支持身份验证,向m文件中添加验证语句。
打开Matlab7.0版的sendmail.m 找到130多行的语句:
“sendSMTP(out, in, 'HELO mailman', 1);”,
在此行之后添加以下三行:
sendSMTP(out, in, 'auth login', 1);
sendSMTP(out, in, '加密的用户名', 1);
sendSMTP(out, in, '加密的密码', 1);
然後輸入:
setpref('Internet','SMTP_Server','smtp.email.com');
setpref('Internet', 'E_mail', '用戶名');
setpref('Internet', 'E_mail', '密碼');
最後,可以向別人發郵件了:
sendmail('收件人地址','邮件标题',{'邮件内容','內容','內容'},'附件地址')
注意,Matlab发送邮件是通过Java接口,速度比较慢,所以不推荐添加太大的附件,以免发送失败。並且MATLAB不支持發送中文信息,會出現亂碼,當然假如十分特別有這種想法的,可以先用函數double將中文轉化為數字矩陣保存,然後用setstr再轉為中文即
可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值