Skip to content

Instantly share code, notes, and snippets.

@dgleich
Last active June 12, 2023 12:23
Show Gist options
  • Save dgleich/9243281 to your computer and use it in GitHub Desktop.
Save dgleich/9243281 to your computer and use it in GitHub Desktop.
A function to send an email from a gmail account in matlab
function recipient = matlabmail(recipient, message, subject, sender, psswd)
% MATLABMAIL Send an email from a predefined gmail account.
%
% MATLABMAIL( recipient, message, subject )
%
% sends the character string stored in 'message' with subjectline 'subject'
% to the address in 'recipient'.
% This requires that the sending address is a GMAIL email account.
%
% MATLABMAIL( recipient, message, subject, sender, passwd )
%
% avoids using the stored credentials.
%
% Note: Authentication failed when my gmail account had 2-step verification enabled.
%
% Example:
%
% There's no example because we don't know your email address!
% Try to adapt the following:
%
% pause(60*(1+randi(5))); matlabmail('root@localhost.com', 'done pausing', 'command complete');
%
% See also SENDMAIL
if nargin<4
sender = 'dummyaddress@gmail.com';
psswd = 'password_of_dummy_address';
end
setpref('Internet','E_mail',sender);
setpref('Internet','SMTP_Server','smtp.gmail.com');
setpref('Internet','SMTP_Username',sender);
setpref('Internet','SMTP_Password',psswd);
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(recipient, subject, message);
@TWRogers
Copy link

TWRogers commented Aug 2, 2017

@neurolabusc

I had a similar problem and it was because I was using OpenJDK (Ubuntu 16.04, Matlab 2017a).

I had to use OpenJDK to avoid a display bug in Matlab's default JVM. But once I fixed that bug and went back to
the default JVM, the sendmail() worked correctly.

Would be nice to know how to fix sendmail for OpenJDK though

@GayathriSaravananRaja
Copy link

good working code.In sender, Gmail account setting will be changed.
https://www.google.com/settings/security/lesssecureapps

@PhilippeGer
Copy link

whatever i do. the port is not changing to 465 as it should be
Error using sendmail (line 175)
Could not connect to SMTP host: smtp.gmail.com, port: 25;
Connection refused: connect

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment