在 Matlab 中使用 FROM 字段发送电子邮件
Send email with FROM field in Matlab
我正在尝试在我的 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;
但是,当我从那时开始添加时,出现错误:
No public property From exists for class
Interface.00063034_0000_0000_C000_000000000046.
下面是MailItem
class的所有属性,也就是你通过这个接口创建的:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_members.aspx
看来您需要设置 Sender
或 SendUsingAccount
。但是,由于它们都不采用字符串,因此您必须使用 matlab 接口检索适当类型的对象。在我看来,您应该可以使用
mail.SendUsingAccount= h.Session.Accounts.Item(3); %Select the third account
设置这个属性;然而,根据 this source 的说法,这似乎可能存在一些问题。不幸的是,我没有 outlook 设置,有些我无法自己尝试。
如前所述,MailItem
对象中没有 From
属性。有很多属性指的是发件人:Sender
、SenderEmailAddress
、SenderEmailType
、SenderName
...但是除了Sender
之外,所有这些都是read-only。这意味着它们无法设置,您必须唯一地依赖 Sender
属性,它接受类型 AddressEntry.
的对象实例
我不确定这是否有效,因为这种机制很容易被恶意用户滥用...但您可以尝试以下操作:
if (nargin == 5)
recipient = h.Session.CreateRecipient(from);
mail.Sender = recipient.AddressEntry;
end
我正在尝试在我的 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;
但是,当我从那时开始添加时,出现错误:
No public property From exists for class Interface.00063034_0000_0000_C000_000000000046.
下面是MailItem
class的所有属性,也就是你通过这个接口创建的:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_members.aspx
看来您需要设置 Sender
或 SendUsingAccount
。但是,由于它们都不采用字符串,因此您必须使用 matlab 接口检索适当类型的对象。在我看来,您应该可以使用
mail.SendUsingAccount= h.Session.Accounts.Item(3); %Select the third account
设置这个属性;然而,根据 this source 的说法,这似乎可能存在一些问题。不幸的是,我没有 outlook 设置,有些我无法自己尝试。
如前所述,MailItem
对象中没有 From
属性。有很多属性指的是发件人:Sender
、SenderEmailAddress
、SenderEmailType
、SenderName
...但是除了Sender
之外,所有这些都是read-only。这意味着它们无法设置,您必须唯一地依赖 Sender
属性,它接受类型 AddressEntry.
我不确定这是否有效,因为这种机制很容易被恶意用户滥用...但您可以尝试以下操作:
if (nargin == 5)
recipient = h.Session.CreateRecipient(from);
mail.Sender = recipient.AddressEntry;
end