1、sendmail向地址列表发送电子邮件理论知识
语法
sendmail(recipients,subject)
sendmail(recipients,subject,message)
sendmail(recipients,subject,message,attachments)
说明
sendmail(recipients,subject) 向 recipients 发送具有指定 subject 的电子邮件。对于单个收件人,请将 recipients 指定为字符向量或字符串。对于多个收件人,请将 recipients 指定为字符向量元胞数组或字符串数组。subject 必须是字符向量或字符串。
sendmail(recipients,subject,message) 包括指定的 message。如果 message 是字符向量或字符串,则 sendmail 自动在 75 个字符处对文本换行。要强制在消息文本中换行,请使用 10,如示例中所示。如果 message 是字符向量元胞数组或字符串数组,则每个元素代表一行新文本。
sendmail(recipients,subject,message,attachments) 附加 attachments 输入参数中列出的文件。attachments 可以是字符向量、字符向量元胞数组或字符串数组。
示例
将包含两个附件的消息发送到假设的电子邮件地址:sendmail('user@otherdomain.com',...
'Test subject','Test message',...
{'folder/attach1.html','attach2.doc'});
将包含强制换行符(使用 10)的消息发送到假设的电子邮件地址:sendmail('user@otherdomain.com','New subject', ...
['Line1 of message' 10 'Line2 of message' 10 ...
'Line3 of message' 10 'Line4 of message']);
生成的消息为:
Line1 of message
Line2 of message
Line3 of message
Line4 of message
提示
- sendmail 函数不支持 HTML 格式的消息。不过,您可以按附件形式发送 HTML 文件。
- 如果 sendmail 无法根据系统注册表确定您的电子邮件地址或传出 SMTP 邮件服务器,请使用 setpref 函数指定这些设置。例如:
- setpref('Internet','SMTP_Server','my_server.example.com');
setpref('Internet','E_mail','my_email@example.com');
要确定用于调用 setpref 的 SMTP 服务器,请检查您的电子邮件应用程序的预设,或咨询您的电子邮件系统管理员。如果您无法轻易地确定服务器名称,请尝试 'mail' 这个常见默认值,例如:
setpref('Internet','SMTP_Server','mail');
- 默认情况下,sendmail 函数不支持需要身份验证的电子邮件服务器。要支持这些服务器,请使用以下形式的命令更改您的系统设置并设置 SMTP 用户名和密码的预设:
- props = java.lang.System.getProperties;
- props.setProperty('mail.smtp.auth','true');
- setpref('Internet','SMTP_Username','myaddress@example.com');
setpref('Internet','SMTP_Password','mypassword');
- 要覆盖默认的字符编码,请按如下方式设置电子邮件字符编码的预设:
setpref('Internet','E_mail_Charset',encoding);
其中 encoding 是一个指定字符编码的字符向量,例如 'SJIS'。
2、实际操作及环境设置
一般情况下直接用sendmail是不行的,因为sendmail 函数不支持需要身份验证的电子邮件服务器。所以还需要设置一下环境
1.首先关闭QQ安全中心的邮箱保护
2.需要先开启邮箱的smtp服务,下面以qq邮箱为例,打开QQ邮箱点击设置下的账户
3.开启 把红色框的那个,点击开启后,最后你会获得一个授权码,记住这个授权码,然后第一步就完成了
4环境配置好了接下来运行代码
clc clear %author:猪猪侠 %date;2019-06-06 props = java.lang.System.getProperties; props.setProperty('mail.smtp.auth','true'); setpref('Internet','SMTP_Username',Your_Mail); % Your_Mail是你自己的邮箱 setpref('Internet','SMTP_Password',Your_Password); % 如果是163邮箱,那最后的那个字符串就是smpt.163.com % 反正就是邮箱中@后面和.com前面的那几个字符放在smpy.和.com中间 % Your_Password是你的授权码 sendmail('收件人的邮箱', 'matlab邮箱测试', 'matlab邮箱测试','test.docx')