我是C#的初学者(老实说,并且是任何网络代码)。我正在尝试发送日历邀请,当您单击公司网站上的按钮时,该邀请将被连接。这是一个典型的n层系统,使用asp.net/C#和SQL。
我们以前只是简单地生成一个用户需要在Outlook中打开的ics,但是从那以后,我就学会了如何手动编码VCALENDAR,这样它就可以在Outlook中清晰美观地显示出来。
一切都进行得相当顺利,但是我现在希望日历邀请的正文能够接受HTML,尤其是附加链接。我已经尝试过AlternateViews,但似乎VCALENDAR内的“ X-ALT-DESC”属性应该可以完全满足我的要求。但是,请尝试使Outlook忽略它并使用描述。显然我缺少一些东西。
(为澄清起见,所有内容均可正常工作和编译,但HTML alt说明除外)
private Guid? CreateEmail()
{
Guid eventGuid = Guid.NewGuid();
MailMessage msg = new MailMessage();
msg.IsBodyHtml = true;
msg.From = new MailAddress("fromemail", "From Name");
msg.To.Add(toEmail);
msg.Subject = subject;
StringBuilder s = new StringBuilder();
s.AppendLine("BEGIN:VCALENDAR");
s.AppendLine("VERSION:2.0");
s.AppendLine("PRODID:-//My Product//Outlook MIMEDIR//EN");
s.AppendLine("METHOD:" + method); //In this case, "REQUEST"
s.AppendLine("STATUS:" + status.status); //"CONFIRMED"
s.AppendLine("BEGIN:VEVENT");
s.AppendLine("UID:" + eventGuid.ToString());
s.AppendLine("PRIORITY" + status.priority); //3
s.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:" + ShowAs.ToString()); //"BUSY"
s.AppendLine("SEQUENCE:" + UpdateNumber);//0
s.AppendLine("DTSTAMP:" + DateTime.Now.ToUniversalTime().ToString());
s.AppendLine("DTSTART:" + DateTimetoCalTime(startTime));
s.AppendLine("DTEND:" + DateTimetoCalTime(endTime));
s.AppendLine("SUMMARY:" + subject); …Run Code Online (Sandbox Code Playgroud) MyObj出于我们的目的,该对象包含String message在其他字段中。Map <MultiKey<String>,MyObj> map,.我想循环遍历 HashMap 查找 MyObj 消息所在的任何元素searchValue。我本质上是想在地图上使用stream().anyMatch(),我只是想知道是否searchValue存在,即使在任何地方一次 - 即短路是更好的选择。
Foreach 循环:
map.forEach((k,v) -> {
if (v.message.equalsIgnoreCase(searchValue)) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它不会提前终止,break也return不能在此 lambda 中使用来提前终止循环。
我看到流 anyMatch() 函数:
map.entrySet().stream().anymatch(....
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚正确的语法 - 如果这在这种情况下完全有效(如果我不比较地图的元素,而是比较每个元素的字段,它仍然可以使用)。
我一直在尝试将 Wire 设置为不将 DEBUG 发送到控制台,但无论我做什么,它都不会听。
我已正确初始化 log4j:我没有收到任何 appender 消息,log4j 遵守我的类和控制台级别。
在 log4j.properties 中,我有各种可以预见的方式来写连线:
log4j.logger.org.httpclient=ERROR
log4j.logger.org.apache=ERROR
log4j.logger.org.apache.http=ERROR
log4j.logger.org.apache.http.wire=ERROR
log4j.logger.org.apache.http.wire.headers=ERROR
log4j.logger.httpclient.wire=ERROR
log4j.logger.httpclient.headers=ERROR
log4j.logger.httpclient.content=ERROR
log4j.logger.org.apache.hc.client5.http.wire=ERROR
log4j.logger.httpclient=ERROR
wire=ERROR
http=ERROR
Run Code Online (Sandbox Code Playgroud)
然后我想为什么不在调用它后打印所有记录器?所以我就是这么做的。我得到了上面提到的所有内容以及我当前课程的精美打印输出。没有其他打印通过迭代LogManager.getCurrentLoggers()
我想此时我已经阅读了 Google 上的所有结果。任何指导将不胜感激。
关于项目: 项目是一个 maven 项目 - pom.xml 包括资源文件夹。为了完成这项工作,我从字面上创建了一个 ControlLogging 类并PropertyConfiguratior.configure("log4j.properties")首先被调用。我调用此函数@Before测试运行,并在进行 API 调用的静态类中。在任何时候进行打印都不会显示线记录器。