我正在尝试将Java Web应用程序与Microsoft Exchange服务器集成,以实现双向日历(即任务)同步.是否有用于此集成的Java开源/商业API?
谢谢,Venkat
我正在使用Exchange Server 2007 SP3
我可以使用以下代码连接交换Web服务
ExchangeServiceBinding esb = new ExchangeServiceBinding();
esb.RequestServerVersionValue = new RequestServerVersion();
esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
esb.Credentials = new NetworkCredential("<user_id>", "<password>", "<domain>");
esb.Url = @"https://<server_fqdn>/ews/Exchange.asmx";
Run Code Online (Sandbox Code Playgroud)
我正在寻找下载未读附件的代码.
请你帮助我好吗?
我正在开发一个Java的个人项目,涉及通过不安全的渠道发送敏感数据.我需要知道如何使用其库在Java中实现Diffie Hellman密钥交换(DHKE).我知道关于它的所有加密理论所以不需要详细说明,我只需要一个非常基本的实现,所以我可以让2个程序共享一个密钥.我从java2s.com获得了示例,但它并不完整:
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import javax.crypto.spec.DHParameterSpec;
import javax.crypto.spec.DHPublicKeySpec;
public class Main {
public final static int pValue = 47;
public final static int gValue = 71;
public final static int XaValue = 9;
public final static int XbValue = 14;
public static void main(String[] args) throws Exception {
BigInteger p = new BigInteger(Integer.toString(pValue));
BigInteger g = new BigInteger(Integer.toString(gValue));
BigInteger Xa = new BigInteger(Integer.toString(XaValue));
BigInteger Xb = new BigInteger(Integer.toString(XbValue));
int bitLength = 512; …Run Code Online (Sandbox Code Playgroud) 当您在网上搜索时,您会找到"如何以编程方式阅读电子邮件"的简单答案...... Al网站正在解释大部分相同的内容,例如此页面. http://omegacoder.com/?p=454
// depends from Exchange server version
service.Credentials = new NetworkCredential("MDR", "password", "zzz");
service.AutodiscoverUrl("mdr@zzz.be");
object o = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
foreach (Item item in findResults.Items)
{
Console.WriteLine(item.Subject);
}
Run Code Online (Sandbox Code Playgroud)
它在执行autodiscoverURL行时失败.错误显示"无法找到自动发现服务".
所以我进一步搜索了这个网站来自微软https://www.testexchangeconnectivity.com/#&&/wEXAQUBcwUBME93h2+JjI0+MV2gTqcRL0g43z9m这里你可以测试你的邮件服务器....当我传递参数时,我得到以下错误. ...
但我还是不明白问题是什么?我是否需要向DNS添加记录?有人可以帮忙吗?
Attempting to test potential Autodiscover URL https://autodiscover.zzz.be/AutoDiscover/AutoDiscover.xml
Testing of this potential Autodiscover URL failed.
Test Steps
Attempting to resolve the host name autodiscover.ncb.be in DNS.
The host name resolved successfully.
Additional Details
IP addresses returned: 213.246.192.205
Testing TCP …Run Code Online (Sandbox Code Playgroud) 我正在尝试以编程方式确定当前用户是否对给定的Active Directory对象具有某些权限(特别是在这种情况下,我正在尝试确定用户是否具有另一个Exchange用户或通讯组列表对象的"代理发送"权限).
我已经想通了如何访问ntSecurityDescriptor使用ADSI属性:我可以在枚举的ACE IADsSecurityDescriptor的DiscretionaryACL财产.但:
FWIW,我使用ActiveDs.dll类型库在Delphi中编码(即本机Win32代码),因此特定于.NET的解决方案对我没有多大帮助,除非他们的源代码为我提供了如何在本机中执行相同操作的线索码.PowerShell也是如此.
在任何人开始之前:我已经知道了PR_EMS_AB_PUBLIC_DELEGATES和PR_EMS_AB_PUBLIC_DELEGATES_BL_O扩展的MAPI属性.但是,这不是我追求的.这些属性引用"代表发送"-right(又名委托),而不是"发送为"权限,这是完全不同的事情.
我几天来一直试图从Grails应用程序发送邮件但没有成功.我正在使用:
Specifficaly我正在尝试使用部署在Tomcat服务器上的应用程序发送邮件,该端口25没有身份验证,没有SSL.
我已经尝试从部署了应用程序的VMWare虚拟机发送带有telnet的消息并且它已经通过了.
这是我发送邮件的课程:
public boolean sendMessage(String to, String msgSubject, String msgText)
{
String host = "mail.mydomain.com";
String username = "myuser@mydomain.com"; // your authsmtp username
String password = "mypassword" // your authsmtp password
String from = "myuser@mydomain.com";
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", username);
props.put("mail.smtp.password", password);
props.put("mail.smtp.port", "25"); // thish is the port recommended by authsmtp
props.put("mail.smtp.auth", "false");
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
InternetAddress to_address …Run Code Online (Sandbox Code Playgroud) 我们有一个旧的遗留SQL 2000服务器(最后的农场) -我们一直无法摆脱这个服务器的,因为它使用xp_findnextmsg,xp_readmail等来监控邮箱(通过MAPI)和导入所有邮件到该地址到数据库.数据库包含存储"从","到","主题","正文","发送日期"等的简单表.
您可能知道,SQL 2005+中不再使用上述过程
此表格可从数十个内部系统中读取,例如,我们的服务台系统会自动选择发送到此邮箱的电子邮件并创建呼叫等.
我的问题是:在SQL 2008+中最简单/最现代的方式是什么?是编写.net二进制/服务的情况,它将使用smtp或其他东西连接到邮箱并将数据插入SQL或者有更简单的方法吗?(SSIS /第三方工具/预先存在的代码/项目?)
我想在开始写东西之前我会问 - 没有必要重新发明轮子.
PS:有问题的邮箱是Exchange 2010邮箱.
编辑:此功能暗示将在2008年和dbmail中重新推出:http://connect.microsoft.com/SQLServer/feedback/details/126167/xp-readmail-replacement-for-sql-2005 但它看起来像它未能实现!
编辑2:我刚刚在这里发现了一个不错的代码示例,它使用了交换2007+中的新Web服务:http://social.msdn.microsoft.com/forums/en-US/sqltools/thread/dd2b465b-b1d2- 4c0d-82ec-c36c6c482d5d - 正在进行实验(有没有人使用过SQL和Exchange Web服务?)
编辑3:全部完成!我敲了一个.net服务,它位于我们的Exchange服务器上并监视邮箱并将任何新邮件推送到SQL中.其他人有一个类似的问题,需要一些示例代码才能开始 - 这里有一些粗略的代码(从我的服务中删除 - 用基本的动态SQL替换参数化的SQL以便于阅读):(注意:你需要EWS API 1.1 DLL)
Imports Microsoft.Exchange.WebServices.Data
Dim ExchangeUrl As String = "https://DOMAIN.co.uk/ews/exchange.asmx"
Dim service As New ExchangeService(ExchangeVersion.Exchange2010_SP1)
service.Url = New Uri(ExchangeUrl)
service.Credentials = New WebCredentials("USER@DOMAIN.CO.UK", "PASSWORD")
Dim findResults As FindItemsResults(Of Item) = service.FindItems(WellKnownFolderName.Inbox, New ItemView(1000))
If findResults.Count > 0 Then
service.LoadPropertiesForItems(findResults.Items, New PropertySet(BasePropertySet.FirstClassProperties))
End …Run Code Online (Sandbox Code Playgroud) 所以我用给定的ICalUid创建Exchange(2007)约会:
var app = new Appointment(svc);
app.ICalUid = id;
app.Subject = "Test Appointment";
app.Recurrence = new Recurrence.DailyPattern(DateTime.Now, 3);
app.RequiredAttendees.Add("mstum@example.com");
app.AllowNewTimeProposal = false;
app.Body = new MessageBody(BodyType.HTML, "This is a <b>Test!</b>");
app.Save();
Run Code Online (Sandbox Code Playgroud)
稍后,我想更新该约会,此时我需要通过ICalUid找到它.
但是,似乎没有办法做到这一点?我只能使用Appointment.BindExchange ID,这是我在更新时没有的(存储它非常不切实际)
我可以使用相同的ICalUid创建一个新的约会,它看起来像一个更新,但再次要求接受/拒绝,而不是只显示"无需更新".
有没有正确的方法呢?
.net exchange-server exchange-server-2007 exchangewebservices
使用exchangelib,您如何获得全球分发列表的成员列表?在包含的测试用例中,我了解如何在联系人的文件夹中创建和删除DL,但不引用全局DL.如果有必要,我愿意使用不同的Python库.
更新:这是我到目前为止所尝试的内容.使用此代码,我可以转储我的个人分发列表(和其他联系人)列表,包括成员.我认为我需要my_folder在某种全球范围内"指出" 以查看全球分发列表而不是我个人联系人中的列表.
from exchangelib import DELEGATE, Account, Credentials, Configuration
credentials = Credentials(username='domain\\account', password='passw0rd')
config = Configuration(server='mail.example.com', credentials=credentials)
account = Account(primary_smtp_address='foo@example.com', config=config,
autodiscover=False, access_type=DELEGATE)
my_folder = account.contacts
all_items_without_caching = my_folder.all().iterator()
for item in all_items_without_caching:
print(item)
Run Code Online (Sandbox Code Playgroud) 我一直在使用 Microsoft Graph API 访问 Exchange Online (Office365) 就地存档。
它基本上是一个经过身份验证的 GET HTTPS 请求https://graph.microsoft.com/v1.0/users/user@company.onmicrosoft.com/mailFolders/ArchiveMsgFolderRoot,它曾经可以正常工作。
从本周(2020 年 4 月下旬)开始,针对相同资源(无变化)的相同请求开始失败,原因如下:
404响应: {'error': {'code': 'ErrorInvalidMailboxItemId', 'message': "Item Id doesn't belong to the current mailbox.", 'innerError': {'request-id': '4a339242-9821-42a9-9622-4b1f7cd2c162', 'date': '2020-04-24T10:01:35'}}}
其他邮箱(不是ArchiveMsgFolderRoot)继续正常工作,没有问题。只有就地存档会受到影响。
您现在如何从 Graph API 访问 In-places Archives?你能分享一个例子吗?
exchange-server ×10
java ×3
c# ×2
outlook ×2
.net ×1
adsi ×1
asp.net ×1
grails ×1
jakarta-mail ×1
key ×1
permissions ×1
python ×1
security ×1
sql-server ×1
vb.net ×1