我试图找出&符号"&"是否是Microsoft Exchange电子邮件地址的有效字符.我知道根据RFC它是有效的,但我认为交换有一个有效字符的子集.
例:
Tom&Jerry@warnerbrothers.com
我不能再忽视用户的操作了.他们想要一个任务调度系统,在某些时候我必须提供.我正在考虑制作自己的(不能很难),但是用户将拥有两个并排的任务管理系统,因为他们已经使用Outlook进行相同的操作.
在Outlook日历/任务集成方面,我发现了两种可能的方法:
1)使用JavaScript和自动化
我似乎记得在JavaScript中进行自动化是可能的.
优点:
缺点:
2)使用一些.NET API直接与Exchange Server交互
Intranet使用单点登录,因此希望这会使安全问题更容易.
优点:
缺点:
和往常一样,我喜欢站在巨人的肩膀上.任何曾经走过这条道路的人都可以给我一些指导吗?
当我尝试通过EWS发送带有内嵌图像(附件)的HTML消息时,这个问题就暴露出来了.但是我退回到最简单的形式,发现我甚至无法发送HTML消息.
我使用的是C#,.NET 4,EWS API 1.1,Exchange Server 2010 SP1.
这是我的代码的核心:
ExchangeConnection = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
ExchangeConnection.Credentials = new WebCredentials(Username, Password, Domain);
ExchangeConnection.Url = new Uri(ServiceURI);
string MailBody = @"<html><head></head><body>
This is a <b>test</b> <strong>HTML</strong> <em>message</em>.<br><br>
Did it work?</body></html>";
NewMessage = new EmailMessage(ExchangeConnection);
NewMessage.Subject = "Test HTML Message #001";
NewMessage.Body = MailBody;
NewMessage.Body.BodyType = BodyType.HTML;
NewMessage.ToRecipients.Add("tony@zierniemann.com");
NewMessage.Send();
Run Code Online (Sandbox Code Playgroud)
使用该代码,我收到一条消息,内容如下:
Subject: Test HTML Message #001
Thread-Topic: Test HTML Message #001
Thread-Index: Acuy3U6nqQTa4W4ZQu6ueHPb2nPDPg==
Date: Thu, 13 Jan 2011 04:49:48 +0000
Message-ID: <2FDB41070D0AC24DB5BC8B80751063630B74A5@xxxxx.com>
Accept-Language: en-US
Content-Language: en-US …Run Code Online (Sandbox Code Playgroud) exchange-server exchangewebservices ews-managed-api exchange-server-2010
我有一个脚本,可以在Microsoft Exchange Server和Active Directory中创建用户.因此,虽然通常用户的名字在西班牙有重音符号或ñ,但我想避免使用用户名,以免在旧系统中造成任何不兼容性.
那么,我怎么能像这样清理一个字符串呢?
$name = "Ramón"
Run Code Online (Sandbox Code Playgroud)
那样的?:
$name = "Ramon"
Run Code Online (Sandbox Code Playgroud) 将ViewSize在构造级别指定.我找到了构造函数的文档,但没有说明最大大小有多大.
补充:感谢用户@grapkulec,我正在使用
using Microsoft.Exchange.WebServices.Data;
Run Code Online (Sandbox Code Playgroud)
我正在尝试将电子邮件移动到我已在Outlook中创建的文件夹(使用MS Exchange).到目前为止,我已经能够将电子邮件移动到草稿或其他众所周知的文件夹名称,但没有成功将其移动到我创建的名为"示例"的文件夹中.
foreach (Item email in findResults.Items)
email.Move(WellKnownFolderName.Drafts);
Run Code Online (Sandbox Code Playgroud)
上面的代码有效; 但我不想使用众所周知的文件夹.而且,如果我尝试将代码更改为:
email.Move(Folder.(Example));
Run Code Online (Sandbox Code Playgroud)
要么
email.Move(Folder.["Example"]);
Run Code Online (Sandbox Code Playgroud)
它不移动(在两种情况下都会抛出错误).我已经找到了很多关于如何将电子邮件移动到MSDN,SO和一般C#上的文件夹的示例 - 但仅限于Outlook(草稿,垃圾邮件等)"知名"的文件夹,这些文件不适用于我创建的文件夹.
我使用EWS API 1.2访问Exchange Server上的邮箱.这只是工作正常,但有一件事我无法实现:获取邮件附件.
我写了以下几行:
class Program
{
public static void Main(string[] args)
{
try {
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
service.Credentials = new WebCredentials("login","password");
service.AutodiscoverUrl("mail@domaine.fr");
ItemView view = new ItemView(10);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
if (findResults != null && findResults.Items != null && findResults.Items.Count > 0)
foreach (Item item in findResults.Items)
{
if (item.Attachments != null)
{
IEnumerator<Attachment> e = item.Attachments.GetEnumerator();
}
Console.WriteLine(item.Subject);
}
else
Console.WriteLine("no items");
}
catch (Exception e) {
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
} …Run Code Online (Sandbox Code Playgroud) 我在python中使用exchangelib时遇到问题.我试试这个示例代码:
from exchangelib import DELEGATE, Account, Credentials
creds = Credentials(
username='xxxx\\username',
password="mypassword"
)
account = Account(
primary_smtp_address='surname.name@xxxx.fr',
credentials=creds,
autodiscover=True,
access_type=DELEGATE
)
# Print first 10 inbox messages in reverse order
for item in account.inbox.all().order_by('-datetime_received')[:10]:
print(item.subject, item.body, item.attachments)
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的用户名但没有任何作用,我总是有相同的错误消息:
AutoDiscoverFailed: All steps in the autodiscover protocol failed
顺便说一句,以防万一它可以提供帮助,我试图使用为C#编码的Exchange Web服务,它可以完美地使用这些信用卡,我可以发送邮件:
static void Main(string[] args)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
// The last parameter is the domain name
service.Credentials = new WebCredentials("username", "password", "xxxx.lan");
service.AutodiscoverUrl("surname.name@xxxx.fr", RedirectionUrlValidationCallback);
EmailMessage email = new EmailMessage(service);
email.ToRecipients.Add("surname.name@xxxx.fr"); …Run Code Online (Sandbox Code Playgroud) python exchange-server exchangewebservices office365 exchangelib
使用房间和设备时,Exchange(在Office 365中,但在其他版本中)使用许多选项来处理事件中对这些资源的请求.
默认情况下,Exchange将在房间日历中创建事件时剥离主题,并将其替换为管理器名称.如果您然后尝试获取房间的日历(例如,对于会议室显示),您将只有组织者名称而不是每次会议的主题.
这在某些情况下可能是适当的,但在许多其他情况下,人们希望实际主题在该日历中显示.
为了实现这一目标,我所知道的唯一的选择是使用PowerShell的Set-CalendarProcessingcmdlet来改变DeleteSubject,AddOrganizerToSubject等等.
在SaaS环境中,这非常烦人,因为您需要Office 365管理员使用Powershell执行此操作,这可能不是完全简单的,或者您需要请求用户的登录名和密码并将其传递给Powershell,这会提高安全性问题,并且在许多情况下都不会起作用(2FA,SAML身份验证...).
有没有办法通过Microsoft Graph访问这些设置?
或者,如果无法通过Microsoft Graph获得,是否有办法使用Microsoft Graph oAuth令牌通过Linux Powershell执行此操作?我知道可以使用oAuth令牌,但尽管我付出了很多努力,但我还没有设法找到一种方法来执行常规的托管oAuth登录并使用为此目的而收到的令牌.
任何提示都欢迎!
澄清一下:我在SaaS场景中,我是SaaS提供商,所以我需要允许我的客户管理员轻松或自动更改这些设置,不要访问我自己的房间邮箱(我会使用PowerShell) .
Our setup is an on-premise Exchange Server which is accessible over the graph api. https://docs.microsoft.com/en-us/graph/hybrid-rest-support
We run in the issue, that our token is only "partial" working. And a token created by "Graph-Playground" is fully working. But we can't find any difference.
The token seems to be valid some …
exchange-server hybrid on-premises-instances microsoft-graph-api
exchange-server ×10
c# ×3
.net ×2
office365 ×2
powershell ×2
asp.net ×1
email ×1
exchangelib ×1
hybrid ×1
outlook ×1
python ×1