我正在尝试使用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端口将它们包括在内。任何帮助将非常感谢!提前谢谢!
答案 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') ;