在Matlab中使用FROM字段发送电子邮件

时间:2018-03-12 18:30:52

标签: matlab outlook activex

我正在尝试在matlab函数中添加字段FROM以发送带有outlook的电子邮件。

此功能有效(没有来自):

function sendolmail(to,subject,body,attachments, from)
%Sends email using MS Outlook. The format of the function is 
%Similar to the SENDMAIL command.
% Create object and set parameters.
h = actxserver('outlook.Application');
mail = h.CreateItem('olMail');
mail.Subject = subject;
mail.To = to;
mail.BodyFormat = 'olFormatHTML';
mail.HTMLBody = body;

% THIS PART DOES NOT WORK
if nargin ==5
   mail.From = from;
end

% Add attachments, if specified.
if nargin == 4
    for i = 1:length(attachments)
        mail.attachments.Add(attachments{i});
    end
end
% Send message and release object.
mail.Send;
h.release;

然而,当我从那时起添加时,我收到错误:

  

没有公共属性来自类   Interface.00063034_0000_0000_C000_000000000046。

2 个答案:

答案 0 :(得分:1)

以下是MailItem类的所有属性,这是您通过此界面创建的属性:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_members.aspx

您似乎需要设置SenderSendUsingAccount。但是,由于这些都不占用字符串,因此您必须使用matlab接口检索适当类型的对象。在我看来,你应该能够使用

mail.SendUsingAccount= h.Session.Accounts.Item(3); %Select the third account

设置此属性;然而,根据this source,似乎可能存在一些问题。不幸的是,我没有设置外观,有些我自己无法尝试。

答案 1 :(得分:1)

如前所述,From个对象中没有MailItem属性。引用发件人的属性有很多:SenderSenderEmailAddressSenderEmailTypeSenderName ...但除了Sender之外,所有这些属性都被读取只要。这意味着它们无法设置,您必须唯一依赖于Sender属性,该属性接受AddressEntry类型的对象实例。

我不确定这是否有效,因为恶意用户很容易滥用此类机制......但您可以尝试以下方法:

if (nargin == 5)
    recipient = h.Session.CreateRecipient(from);
    mail.Sender = recipient.AddressEntry;
end