通过Matlab发送邮件要注意的问题
背景:
有時(shí)候在實(shí)驗(yàn)室,通過(guò)MATLAB做一個(gè)計(jì)算或者仿真,需要花比較長(zhǎng)的時(shí)間,比如十幾個(gè)小時(shí)甚至幾天。我們希望MATLAB跑完后,我們能夠得到通知,或者能夠了解到結(jié)果。 這個(gè)時(shí)候,可以設(shè)置在MATLAB跑完后,給我們發(fā)個(gè)郵件,并且把一些計(jì)算結(jié)果當(dāng)做附件給我們發(fā)過(guò)來(lái)。如果手機(jī)綁定了郵箱,我們就可以立刻知道跑完了,并且大致了解結(jié)果。
一個(gè)小Demo
我做了一個(gè)小的demo來(lái)實(shí)現(xiàn)以上的需求。這個(gè)demo在MATLAB 2018b上做的,郵件發(fā)送使用的網(wǎng)易126郵箱。
demo功能介紹
在Simulink中建立了一個(gè)簡(jiǎn)單的模型(沒(méi)有什么實(shí)際意義,僅僅用于展示)代表我們要做仿真計(jì)算的任務(wù)。 當(dāng)這個(gè)仿真運(yùn)行完成后,向我的郵箱發(fā)送一封郵件,把仿真結(jié)果作為正文內(nèi)容發(fā)過(guò)來(lái),附件為仿真結(jié)果的一張圖形。 假設(shè)我的郵件地址為 whoispo@126.com ,當(dāng)然這是一個(gè)假的地址 ?
準(zhǔn)備工作
為了發(fā)郵件,我們需要上我們的126郵箱,對(duì)其進(jìn)行一定的設(shè)置,才能讓MATLAB把我們的郵件發(fā)送出去。雖然我只是以126為例,但是其他郵箱應(yīng)該也有類似的設(shè)置方法。
在126郵箱中有一個(gè)【設(shè)置】選項(xiàng)
選擇其中的【POP3/SMTP/IMAP】
然后選中 【POP3/SMTP服務(wù)】和【IMAP/SMTP】服務(wù)
記住這里的smtp地址,待會(huì)會(huì)用到
然后開啟客戶端授權(quán)密碼,這個(gè)密碼可以設(shè)置成與郵箱的密碼不一樣,主要用于像這種代發(fā)代收的客戶端的,設(shè)置成不一樣更加安全。通過(guò)MATLAB發(fā)送郵件,其實(shí)可以認(rèn)為MATLAB也是一個(gè)客戶端。
以上,就把郵箱的設(shè)置弄完了
Simulink模型
從一個(gè)正態(tài)分布生成器中產(chǎn)生數(shù)據(jù),將數(shù)據(jù)的最大、最小值導(dǎo)出到maxValue, minValue,并且所有數(shù)據(jù)導(dǎo)出到value, 時(shí)間序列導(dǎo)出到time。
仿真腳本
sim('simple_model');plot(time, value);rlt_str = sprintf('Max=%.2f\nMin=%.2f\n', maxValue, minValue); rlt_file = 'rlt.jpg'; saveas(gcf, rlt_file); mail_rlt('Simulation Result', rlt_str, rlt_file);其中的mail_rlt函數(shù)的代碼如下
function mail_rlt(mailtitle,mailcontent,attached_file)receiver='tutor@mail.tsinghua.edu.cn'; % 對(duì)方的郵件地址sender = 'whoispo@126.com'; % 本人郵箱地址password = '123456'; % 授權(quán)密碼非登錄密碼smtp_addr = 'smtp.126.com' %smtp服務(wù)器地址,可以從郵箱配置中查到% 服務(wù)器設(shè)置setpref('Internet','E_mail',sender);setpref('Internet','SMTP_Server',smtp_addr); setpref('Internet','SMTP_Username',sender);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');sendmail({sender, receiver},mailtitle,mailcontent, attached_file); %為了避免126將此郵件識(shí)別為垃圾郵件(報(bào)錯(cuò)554 DT:SPM)發(fā)不出去fprintf('Send Successful\n'); end這里要注意的一個(gè)地方,就是在發(fā)送時(shí)要把自己的郵件地址也放到收件人列表中,這樣做可以避免網(wǎng)易郵箱把這封郵件誤認(rèn)為是垃圾郵件,從而拒絕,發(fā)不出去。
總結(jié)
以上是生活随笔為你收集整理的通过Matlab发送邮件要注意的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows下的乱码问题
- 下一篇: 关闭Visual Studio中的自动代