使用sendmail函数通过MATLAB发送电子邮件

时间:2017-06-27 14:55:31

标签: matlab smtp gmail

我正在尝试使用MATLAB sendmail函数发送电子邮件。我一直按照此链接上的Mathworks中sendmail功能分析的说明进行操作:https://uk.mathworks.com/help/matlab/import_export/sending-email.html

我在命令窗口中使用的代码如下:

setpref ('Internet','E_mail','myemailaddress@gmail.com');
setpref ('Internet','SMTP_Server','smtp.gmail.com') ;
sendmail('emailofreceiver@gmail.com','texttobesent') ;

运行这些命令后我收到的消息如下:

使用sendmail时出错(第169行)

无法连接到SMTP主机:smtp.gmail.com,port:25;

连接超时:连接

根据我的理解,我必须更改我调用的第二个setpref函数内的参数,但我不确定根据返回的gmail smtp端口将它们包括在内。任何帮助将非常感谢!提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可能还需要设置与SSL相关的内容。尝试在SMTP_Username和SMTP_Password之外添加以下内容,它应该适用于gmail:

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.fallback', 'false');
props.setProperty('mail.smtp.socketFactory.port', '465');

答案 1 :(得分:0)

正如@Xiangru Li在答案中所说,确实需要设置与SSL相关的内容。但这还不够。最后,我不得不更改我的谷歌设置,以打开不太安全的应用程序的访问权限。有关此操作的信息,请访问以下链接:https://support.google.com/accounts/answer/6010255?hl=en

因此,执行此操作后,以下代码成功,我设法发送了一封电子邮件:

setpref('Internet','SMTP_Server','smtp.gmail.com');  
setpref('Internet','E_mail','myemailaddress');
setpref('Internet','SMTP_Username','myusername');
setpref('Internet','SMTP_Password','mypassword');
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('emailofreceiver','testtobesent') ;