我们正在将某些电子邮件从Exchange Server的特定收件箱保存到某种跟踪系统。用户使用浏览器查看此跟踪系统。
我现在要做的是在网页上生成链接,当然在客户端上打开Outlook 2010中的现有电子邮件。
要生成此链接,我将获得电子邮件/项目的所有必要信息(使用Microsoft.Exchange.WebServices)。
那怎么做?
好的,到目前为止: 将ewsId(交换服务器上的邮件ID)从Exchange服务器转换为outlook的entryid。这是通过使用EWS的ConvertId方法完成的。
现在我遇到的问题是,当我尝试使用outlook加载邮件时出现错误“无法打开元素。再试一次”。
答案 0 :(得分:1)
嗨,我认为这会帮助你
基本上有三种方法可以做到这一点。
mailto
打开Outlook应用程序使用Mailto Link
<A href=”mailto:Bob@somewhere.com
?Cc:Roxy@righthere.com
&Subject:Using Mailto to send mails&Body:this is a test”>.
这是一种俗气的做法。将属性与mailto一起传递
但是,如果要在VB.Net LinkLabel中使用它。你可以这样做
Dim strURL as String strURL = “mailto:Bob@somewhere.com
?Cc:Roxy@righthere.com
&Subject:Using Mailto to send mails&Body:this is a test”
Process.Start(strURL)
使用SMTP发送邮件
在开始编码之前,请确保导入相关的命名空间
Imports System.Web.Mail
这是代码
Public Function SMTPCall()
Dim strTo As String
Dim strFrom As String
Dim strBody As String
Dim strSubject As String
strTo = "Bob@somewhere.com"
'Make sure you set the from address,
'some SMTP servers wouldn't send a mail without the FROM address
strFrom = "Roxy@righthere.com" `
strBody = "Test on Sending Mail"`
strSubject = "Did this mail reach you yet?" `
SmtpMail.Send(strFrom, strTo, strSubject, strBody) `
End Function`
看起来不错,但上述两种方法的限制是您无法发送附件。如果用户想要访问Outlook通讯录并将邮件发送给附件,该怎么办?
使用MSOutlook对象库
这是使用MS Outlook对象库与VB.Net进行Outlook集成的一小段代码。
右键单击Solution Explorer中的References。添加“Microsoft Outlook 10.0对象库”。
public Function OutlookCall() '拿一个Outlook应用程序的实例 Dim oOutlook作为新的Outlook.Application()
'Create an instance of the MailItem
Dim oMailitem As Outlook.MailItem`
'Create an instance of the Attachment
Dim oAttach As Outlook.Attachment
oMailitem = oOutlook.CreateItem(Outlook.OlItemType.olMailItem)
oMailitem.To = “Bob@somewhere.com”
oMailitem.Cc = “Roxy@righthere.com”
oMailitem.Subject = "Email Integration with Outlook and VB.Net"
'txtFilepath is a text box that contains the path for attachment.
If (txtFilepath.Text = "") Then
MsgBox ("You did not attach a file")
Else
'Attach the file Path to the Mail Item
oMailitem.Attachments.Add(txtFilepath.Text)
End If
'PING….Displays the Outlook along with the To,Cc,Subject and Attachment
oMailitem.Display()
结束职能
您可以使用此outlook对象执行许多其他功能。希望这会有所帮助。
注意:
这个vl帮助你
答案 1 :(得分:1)
好的,我找到了一个解决方案,我的代码发布在这里:
服务器端上的(c#with exchange webservice):
private static String GetOutlookEntryId( EmailMessage message, ExchangeService esb ) {
AlternateId ewsId = new AlternateId( IdFormat.EwsId, message.Id.ToString(), "email.address@test.de" );
AlternateIdBase entryId = esb.ConvertId( ewsId, IdFormat.EntryId );
return Base64StringToHexString( ( (AlternateId)entryId ).UniqueId );
}
public static String Base64StringToHexString( String base64String ) {
byte[] bytes = System.Convert.FromBase64String( base64String );
StringBuilder sbHexString = new StringBuilder();
for( int i = 0; i < bytes.Length; i++ ) {
sbHexString.Append( bytes[i].ToString( "X2" ) );
}
return sbHexString.ToString();
}
在客户端(Internet Explorer,Outlook安装,vbscript):
<script language="vbscript">
sub openMailInOutlook
mailID = "the entry id converted from exchange id on the server side"
set olApp = createobject("Outlook.Application")
set session = olApp.Session
set originalMailItem = session.GetItemFromID( mailID )
originalMailItem.Display
set olNs = Nothing
set olApp = Nothing
end sub