使用c#给outlook添加任务、发送邮件
c#在使用outlook提供的一些API时,需要将outlook相关的com引用到项目中。 具体方法就是用vs打开工程后,在工程上添加引用,在com选项卡上,选择Microsoft Outlook 12.0 Object Library,如果安装的不是outlook2007,则对应com的版本不一样。注意下面描述的方法是在命令行模式或者winform模式下的,不是web模式下的。 在web模式下使用的方法稍有不同,不在此处讨论。
- 给outlook添加任务,代码如下:
- /// <summary>
- /// 给outlook添加一个新的任务
- /// </summary>
- /// <param name="subject">新任务标题</param>
- /// <param name="body">新任务正文</param>
- /// <param name="dueDate">新任务到期时间</param>
- /// <param name="importance">新任务优先级</param>
- public static void AddNewTask(string subject, string body, DateTime dueDate, OlImportance importance)
- {
- try
- {
- Application outLookApp = new Application();
- TaskItem newTask = (TaskItem)outLookApp.CreateItem(OlItemType.olTaskItem);
- newTask.Body = body;
- newTask.Subject = subject;
- newTask.Importance = importance;
- newTask.DueDate = dueDate;
- newTask.Save();
- }
- catch(System.Exception e)
- {
- throw e;
- }
- }
- 最简单的发送邮件
下面是一个最简单的发送邮件的例子,在该例子中,只能给一个邮箱地址发邮件,而且还不能够添加附件。代码如下:
- /// <summary>
- /// 一个最简单的发送邮件的例子。同步方式。只支持发送到一个地址,而且没有附件。
- /// </summary>
- /// <param name="server">smtp服务器地址</param>
- /// <param name="from">发送者邮箱</param>
- /// <param name="to">接收者邮箱</param>
- /// <param name="subject">主题</param>
- /// <param name="body">正文</param>
- /// <param name="isHtml">正文是否以html形式展现</param>
- public static void SimpleSeedMail(string server, string from, string to, string subject, string body, bool isHtml)
- {
- try
- {
- MailMessage message = new MailMessage(from, to, subject, body);
- message.IsBodyHtml = isHtml;
- SmtpClient client = new SmtpClient(server);
- client.Credentials = new NetworkCredential("发送者邮箱用户名(即@前面的东东)","发送者邮箱密码");
- client.Send(message);
- }
- catch (System.Exception e)
- {
- throw e;
- }
- }
- 向多人发邮件,并支持发送多个附件
代码如下:
- /// <summary>
- /// 支持向多人发邮件,并支持多个附件的一个发送邮件的例子。
- /// </summary>
- /// <param name="server">smtp服务器地址</param>
- /// <param name="from">发送者邮箱</param>
- /// <param name="to">接收者邮箱,多个接收者以;隔开</param>
- /// <param name="subject">邮件主题</param>
- /// <param name="body">邮件正文</param>
- /// <param name="mailAttach">附件</param>
- /// <param name="isHtml">邮件正文是否需要以html的方式展现</param>
- public static void MultiSendEmail(string server, string from, string to, string subject, string body, ArrayList mailAttach, bool isHtml)
- {
- MailMessage eMail = new MailMessage();
- SmtpClient eClient = new SmtpClient(server);
- eClient.Credentials = new NetworkCredential("发送者邮箱用户名(即@前面的东东)", "发送者邮箱密码");
- eMail.Subject = subject;
- eMail.SubjectEncoding = Encoding.UTF8;
- eMail.Body = body;
- eMail.BodyEncoding = Encoding.UTF8;
- eMail.From = new MailAddress(from);
- string[] arrMailAddr;
- try
- {
- #region 添加多个收件人
- eMail.To.Clear();
- if (!string.IsNullOrEmpty(to))
- {
- arrMailAddr = to.Split(';');
- foreach (string strTo in arrMailAddr)
- {
- if (!string.IsNullOrEmpty(strTo))
- {
- eMail.To.Add(strTo);
- }
- }
- }
- #endregion
- #region 添加多个附件
- eMail.Attachments.Clear();
- if (mailAttach != null)
- {
- for (int i = 0; i < mailAttach.Count; i++)
- {
- if (!string.IsNullOrEmpty(mailAttach[i].ToString()))
- {
- eMail.Attachments.Add(new System.Net.Mail.Attachment(mailAttach[i].ToString()));
- }
- }
- }
- #endregion
- #region 发送邮件
- eClient.Send(eMail);
- #endregion
- }
- catch (System.Exception e)
- {
- throw e;
- }
- }//end of method
- 异步发送邮件的一个例子。以163的smtp服务器为例。
代码如下:
- using System;
- using System.Net;
- using System.Net.Mail;
- using System.Net.Mime;
- using System.Threading;
- using System.ComponentModel;
- namespace Examples.SmptExamples.Async
- {
- public class SimpleAsynchronousExample
- {
- static bool mailSent = false;
- private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
- {
- // Get the unique identifier for this asynchronous operation.
- String token = (string)e.UserState;
- if (e.Cancelled)
- {
- Console.WriteLine("[{0}] Send canceled.", token);
- }
- if (e.Error != null)
- {
- Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
- }
- else
- {
- Console.WriteLine("Message sent.");
- }
- mailSent = true;
- }
- public static void Main(string[] args)
- {
- SmtpClient client = new SmtpClient("smtp.163.com");
- client.Credentials = client.Credentials = new NetworkCredential("发送者邮箱用户名", "发送者邮箱密码");
- MailAddress from = new MailAddress("softwarezxj@163.com");
- MailAddress to = new MailAddress("lastBeachhead@gmail.com");
- MailMessage message = new MailMessage(from, to);
- message.Body = "这是一封测试异步发送邮件的邮件 ";
- message.BodyEncoding = System.Text.Encoding.UTF8;
- message.Subject = "测试异步发邮件";
- message.SubjectEncoding = System.Text.Encoding.UTF8;
- // 设置回调函数
- client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
- // SendAsync方法的第二个参数可以是任何对象,这里使用一个字符串标识本次发送
- //传入的该对象可以在邮件发送结束触发的回调函数中访问到。
- string userState = "test message1";
- client.SendAsync(message, userState);
- Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
- string answer = Console.ReadLine();
- if (answer.StartsWith("c") && mailSent == false)
- {
- client.SendAsyncCancel();
- }
- //清理工作
- message.Dispose();
- Console.WriteLine("Goodbye.");
- Console.ReadLine();
- }
- }
- }
使用c#给outlook添加任务、发送邮件的更多相关文章
- 在c++中使用Outlook Object Model发送邮件
一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...
- outlook添加邮箱账户时,测试成功,下一步显示请求失败
今天在给公司同事添加邮箱账户时,全部设置正常,测试也成功了,但是点击下一步时,出现了请求失败的提示. 1. 看到这个提示,我首先重启了一下outlook,发现进去添加还是不行 2.重启了电 ...
- python 操作excel格式化及outlook正文,发送邮件
import requests import time import os import arrow import pandas as pd import pandas.io.formats.exce ...
- outlook撤回已发送邮件
官方教程参考: https://support.office.com/zh-cn/article/%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E5%90%8E%E6%92 ...
- [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B
[20140704更新],在公司收邮件的时候,问题再次出现,错误码:0x800ccc13,按照以下方法测试成功: 1. 按照以前办法,反复重启,失败 2. 按照以下参考连接A中的步骤 a. Click ...
- Delphi 发送邮件 通过Office Outlook
Delphi 发送邮件 通过Office Outlook 网上搜到的Delphi邮件发送系统,绝大多数是使用SMTP协议来发送. 但是事实上它们已经过时了,大多数邮件服务器已经屏蔽了Delphi In ...
- UiPath工具取得网页上面的数据,写入到csv,Outlook邮件发送
问题描述: 想取得网页上面的股票价格,之后写入到csv文本里面之后添加附件发送邮件. 解决方法: 利用UIPath工具来取得数据,之后写入再发送. 具体步骤: 1.打开网页,之后找到所显示的股票行情的 ...
- [原创] - C#编程大幅提高OUTLOOK的邮件搜索能力!
使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题成了一件非常紧迫的事情. 利用MS Search当然可以, 但是它太 ...
- - C#编程大幅提高OUTLOOK的邮件搜索能力!
原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...
随机推荐
- MySql分析算法作品索引(马上,只是说说而已B-tree)
刚开始学习的时候,百度搜索.但我发现很难理解了很多的太复杂,各种物品的整合总结(建议可能看到的文字,我不明白也没关系,再看看操作步骤图,然后结合文,所以,一切都清楚了很多) B-tree.B这是bal ...
- 【POJ3612】【USACO 2007 Nov Gold】 1.Telephone Wire 动态调节
意甲冠军: 一些树高给出.行一种操作:把某棵树增高h,花费为h*h. 操作完毕后连线,两棵树间花费为高度差*定值c. 求两种花费加和最小值. 题解: 跟NOIP2014 D1T3非常像. 暴力动规是O ...
- POSIX 螺纹具体解释(1-概要)
线程是有趣的 线程类似于进程.如同进程,线程由内核按时间分片进行管理.在单处理器系统中,内核使用时间分片来模拟线程的并发运行.这样的方式和进程的同样. 而在多处理器系统中,如同多个进程.线程实际上一样 ...
- 【Espruino】NO.06 关键是你的仆人(继续)
http://blog.csdn.net/qwert1213131/article/details/27834551 本文属于个人理解,能力有限,纰漏在所难免.还望指正. [小鱼有点电] 这几天一直在 ...
- opencv-阈值处理
从原理:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/threshold/threshold.html 目标: ...
- Python基本语法[二],python入门到精通[四] (转)
写在前面 python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 回到顶部 v正文开始:Python基本语法 1.定义常量: 之所以上篇博客介绍了定义变量没有一起介绍定义常量,是因为Pyt ...
- python下载地址到迅雷qq旋风下载
迅雷和qq旋风下载,有加速和离线功能,非常方面,我是在网上看到的原始地址和迅雷地址,qq旋风地址的转化原理.然后用python+pyqt写了一个client 原理: 迅雷: 迅雷下载地址=" ...
- ZOJ1610_Count the Colors(段树/为段更新)
解决报告 意甲冠军: 一定长度8000段染.寻求染色完成后,.. 思路: 区间问题用线段树.成段的更新区间.最后把全部的区间下压到叶子结点,统计叶子结点的颜色. #include <iostre ...
- springMVC注解优化
本文是本人在学习网络视频的过程中的一些总结. 本文是对关于一些springMVC在使用注解的优化. 使用以下的标签,会自己主动引入Annotation的配置 <mvc:annotation-dr ...
- 第13章 模版方法模式(Template Method)
原文 第13章 模版方法模式(Template Method) 模板模式 模板模式 举例:模拟下数据库的update方法,先删除在插入. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...