作为大公司的程序员,我经常发送包含代码示例的Outlook电子邮件.
我实际上会直接在电子邮件中输入代码.这不可避免地导致问题,因为Outlook真的喜欢以令人愉快但无益的方式格式化文本.我的代码需要可以从电子邮件中复制并直接复制到代码中,因此我不希望Outlook通过添加特殊字符或诸如此类的东西来搞乱它.
所以我总是需要调整以下选项:
我也喜欢我的代码是等宽字体,黑色,缩进,比其他文本小. 我试图为此制作一个Style,但由于某种原因,Style永远不会保存.:-( [编辑:结果我没有告诉它工作"基于这个模板的新文件"]
有没有办法将代码放在<pre>块或者某些东西中,告诉Outlook忽略所有这些规则并按照我想要的方式格式化代码?如果没有,你有什么方法可以在Outlook电子邮件中发送代码片段,而不会让它变得非常烦人?
是否可以使用C#读取.PST文件?我想将此作为一个独立的应用程序,而不是作为Outlook插件(如果可能的话).
如果已经看到类似于提及MailNavigator的其他 SO 问题 ,但我希望在C#中以编程方式执行此操作.
我查看了Microsoft.Office.Interop.Outlook命名空间,但它似乎只适用于Outlook插件.LibPST似乎能够读取PST文件,但这是在C中(对不起Joel,我毕业前没有学过C).
任何帮助将不胜感激,谢谢!
编辑:
谢谢大家的回复!我接受了Matthew Ruston的回答作为答案,因为它最终导致我找到了我正在寻找的代码.这是我工作的一个简单示例(您需要添加对Microsoft.Office.Interop.Outlook的引用):
using System;
using System.Collections.Generic;
using Microsoft.Office.Interop.Outlook;
namespace PSTReader {
class Program {
static void Main () {
try {
IEnumerable<MailItem> mailItems = readPst(@"C:\temp\PST\Test.pst", "Test PST");
foreach (MailItem mailItem in mailItems) {
Console.WriteLine(mailItem.SenderName + " - " + mailItem.Subject);
}
} catch (System.Exception ex) {
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
private static IEnumerable<MailItem> readPst(string pstFilePath, string pstName) {
List<MailItem> mailItems …Run Code Online (Sandbox Code Playgroud) 是否可以基于正则表达式字符串在Outlook 2007中创建规则?
我想添加过滤器包含一个字符串,如消息:4000-10,四位数字后加破折号后两位数,这可以从任何东西0000-00到9999-99.
我正在使用它作为正则表达式:\b[0-9]{4}\-[0-9]{2}\b但过滤器不起作用.我也尝试过其他一些修改但没有运气.我无法在网上找到关于Outlook是否支持将正则表达式纳入规则的具体内容,所以我想我会问这里以防万一我浪费时间.
编辑:感谢Chris在下面的评论,我能够通过宏实现这个过滤器.我想我会在下面分享我的代码,以防它能够帮助其他人:
Sub JobNumberFilter(Message As Outlook.MailItem)
Dim MatchesSubject, MatchesBody
Dim RegEx As New RegExp
'e.g. 1000-10'
RegEx.Pattern = "([0-9]{4}-[0-9]{2})"
'Check for pattern in subject and body'
If (RegEx.Test(Message.Subject) Or RegEx.Test(Message.Body)) Then
Set MatchesSubject = RegEx.Execute(Message.Subject)
Set MatchesBody = RegEx.Execute(Message.Body)
If Not (MatchesSubject Is Nothing And MatchesBody Is Nothing) Then
'Assign "Job Number" category'
Message.Categories = "Job Number"
Message.Save
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud) 我想要这个布局,我有一个矩形框.在左边的框中有一个文本,在右边有一个图像.这在浏览器中看起来很好,但是当作为html电子邮件发送时,在outlook中,浮动权利似乎不起作用.它将图像放在文本下面的下一行.关于如何使这项工作的任何想法?(我试图避免使用表格.)
<div style="width: 100%;border-style:solid;overflow: hidden;">
<span style="float: left;">
<h3> Your appointment Details</h3>
</span>
<span style="float: right;">
<img src="someImage"/>
</span>
</div>
Run Code Online (Sandbox Code Playgroud) 有谁知道我需要强制"接受/拒绝"按钮出现在Outlook 2007的更新会议消息中的iCalendar条件是什么?是否有常规iCalendar字段的组合,或者我错过的一些X-MICROSOFT字段强制重新接受?在重新接受强制要求的初始消息之后,我们的更新已经足够了.
我看到Outlook 2007的这个注释,我希望某些值组合会强制"接受/拒绝" - 缺少DTSTART中的值更改.
"如果对会议详细信息进行了更改,与会者将收到更新,其中突出显示更改,而不必重新启动会议."
- http://office.microsoft.com/en-us/outlook/HA100743061033.aspx
更新单个,非重复,仅限UID会议以及使用RECURRENCE-ID和UID更新到定期会议时会出现此问题.
我们在更新中使用ATTENDEE行,例如:
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;
CN="Full Name":MAILTO:user@domain.com
Run Code Online (Sandbox Code Playgroud)
尝试强制接受/拒绝行为.
谢谢大家!
ICAL消息如下.
我需要将ATTENDEE记录放在初始消息中以取悦Notes,但是在没有这些行的情况下进行了测试以达到相同的效果.我还尝试发送initlal消息作为METHOD:PUBLISH并将更新发送为METHOD:REQUEST.记录更新,但Outlook 2007中没有提供新的"接受"按钮.我们会针对每次更新修改SEQUENCE编号.
初始消息
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-//Product/Platform/Name//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:ical_event+5088@ical.server.org
RRULE:FREQ=WEEKLY;INTERVAL=1;UNTIL=20091129T000000Z;BYDAY=SA
DTSTART;TZID=America/New_York:20091114T180000
DTEND;TZID=America/New_York:20091114T190000
SUMMARY:Sub Test 7
ORGANIZER;CN="'Meeting'":MAILTO:ical_event+5088@ical.server.org
DTSTAMP:20091027T212241Z
STATUS:TENTATIVE
SEQUENCE:5
CLASS:PUBLIC
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="Full
Name":MAILTO:user@domain.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="Full
Name":MAILTO:user2@domain.com
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
更新消息
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:-//Product/Platform/Name//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500 …Run Code Online (Sandbox Code Playgroud) 我一直在使用从http://www.campaignmonitor.com/templates/获得的HTML电子邮件模板 .在我所经历的每个示例中,当我使用HTML模板发送电子邮件时,所有链接都被赋予了可怕的默认蓝色下划线.电子邮件是使用Outlook 2007发送的,当它们在Outlook中查看时,它们就可以了.但是,在Hotmail和Gmail中,无论文本的颜色是什么,此蓝色下划线都会持续存在.
我试过像这样的标签的内联样式:
<a href="./" style="color: #E3A216; text-decoration: none;">Mauris commodo hendrerit risus</a>
Run Code Online (Sandbox Code Playgroud)
如果我使用完全相同的HTML电子邮件模板代码并将其从我的hotmail帐户发送到另一个Hotmail帐户,则它可以完美地运行.所以,对我来说这是一个Outlook 2007问题.
我能够剖析outlook发送给hotmail收件人的html,发现Outlook在HTML代码之上附加了一个样式表.这是它发送的内容:
<style>
.ExternalClass .ecxshape
{;}
</style>
<style>
.ExternalClass p.ecxMsoNormal, .ExternalClass li.ecxMsoNormal, .ExternalClass div.ecxMsoNormal
{margin-bottom:.0001pt;font-size:11.0pt;font-family:'Calibri','sans-serif';}
.ExternalClass a:link, .ExternalClass span.ecxMsoHyperlink
{color:blue;text-decoration:underline;}
.ExternalClass a:visited, .ExternalClass span.ecxMsoHyperlinkFollowed
{color:purple;text-decoration:underline;}
.ExternalClass p.ecxMsoAcetate, .ExternalClass li.ecxMsoAcetate, .ExternalClass div.ecxMsoAcetate
{margin-bottom:.0001pt;font-size:8.0pt;font-family:'Tahoma','sans-serif';}
.ExternalClass span.ecxEmailStyle17
{font-family:'Calibri','sans-serif';color:windowtext;}
.ExternalClass span.ecxBalloonTextChar
{font-family:'Tahoma','sans-serif';}
.ExternalClass .ecxMsoChpDefault
{;}
@page WordSection1
{size:612.0pt 792.0pt;}
.ExternalClass div.ecxWordSection1
{page:WordSection1;}
</style>
Run Code Online (Sandbox Code Playgroud)
.ExternalClass似乎是设置a标签的值,但我的内联样式似乎没有覆盖Outlook添加到电子邮件的内容.
我已经尝试在head部分创建样式表,甚至在body部分中创建样式表,但这没有任何作用.
有谁知道解决这个问题?我要么想要删除下划线,要么只是在我为链接指定的颜色中使用下划线显示.
感谢任何能提供帮助的人.
我使用MS Office Outlook 2007,有时它将电子邮件地址转换为"FirstName LastName".双击时,它会打开联系表单,但无处电子邮件地址可以复制到剪贴板中.
如果使用联系人,如何复制到剪贴板电子邮件地址?
谢谢!
我已经编写了一个每晚运行的自动化测试,我想在测试结束后每晚通过电子邮件发送结果.
为了做到这一点,我试图将以下内容放在我的批处理文件的末尾:
Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0)
With MyItem
.To = "a@a.com"
.Subject = "Subject"
.ReadReceiptRequested = False
.HTMLBody = "resport"
End With
MyItem.Send
Run Code Online (Sandbox Code Playgroud)
但是,这导致电子邮件无法发送,因为我的Outlook未打开,因为测试是在后台运行的,而我无法访问UI.
无论如何都要发送此电子邮件而不在机器上实际运行Outlook.
谢谢!
我制作了一个HTML电子邮件模板,在大多数电子邮件阅读器中工作正常,但背景图像没有在Outlook 2007,2010和2013中显示.我该如何解决这个问题?
这是电子邮件的HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
* {
padding: 0px;
margin: 0px;
border: 0px;
outline: 0px;
}
.ExternalClass {width:100%;}
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
body {-webkit-text-size-adjust:none; -ms-text-size-adjust:none;}
body {margin:0; padding:0;}
table td {border-collapse:collapse;}
img {max-width:100%;}
</style>
</head>
<body>
<table width="600" cellpadding="0" cellspacing="0" border="0" style="margin:0px auto;padding:0px;display: block;">
<tr>
<td>
<table width="97%" cellpadding="0" cellspacing="0" background="http://3.bp.blogspot.com/-cD1FNllXzaw/UXa8tPE_YGI/AAAAAAAAAQs/0GNzMQJ73jU/s1600/pink_bkg.png" style="background-image:url('http://3.bp.blogspot.com/-cD1FNllXzaw/UXa8tPE_YGI/AAAAAAAAAQs/0GNzMQJ73jU/s1600/pink_bkg.png');margin:0px auto;font-family: GothamBold, Tahoma;"> …Run Code Online (Sandbox Code Playgroud) 我有一个Outlook 2007加载项,试图将ics文件导入Outlook.AppointmentItem对象,以便我可以读取有关某些约会的属性.目前我无法将ics读回内存.关于我做错了什么的任何建议.
Outlook.Application app = new Outlook.Application();
var item = app.Session.OpenSharedItem("C:\\meeting.ics") as Outlook.AppointmentItem;
string meetingBody = item.Body; //<--*my item is null*
Run Code Online (Sandbox Code Playgroud)
谢谢
outlook-2007 ×10
outlook ×4
css ×2
email ×2
icalendar ×2
vbscript ×2
appointment ×1
c# ×1
html ×1
html-email ×1
outlook-2003 ×1
outlook-vba ×1
pst ×1
regex ×1
sendmail ×1
stylesheet ×1
vba ×1