基于WebDAV通过outlook 发送 Email
来源:互联网 发布:异域狂想曲 知乎 编辑:程序博客网 时间:2024/05/25 05:36
以下是一个通用的方法,如果你知道你的Exchange Server (仅限2003和2007版本的Server,往后的Server版本不再支持WebDAV协议,对于更高版本的Exchange Server微软建议调用EWS来发邮件,目前Exchange Server 2007 和 Exchange Server 2010都支持EWS) 那么你就可以调用这个方法来发送Email了,成功发送后在你的outlook的Sent Items中会有记录的.
下例中几个参数的说明:
strSenderAlias,这个参数一般情况下就是你邮箱账号@前面的那段字符串。
strServer,这个参数是你的outlook server 地址,这个可以从outlook客户端菜单栏中有个“Accounts”,进去后选中Microsoft Exchange Server选项,然后点击编辑,就可看到。
你需要添加如下的引用:
using System;
using System.IO;
using System.Net;
using System.Windows.Forms;
public bool SendEmailMultiTo( string strServer, string userName, string pwd, string domain, string emailFrom, List<string> emailMultiTo, string cc, string subject, string body) { if (string.IsNullOrEmpty(strServer) || string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(pwd) || string.IsNullOrEmpty(domain) || string.IsNullOrEmpty(emailFrom) || !IsEmail(emailFrom) || (emailMultiTo.Count == 0 ? true : string.IsNullOrEmpty(emailMultiTo[0])) || (emailMultiTo.Count == 0 ? true : !IsEmail(emailMultiTo[0])) || (string.IsNullOrEmpty(cc) ? false : !IsEmail(cc))) { return false; } try { string strSenderAlias = string.Empty; string mailBoxUri = string.Empty; string submissionUri = string.Empty; string tmpUri = string.Empty; string strQuery = string.Empty; HttpWebRequest putRequest = default(HttpWebRequest); HttpWebResponse putResponse = default(HttpWebResponse); HttpWebRequest moveRequest = default(HttpWebRequest); HttpWebResponse moveResponse = default(HttpWebResponse); strSenderAlias = emailFrom.Substring(0, emailFrom.IndexOf('@')); mailBoxUri = "http://" + strServer + "/exchange/" + strSenderAlias; submissionUri = "http://" + strServer + "/exchange/" + strSenderAlias + "/##DavMailSubmissionURI##/"; tmpUri = "http://" + strServer + "/exchange/" + strSenderAlias + "/drafts/" + subject + ".eml"; foreach (string email in emailMultiTo) { if (string.IsNullOrEmpty(email)) { continue; } strQuery += "To: " + email + "\n"; } strQuery += (!string.IsNullOrEmpty(cc) ? ("CC: " + cc + "\n") : "") + "Subject: " + subject + "\n" + "Date: " + DateTime.Now.ToString() + "\n" + "X-Mailer: My DAV mailer" + "\n" + "MIME-Version: 1.0" + "\n" + "Content-Type: text/plain;" + "\n" + "Charset: \"iso-8859-1\"" + "\n" + "Content-Transfer-Encoding: 7bit" + "\n" + "\n" + body; putRequest = (HttpWebRequest)HttpWebRequest.Create(tmpUri); putRequest.Credentials = new NetworkCredential(userName, pwd, domain); // Set the headers. putRequest.Headers.Set("Translate", "f"); putRequest.ContentType = "message/rfc822"; putRequest.ContentLength = strQuery.Length; // Set the request timeout to 60 seconds. putRequest.Timeout = 60000; // Set the request method. putRequest.Method = "PUT"; // Store the data in a byte array. byte[] byteQuery = System.Text.Encoding.ASCII.GetBytes(strQuery); putRequest.ContentLength = byteQuery.Length; // Get the request stream and write the post data to it. Stream queryStream = putRequest.GetRequestStream(); queryStream.Write(byteQuery, 0, byteQuery.Length); queryStream.Close(); // Send the request and get the response. putResponse = (HttpWebResponse)putRequest.GetResponse(); moveRequest = (HttpWebRequest)HttpWebRequest.Create(tmpUri); moveRequest.Credentials = new NetworkCredential(userName, pwd, domain); moveRequest.Method = "MOVE"; moveRequest.Headers.Add("Destination", submissionUri); moveResponse = (HttpWebResponse)moveRequest.GetResponse(); // Clean up. putResponse.Close(); moveResponse.Close(); moveRequest = null; putRequest = null; queryStream = null; return true; } catch (Exception ex) { MessageBox.Show(ex.Message, "System", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; } } private bool IsEmail(string email) { bool isEmail; string pattern = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"; isEmail = System.Text.RegularExpressions.Regex.IsMatch(email, pattern); return isEmail; }
- 基于WebDAV通过outlook 发送 Email
- 通过spring发送email
- C#通过Outlook发送邮件
- 通过commons-email发送邮件
- vc 发送email outlook express 6 msimn.exe
- java 发送email 至 outlook, 中文乱码问题
- C# winform 通过调用outlook发送邮件
- 通过Excel Macros(VBA) Send email, 但需要配置Outlook.
- EMAIL发送系统(C#+基于SMTP认证)
- EMAIL发送系统(C#+基于SMTP认证)
- EMAIL发送系统(C#+基于SMTP认证)
- EMAIL发送系统(C#+基于SMTP认证)
- EMAIL发送系统(C#+基于SMTP认证)
- EMAIL发送系统(C#+基于SMTP认证)
- 基于commons-email,web端发送邮件
- VC 中调用默认邮件发送程序(Outlook)发送 指定附件的email
- 使用.NET技术发送邮件(通过调用Outlook)
- 通过Outlook编辑和发送邮件的VBS脚本
- 用一套键盘鼠标同时控制两台电脑
- 颠覆传统!iModel Studio --全运行态可视化开发技术
- 浏览器事件模型与jquery事件
- CListCtrl的多行删除
- JAVA异常处理
- 基于WebDAV通过outlook 发送 Email
- Socket模拟Http连接 之 初识Socket
- Android深入浅出之Audio 第一部分 AudioTrack分析
- IOCP完成端口源代码
- jquery动态设置超链接
- 导出注意
- 关于工厂和dao(j2ee设计模式和GOF的设计模式)
- Qt学习中搜到一些比较有用的资源
- SQL Trace