我有一个基本上通过IMAP访问电子邮件的脚本,然后查找所有.wav音频并将其下载到服务器本地的文件夹中。
我正努力让它通过IMAP访问Office 365。
继续说不能打开流{outlook.office365.com:993/imap/ssl/novalidate-cert}Inbox。
&安培;
无法连接至{outlook.office365.com:993/imap/ssl/novalidate-cert}INBOX:登录失败次数过多
请参阅下面的完整脚本;
<?php
$MSG_DIR = "D:/Voicemail/Messages/";
$USER = "xx";
$PASS = "xx";
// connect to JARVIS
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;font-weight: bold;color:#2471b6'>Connecting to J.A.R.V.I.S.</div>\n<br/>";
$host = "{outlook.office365.com:993/imap/ssl/novalidate-cert}Inbox";
$mbox=imap_open($host,$USER,$PASS, NULL, 1, array('DISABLE_AUTHENTICATOR' => 'GSSAPI')) or die("Can't connect: " . imap_last_error());
// Look over mailbox
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;font-weight: bold;color:#2471b6'>Connection Complete...</div>\n<br/>";
$MC = imap_check($mbox) or die("Can't check for messages");
$overview = imap_fetch_overview( $mbox, "1:".$MC->Nmsgs, 0 ) or die( "Can't get headers");
$countThis = 0;
foreach ( $overview as $email )
{
$subject = $email->subject;
$udate = $email->udate;
if( preg_match('/Voice Message from ([0-9]+)/', $subject, $groups) ||
preg_match('/Voice Message from ([a-zA-Z]\w+)/', $subject, $groups) )
{
$filename = $MSG_DIR."/".$groups[1].date(" d-m H-i-s", $udate).".wav";
if( file_exists( $filename ) )
{
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;color:#000000'>Skipping $filename...</div>\n";
}
else
{
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;color:#000000'>Extracting $filename...</div>\n";
$structure = imap_fetchstructure($mbox,$email->uid, FT_UID) or die( "could not fetch structure");
foreach ( $structure->parts as $part )
{
if( $part->subtype == "X-WAV" || $part->subtype=="WAV" || $part->subtype=="OCTET-STREAM")
{
// found it!
$body = imap_base64( imap_fetchbody( $mbox, $email->uid, 2, FT_UID ) ) or die( "Could not fetch part");
file_put_contents( $filename, $body );
}
else
{
}
}
}
$countThis++;
}
}
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;font-weight: bold;color:#2471b6'></br>Found $countThis Voicemails\r\n</div>";
echo "<div style ='font:11px/21px Arial,tahoma,sans-serif;font-weight: bold;color:#ff0000'></br>Disconnecting from J.A.R.V.I.S.\r\n</div>";
imap_close($mbox);
?>
以前在Exchange 2010上使用过。
希望有人可以提供帮助。
谢谢!
答案 0 :(得分:1)
固定!
这是密码。
PHP在密码看起来并不像$。
答案 1 :(得分:1)
问题是在PHP中,变量是用符号$声明的。 PHP解释用双引号&#34;&#34;声明的字符串的内容。如果你有:
$foo = "var";
你做了:
echo "$foo";
您将获得 var 。但是,如果您使用单引号&#39;&#39;,PHP将不会解释内容:
$foo = "var";
echo '$foo';
它会逐字地返回 $ foo 。 作为一个小注释,我补充一点,在执行时使用单引号更快,因为PHP不必解释它,但在这种情况下,您将无法使用链中的变量。 问候。