如何在 Outlook 2007 中使用 Mail::Outlook 创建邮件
How to create mail using Mail::Outlook with Outlook 2007
我正在尝试使用 Mail::Outlook
创建邮件。我遵循了这个我认为是正确的答案:
Sending email using Perl
Mail::Outlook CPAN
我根据教程创建了一个简单的代码:
use strict;
use warnings;
use Mail::Outlook;
use Data::Dumper;
my $outlook = new Mail::Outlook();
print Dumper($outlook);
print Dumper(Win32::OLE->LastError()); #added in response to comment
my $message = $outlook->create();
$message->To('sample@gmail.com');
$message->Cc('another@gmail.com');
$message->Subject('Testing sending mail from perl');
$message->Body('Hi, This is the body! wahahah!');
$message->save();
1;
我使用的电子邮件是真实的,但为了隐私起见,我在这里替换了它..
当我运行脚本时,出现错误:
$VAR1 = undef;
Can't call method "create" on an undefined value at send_mail.pl line 14.
变量$outlook
似乎在new Mail::Outlook()
期间没有初始化。模块 Mail::Outlook returns undef
如果启动一个新对象失败..现在,我想知道为什么会这样..我认为这是因为 outlook 的安全问题,但我不知道知道如何调整它。请各位perl高手,有相同经历或者遇到过的,会有所帮助..
我在 windows 7 中使用 Microsoft Outlook 2007,并且我安装了 ppm install Mail-Outlook
。
我的主要问题是:如何在 Outlook 2007
中使用 Mail::Outlook 创建邮件
更新
我尝试使用 print Dumper(Win32::OLE->LastError());
并打印了这个错误:
$VAR1 = 'Win32::OLE(0.1709) error 0x80080005: "Server execution failed"';
按照 Tim Tom 的指示,稍作搜索后,我看到了一篇关于错误的文章 Win32::OLE(0.1709) error 0x80080005: "Server execution failed"
COM Process Elevation Mismatching
表示outlook应用程序和perl脚本的访问级别必须相同:
To make a long (and frustrating) story short, the problem was that I was running the script from a CMD.EXE window which was elevated (“Run as Administrator”). When I would run Outlook from a non elevated process (as a normal user would) there appeared to be a process elevation mismatch.
这在我的情况下是一样的..我是 运行 我的 cmd 作为管理员,而我的 outlook 是 运行 通常..
MSDN 对此有发言权:
COM security is aware of integrity levels and does not allow lower-integrity clients to bind to class instances running at a higher integrity level.
将我的命令行更改为与 outlook 应用程序相同的高度级别后,perl 脚本完美运行!
注意: perl 在使用 print Dumper(Win32::OLE->LastError());
时如果没有错误会崩溃..
我正在尝试使用 Mail::Outlook
创建邮件。我遵循了这个我认为是正确的答案:
Sending email using Perl
Mail::Outlook CPAN
我根据教程创建了一个简单的代码:
use strict;
use warnings;
use Mail::Outlook;
use Data::Dumper;
my $outlook = new Mail::Outlook();
print Dumper($outlook);
print Dumper(Win32::OLE->LastError()); #added in response to comment
my $message = $outlook->create();
$message->To('sample@gmail.com');
$message->Cc('another@gmail.com');
$message->Subject('Testing sending mail from perl');
$message->Body('Hi, This is the body! wahahah!');
$message->save();
1;
我使用的电子邮件是真实的,但为了隐私起见,我在这里替换了它.. 当我运行脚本时,出现错误:
$VAR1 = undef;
Can't call method "create" on an undefined value at send_mail.pl line 14.
变量$outlook
似乎在new Mail::Outlook()
期间没有初始化。模块 Mail::Outlook returns undef
如果启动一个新对象失败..现在,我想知道为什么会这样..我认为这是因为 outlook 的安全问题,但我不知道知道如何调整它。请各位perl高手,有相同经历或者遇到过的,会有所帮助..
我在 windows 7 中使用 Microsoft Outlook 2007,并且我安装了 ppm install Mail-Outlook
。
我的主要问题是:如何在 Outlook 2007
更新
我尝试使用 print Dumper(Win32::OLE->LastError());
并打印了这个错误:
$VAR1 = 'Win32::OLE(0.1709) error 0x80080005: "Server execution failed"';
按照 Tim Tom 的指示,稍作搜索后,我看到了一篇关于错误的文章 Win32::OLE(0.1709) error 0x80080005: "Server execution failed"
COM Process Elevation Mismatching
表示outlook应用程序和perl脚本的访问级别必须相同:
To make a long (and frustrating) story short, the problem was that I was running the script from a CMD.EXE window which was elevated (“Run as Administrator”). When I would run Outlook from a non elevated process (as a normal user would) there appeared to be a process elevation mismatch.
这在我的情况下是一样的..我是 运行 我的 cmd 作为管理员,而我的 outlook 是 运行 通常..
MSDN 对此有发言权:
COM security is aware of integrity levels and does not allow lower-integrity clients to bind to class instances running at a higher integrity level.
将我的命令行更改为与 outlook 应用程序相同的高度级别后,perl 脚本完美运行!
注意: perl 在使用 print Dumper(Win32::OLE->LastError());
时如果没有错误会崩溃..