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



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

此函数有效(不带 from(:

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;

但是,当我从那时添加时,我收到错误:

类不存在公共属性 From Interface.00063034_0000_0000_C000_000000000046。

如前所述,MailItem对象中没有From属性。有许多属性涉及发件人:SenderSenderEmailAddressSenderEmailTypeSenderName...但除Sender外,所有这些都是只读的。这意味着无法设置它们,并且您必须唯一地依赖于 Sender 属性,该属性接受 AddressItem 类型的对象实例。

我不确定这是否有效,因为这样的机制很容易被恶意用户滥用......但您可以尝试以下操作:

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

以下是 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

设置此属性; 但是,根据此消息来源,似乎可能存在一些问题。不幸的是,我没有 Outlook 设置,有些我无法自己尝试。

最新更新