标签: exchange-server

使用 HTML Mime Mail for PHP 发送邮件,但需要通过 Exchange 服务器进行身份验证

首先,服务器:在 Windows 2003 Server sp2 上运行的 Exchange 2003 sp2

我有一个脚本,可将电子邮件发送到两个电子邮件帐户,一个名为 Students@,另一个名为 fs@(教职员工)。我们将这两个电子邮件帐户设置为仅接受来自交换服务器上经过身份验证的用户的传入电子邮件,以避免垃圾邮件/垃圾邮件。所以现在脚本发送的电子邮件不成功。我有合法用户的返回路径电子邮件,但它没有经过身份验证。我注意到当我尝试通过我的邮件客户端(Apple 的 Mail.app)发送测试时,由于我通过他们的 IMAP 服务器而不是通过交换使用电子邮件,我的电子邮件也失败了。

这是发送电子邮件的代码:

$mail = new htmlMimeMail();
$message = $today.$announcements.$food.$upcoming;
$mail->setHTML($message);
$mail->setSubject($subject);
$mail->setSMTPParams('mail.domain.com', 25, true, 'user', 'pass');
$mail->setFrom("no-reply@domain.com");
$mail->setReturnPath("webmaster@domain.com");

if($message)
    $mailresult = $mail->send(array($emailto));
Run Code Online (Sandbox Code Playgroud)

我以前从未使用 HTML Mime Mail for PHP ( http://www.phpguru.org/static/mime.mail.html ) 类对交换服务器进行身份验证。任何帮助,将不胜感激。

也许还有另一个 PHP 类可以轻松地允许使用 Exchange 服务器进行身份验证?

编辑:是否有任何 php 邮件类可以通过交换服务器正确验证?

另一个编辑:Exchange Server 使用 NTLM 身份验证并使用 Active Directory。希望这可以帮助。

php email authentication exchange-server

2
推荐指数
1
解决办法
1万
查看次数

无法删除与Exchange Web服务的会议

我们在使用EWS从Exchange删除约会时遇到问题.

我们尝试从这样删除Exchange中的约会

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = CurrentUser; // NetworkCredential
service.Url = new Uri(WebserviceAddress);
service.UseDefaultCredentials = false;

var appointment = Appointment.Bind(service, id);
deletedAppointment.Delete(DeleteMode.MoveToDeletedItems, SendCancellationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)

我们收到一条消息"无法删除对象"的异常.

捕获到Microsoft.Exchange.WebServices.Data.ServiceResponseException消息=无法删除对象.
Source = Microsoft.Exchange.WebServices StackTrace:Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary()at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalDeleteItems(IEnumerable1 itemIds,DeleteMode deleteMode,Nullable 1 sendCancellationsMode, Nullable1 affectedTaskOccurrences,ServiceErrorHandling errorHandling)at Microsoft.Exchange 1 sendCancellationsMode, NullableMicrosoft.Exchange.WebServices.Data.Appointment上的Microsoft.Exchange.WebServices.Data.Item.InternalDelete(DeleteMode deleteMode,Nullable 1 sendCancellationsMode, Nullable1 affectedTaskOccurrences)中的.WebServices.Data.ExchangeService.DeleteItem(ItemId itemId,DeleteMode deleteMode,Nullable 1 affectedTaskOccurrences).在OurNameSpace.ExchangeCalendar.ViewCalendars.ExchangeMethods.DeleteMeeting(ItemId id)中删除(DeleteMode deleteMode,SendCancellationsMode sendCancellationsMode)InnerException:

如果我们改为尝试使用取消会议

deletedAppointment.CancelMeeting();
Run Code Online (Sandbox Code Playgroud)

我们得到一个例外,消息"用户必须是CancelCalendarItem操作的组织者".这让我很困惑,因为当我检查deletedAppointment对象时,我的电子邮件地址被设置为组织者.

我们创建这样的会议

Appointment appointment = new Appointment(service);
appointment.Subject = subject;
appointment.Body = body; …
Run Code Online (Sandbox Code Playgroud)

.net c# sharepoint exchange-server exchangewebservices

2
推荐指数
1
解决办法
5043
查看次数

使用 EWS 托管 API 2.0 为现有约会绑定自定义扩展属性

我想使用自定义扩展属性进行唯一的预约以放入数据库。我使用 FindAppointments() 查找所有约会:

var appointments = _service.FindAppointments(WellKnownFolderName.Calendar, calendarView);
Run Code Online (Sandbox Code Playgroud)

然后我使用 foreach 循环完成所有约会:

foreach (var appointment in appointments)
Run Code Online (Sandbox Code Playgroud)

对于所有没有扩展属性的约会:

if (appointment.ExtendedProperties.Count <= 0)
Run Code Online (Sandbox Code Playgroud)

我绑定了一个自定义扩展属性,并使用我专门生成的唯一会议 ID (meetingId) 设置其值:uniqe int 编号:

var myPropertySetId = new Guid("{6C3A094F-C2AB-4D1B-BF3E-80D39BC79BD3}");
var extendedPropertyDefinition = new ExtendedPropertyDefinition(myPropertySetId, "RateTheMeetingId", MapiPropertyType.Integer);
var bindedAppointment = Appointment.Bind(_service, appointment.Id, new PropertySet(extendedPropertyDefinition));
bindedAppointment.SetExtendedProperty(extendedPropertyDefinition, meetingId);
bindedAppointment.Update(ConflictResolutionMode.AlwaysOverwrite);
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我搜索会议并尝试输出扩展属性和 tis 值,但我没有得到结果,它没有绑定。我的问题是我做错了什么以及您可以提供哪些其他解决方案来为现有约会提供自定义扩展属性?顺便说一句,我正在使用 MS Exchange server 2010_SP2。

c# exchange-server exchangewebservices ews-managed-api

2
推荐指数
1
解决办法
4586
查看次数

发送到EWS的SOAP消息,将其创建为常规邮件,而不是草稿

在EWS中,您可以创建像这样的草稿:

<tns:CreateItem MessageDisposition="SaveOnly">
  <tns:Items>
    <t:Message>
      <t:ItemClass>IPM.Note</t:ItemClass>
      <t:Subject>subject</t:Subject>
      <t:Body BodyType="HTML">body</t:Body>
      <t:IsRead>false</t:IsRead>
    </t:Message>
  </tns:Items>
</tns:CreateItem>
Run Code Online (Sandbox Code Playgroud)

我需要添加什么以创建常规消息而不是草稿,就像上面的代码一样(使用SOAP消息,而不是Managed API)?

xml soap exchange-server exchangewebservices

2
推荐指数
1
解决办法
344
查看次数

使用 EWS 托管 API 对邮件文件夹进行编号和过滤

我正在尝试使用Microsoft.Exchange.WebServices 托管 API和基于此 FindFolder() 示例的代码来枚举 Exchange 帐户中的仅电子邮件文件夹。

以下代码过滤所有空文件夹、 、TaskSearch和文件夹ContactsCalendar但仍返回FreeBusy DataRecoverable ItemsDeletions文件夹。

有没有办法可以从返回的文件夹中过滤这些内容,而不是通过名称上的字符串匹配来过滤这些内容?事实上,还有一种过滤方式Sent ItemsDeleted Items?(虽然这些不能被重命名(而且我对它们是什么有更好的了解!),但我不太担心简单地按名称过滤掉它们)

Dim moreFoldersToReturn As Boolean = True
Const FOLDER_PAGE_SIZE As Integer = 10
Dim folderOffset As Integer = 0

While moreFoldersToReturn

    ' Create a view with a page size of x
    Dim view As New FolderView(FOLDER_PAGE_SIZE, folderOffset)

    ' Identify the properties to return …
Run Code Online (Sandbox Code Playgroud)

exchange-server exchangewebservices

2
推荐指数
1
解决办法
991
查看次数

用于获取用户和邮箱信息的 PowerShell Office 365 脚本

我是 PowerShell 的新手(今天早上开始)。我已成功连接到 Office 365,并且能够从 Office 365 获取用户列表,并从 Exchange 部分获取邮箱字段。我不知道如何将它们结合起来。

我正在寻找的是能够从邮箱对象导出某些字段,但仅限于那些属于非阻止的、许可的 Office 365 用户的邮箱。我们有很多用户的邮箱尚未被删除,但他们可能不再获得许可或可能被阻止。

这是我现在正在运行的两个导出。它们是完全出口的。我尝试通过 isLicensed 筛选 Office 265 用户,但从未得到任何结果,因此我只是下载了所有内容并使用 Excel 对其进行了后期处理。但我需要定期运行这个......

这是代码:

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,Name,PrimarySMTPAddress,CustomAttribute2 | Export-CSV  C:\temp\o365\mailboxes.csv
Get-MsolUser -all | Select-Object SignInName, DisplayName, Office, Department, Title, IsLicensed | export-csv c:\temp\o365\Users.csv
Run Code Online (Sandbox Code Playgroud)

任何援助将不胜感激。

powershell exchange-server office365

2
推荐指数
1
解决办法
1万
查看次数

Apache Camel 更新交换属性

我需要一些有关更新 Apache Camel 中的交换属性的帮助。

用例:我有一个从 API 端点获取一些 Id 的路由,之后我需要从另一个端点获取每个 id 的信息。

我需要将响应保存在某处,以便稍后创建一些 JSON 数组。

有人可以给我一些具有类似用例的工作路线,或者只是为我指出正确的方向吗?

示例路线

from("direct:getIds") .setProperty("ValueToUpdate").constant("") 
.to("endpontWhichReturns ids")
.split().jsonpath("$.Data") .log("${property.xrefCode}") 
.toD("getInfoById) .log("${body}") 
.choice() .when(header("CamelHttpResponseCode").isEqualTo("200")) 
.setProperty("body").body() 
.setProperty("updateBody",method("PrepareUpdate","prepare")) 
.aggregate(property("ValueToUpdate"), new Aggreagation()) 
.to("direct:someEndpoint") .end() .to("mock:nestdo11");
Run Code Online (Sandbox Code Playgroud)

apache exchange-server properties apache-camel

2
推荐指数
1
解决办法
4440
查看次数

Mailkit 支持发送匿名电子邮件吗?

我尝试发送电子邮件的 Exchange 主机不需要身份验证。过去我已经使用 SmtpClient 类成功实现了这一目标,但由于 Microsoft 推荐 Mailkit,我更喜欢使用这个。

Mailkit 是否始终需要用户名和密码才能连接?我一直在到处寻找答案,但似乎找不到。

到目前为止,这是我的代码:

        private void Send(MimeMessage message)
        {
            using (var client = new SmtpClient(new ProtocolLogger(Console.OpenStandardOutput())))
            {
            client.Connect(Host, Port, SecureSocketOptions.None);             

            client.Send(message);
            client.Disconnect(true);
            }
        }
Run Code Online (Sandbox Code Playgroud)

当然,我收到错误:5.7.1 客户端未经过身份验证

谢谢你。

c# exchange-server mailkit

2
推荐指数
1
解决办法
4006
查看次数

将电子邮件标记为已读 python

我想将一封电子邮件标记为从我的 python 代码中读取的。我在用着

from exchangelib import Credentials, Account
my_account = Account(...)
credentials = Credentials(...)
Run Code Online (Sandbox Code Playgroud)

访问该帐户。这部分效果很好。然后我使用这个进入我想要的文件夹

var1 = my_account.root / 'branch1' / 'desiredFolder'
Run Code Online (Sandbox Code Playgroud)

再说一次,这效果很好。这就是将其标记为已读似乎不起作用的地方。

item = var1.filter(is_read=False).values('body')
for i, body in enumerate(item):
   #Code doing stuff
   var1.filter(is_read=False)[i].is_read = True
   var1.filter(is_read=False)[i].save(updated_fields=['is_read'])
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这篇文章Mark email as read with Exchangelib中的提示和答案,但电子邮件仍然显示为未读。我究竟做错了什么?

python exchange-server exchangelib

2
推荐指数
1
解决办法
511
查看次数

是否可以通过编程方式添加和配置交换帐户

在android上,我们可以通过settings-> Account&sync-> add account-> Corporate手动添加一个帐户,然后填写字段并添加该帐户。

我想以编程方式执行此操作。我在互联网上搜索,但找不到任何方法。

我发现了两篇文章(http://code.google.com/p/android/issues/detail?id=21233 AND Android如何以编程方式添加/配置Exchange设置?),在此之后看来这是不可能的。 ..但是有人知道有什么方法吗?

我们可以通过意图Settings.ACTION_ADD_ACCOUNT以编程方式打开屏幕设置-> Account&sync->添加帐户。我还能以某种方式填写这些字段吗?

有这样做的意图吗?还是可以以某种方式使用客户经理?

android exchange-server accounts accountmanager

1
推荐指数
1
解决办法
2203
查看次数