原文:使用c#给outlook添加任务、发送邮件

c#在使用outlook提供的一些API时,需要将outlook相关的com引用到项目中。 具体方法就是用vs打开工程后,在工程上添加引用,在com选项卡上,选择Microsoft Outlook 12.0 Object Library,如果安装的不是outlook2007,则对应com的版本不一样。注意下面描述的方法是在命令行模式或者winform模式下的,不是web模式下的。 在web模式下使用的方法稍有不同,不在此处讨论。 

  • 给outlook添加任务,代码如下:
  1. /// <summary>
  2. /// 给outlook添加一个新的任务
  3. /// </summary>
  4. /// <param name="subject">新任务标题</param>
  5. /// <param name="body">新任务正文</param>
  6. /// <param name="dueDate">新任务到期时间</param>
  7. /// <param name="importance">新任务优先级</param>
  8. public static void AddNewTask(string subject, string body, DateTime dueDate, OlImportance importance)
  9. {
  10. try
  11. {
  12. Application outLookApp = new Application();
  13. TaskItem newTask = (TaskItem)outLookApp.CreateItem(OlItemType.olTaskItem);
  14. newTask.Body = body;
  15. newTask.Subject = subject;
  16. newTask.Importance = importance;
  17. newTask.DueDate = dueDate;
  18. newTask.Save();
  19. }
  20. catch(System.Exception e)
  21. {
  22. throw e;
  23. }
  24. }
  • 最简单的发送邮件

下面是一个最简单的发送邮件的例子,在该例子中,只能给一个邮箱地址发邮件,而且还不能够添加附件。代码如下:

  1. /// <summary>
  2. /// 一个最简单的发送邮件的例子。同步方式。只支持发送到一个地址,而且没有附件。
  3. /// </summary>
  4. /// <param name="server">smtp服务器地址</param>
  5. /// <param name="from">发送者邮箱</param>
  6. /// <param name="to">接收者邮箱</param>
  7. /// <param name="subject">主题</param>
  8. /// <param name="body">正文</param>
  9. /// <param name="isHtml">正文是否以html形式展现</param>
  10. public static void SimpleSeedMail(string server, string from, string to, string subject, string body, bool isHtml)
  11. {
  12. try
  13. {
  14. MailMessage message = new MailMessage(from, to, subject, body);
  15. message.IsBodyHtml = isHtml;
  16. SmtpClient client = new SmtpClient(server);
  17. client.Credentials = new NetworkCredential("发送者邮箱用户名(即@前面的东东)","发送者邮箱密码");
  18. client.Send(message);
  19. }
  20. catch (System.Exception e)
  21. {
  22. throw e;
  23. }
  24. }
  • 向多人发邮件,并支持发送多个附件

代码如下:

  1. /// <summary>
  2. /// 支持向多人发邮件,并支持多个附件的一个发送邮件的例子。
  3. /// </summary>
  4. /// <param name="server">smtp服务器地址</param>
  5. /// <param name="from">发送者邮箱</param>
  6. /// <param name="to">接收者邮箱,多个接收者以;隔开</param>
  7. /// <param name="subject">邮件主题</param>
  8. /// <param name="body">邮件正文</param>
  9. /// <param name="mailAttach">附件</param>
  10. /// <param name="isHtml">邮件正文是否需要以html的方式展现</param>
  11. public static void MultiSendEmail(string server, string from, string to, string subject, string body, ArrayList mailAttach, bool isHtml)
  12. {
  13. MailMessage eMail = new MailMessage();
  14. SmtpClient eClient = new SmtpClient(server);
  15. eClient.Credentials = new NetworkCredential("发送者邮箱用户名(即@前面的东东)", "发送者邮箱密码");
  16. eMail.Subject = subject;
  17. eMail.SubjectEncoding = Encoding.UTF8;
  18. eMail.Body = body;
  19. eMail.BodyEncoding = Encoding.UTF8;
  20. eMail.From = new MailAddress(from);
  21. string[] arrMailAddr;
  22. try
  23. {
  24. #region 添加多个收件人
  25. eMail.To.Clear();
  26. if (!string.IsNullOrEmpty(to))
  27. {
  28. arrMailAddr = to.Split(';');
  29. foreach (string strTo in arrMailAddr)
  30. {
  31. if (!string.IsNullOrEmpty(strTo))
  32. {
  33. eMail.To.Add(strTo);
  34. }
  35. }
  36. }
  37. #endregion
  38. #region 添加多个附件
  39. eMail.Attachments.Clear();
  40. if (mailAttach != null)
  41. {
  42. for (int i = 0; i < mailAttach.Count; i++)
  43. {
  44. if (!string.IsNullOrEmpty(mailAttach[i].ToString()))
  45. {
  46. eMail.Attachments.Add(new System.Net.Mail.Attachment(mailAttach[i].ToString()));
  47. }
  48. }
  49. }
  50. #endregion
  51. #region 发送邮件
  52. eClient.Send(eMail);
  53. #endregion
  54. }
  55. catch (System.Exception e)
  56. {
  57. throw e;
  58. }
  59. }//end of method
  • 异步发送邮件的一个例子。以163的smtp服务器为例。

代码如下:

  1. using System;
  2. using System.Net;
  3. using System.Net.Mail;
  4. using System.Net.Mime;
  5. using System.Threading;
  6. using System.ComponentModel;
  7. namespace Examples.SmptExamples.Async
  8. {
  9. public class SimpleAsynchronousExample
  10. {
  11. static bool mailSent = false;
  12. private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
  13. {
  14. // Get the unique identifier for this asynchronous operation.
  15. String token = (string)e.UserState;
  16. if (e.Cancelled)
  17. {
  18. Console.WriteLine("[{0}] Send canceled.", token);
  19. }
  20. if (e.Error != null)
  21. {
  22. Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
  23. }
  24. else
  25. {
  26. Console.WriteLine("Message sent.");
  27. }
  28. mailSent = true;
  29. }
  30. public static void Main(string[] args)
  31. {
  32. SmtpClient client = new SmtpClient("smtp.163.com");
  33. client.Credentials = client.Credentials = new NetworkCredential("发送者邮箱用户名", "发送者邮箱密码");
  34. MailAddress from = new MailAddress("softwarezxj@163.com");
  35. MailAddress to = new MailAddress("lastBeachhead@gmail.com");
  36. MailMessage message = new MailMessage(from, to);
  37. message.Body = "这是一封测试异步发送邮件的邮件 ";
  38. message.BodyEncoding = System.Text.Encoding.UTF8;
  39. message.Subject = "测试异步发邮件";
  40. message.SubjectEncoding = System.Text.Encoding.UTF8;
  41. // 设置回调函数
  42. client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
  43. // SendAsync方法的第二个参数可以是任何对象,这里使用一个字符串标识本次发送
  44. //传入的该对象可以在邮件发送结束触发的回调函数中访问到。
  45. string userState = "test message1";
  46. client.SendAsync(message, userState);
  47. Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
  48. string answer = Console.ReadLine();
  49. if (answer.StartsWith("c") && mailSent == false)
  50. {
  51. client.SendAsyncCancel();
  52. }
  53. //清理工作
  54. message.Dispose();
  55. Console.WriteLine("Goodbye.");
  56. Console.ReadLine();
  57. }
  58. }
  59. }

使用c#给outlook添加任务、发送邮件的更多相关文章

  1. 在c++中使用Outlook Object Model发送邮件

    一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...

  2. outlook添加邮箱账户时,测试成功,下一步显示请求失败

    今天在给公司同事添加邮箱账户时,全部设置正常,测试也成功了,但是点击下一步时,出现了请求失败的提示.     1.  看到这个提示,我首先重启了一下outlook,发现进去添加还是不行  2.重启了电 ...

  3. python 操作excel格式化及outlook正文,发送邮件

    import requests import time import os import arrow import pandas as pd import pandas.io.formats.exce ...

  4. 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 ...

  5. [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B

    [20140704更新],在公司收邮件的时候,问题再次出现,错误码:0x800ccc13,按照以下方法测试成功: 1. 按照以前办法,反复重启,失败 2. 按照以下参考连接A中的步骤 a. Click ...

  6. Delphi 发送邮件 通过Office Outlook

    Delphi 发送邮件 通过Office Outlook 网上搜到的Delphi邮件发送系统,绝大多数是使用SMTP协议来发送. 但是事实上它们已经过时了,大多数邮件服务器已经屏蔽了Delphi In ...

  7. UiPath工具取得网页上面的数据,写入到csv,Outlook邮件发送

    问题描述: 想取得网页上面的股票价格,之后写入到csv文本里面之后添加附件发送邮件. 解决方法: 利用UIPath工具来取得数据,之后写入再发送. 具体步骤: 1.打开网页,之后找到所显示的股票行情的 ...

  8. [原创] - C#编程大幅提高OUTLOOK的邮件搜索能力!

    使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题成了一件非常紧迫的事情. 利用MS Search当然可以, 但是它太 ...

  9. - C#编程大幅提高OUTLOOK的邮件搜索能力!

    原文:[原创] - C#编程大幅提高OUTLOOK的邮件搜索能力! 使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题 ...

随机推荐

  1. netback于kthread遇到cpu affinity问题

    最近的升级netback, 在测试过程中,查找vm全双工压力,rx的pps波动很厉害,见rx kthread尽管cpu affinity它是0-7 (dom0 8vcpu), 但往往,她去了物理破坏c ...

  2. JavaScript高级编程

             原文地址: http://www.onlamp.com/pub/a/onlamp/2007/07/05/writing-advanced-javascript.html Web应用程 ...

  3. Websocket实例

    C#版Websocket实例 websocket有java.nodejs.python,Php等等版本,我使用的是C#版本,服务器端是Fleck,github地址:https://github.com ...

  4. [程序安装包制作] Advanced Installer 备忘

    原文:[程序安装包制作] Advanced Installer 备忘 Product Information - Product Details 这个重点是Product Version.讲这个之前, ...

  5. jQuery.reveal弹出层使用

    最近用到弹出层,还得自定义UI,原本用的artDialog太庞大,不合适了,于是就找到了这个东西,又小又好用,基础的弹出遮罩都有了,想要什么还不是Coder自己说了算. 这个插件是基于Jquery实现 ...

  6. 编写高质量代码改善C#程序的157个建议[1-3]

    原文:编写高质量代码改善C#程序的157个建议[1-3] 前言 本文主要来学习记录前三个建议. 建议1.正确操作字符串 建议2.使用默认转型方法 建议3.区别对待强制转换与as和is 其中有很多需要理 ...

  7. 可视化配置以及Net应用MemCache在win7

    MemCache在win7上的可视化配置以及Net应用   惯例科普:MemCache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以 ...

  8. thinkphp学习笔记2—入口文件

    原文:thinkphp学习笔记2-入口文件 在thinkphp中有两个入口文件,一个是项目的入口文件,是index.php在主目录里面,还有一个是thinkphp框架的的入口文件,放在框架目录下面如: ...

  9. 让UIAlertController兼容的同时iphone和ipad

    让UIAlertController兼容的同时iphone和ipad by 吴雪莹 var alert = UIAlertController(title: nil, message: message ...

  10. 小工具:内存监视器(SystemMonitor)

    卸了360之后,与之捆绑的加速球也没了.加速球可以查看剩余内存量,清理残留进程,有的时候不觉得这小玩意有多大作用,卸了之后才知道后悔. 加速球的替代方案比比皆是,如Windows自带的任务管理器,窗口 ...