原文:使用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. mac已安装xctool而简单的执行xctool打包

    先安装brew,brew是一个包管理工具,有了它我们就能够非常方便的安装xctool了,brew安装命令例如以下: curl -LsSf http://github.com/mxcl/homebrew ...

  2. 手把手教你如何加入到github的开源世界! (转)

    我曾经一直想加入到开源项目中,但是因为没有人指导流程,网上看了很多,基本都是说了个大概,如果你也是一个初出茅庐的人,那么,我将以自己提交的一次开源代码为例,教会你步入开源的世界. 1,首先登陆到htt ...

  3. Android 在非主线程无法操作UI意识

    Android在应用显示Dialog是一个非常easy事儿,但我从来没有尝试过Service里面展示Dialog. 经验UI操作要在主线程,本地的服务Service是主线程里没错,可是远程servic ...

  4. Android发展Singleton模式

    这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...

  5. WIN8 、WIN7 下IIS7.5、IIS8 的rewrite 伪静态功能设置方法

    原文 WIN8 .WIN7 下IIS7.5.IIS8 的rewrite 伪静态功能设置方法 win7和win8系统都自带有iis的功能.关于IIS的安装,上一篇已经讲述,这里就不重复了. 下面说下在w ...

  6. crmsql句子的实体关系实体字段的信息窗口

    在crm里面怎样用sql语句查询这些信息? 查询实体信息: --查询实体信息,实体名称:account select * from MetadataSchema.Entity where name= ...

  7. Swift的74标准功能

    Swift中共同拥有74个内建函数,可是在Swift官方文档("The Swift Programming Language")中仅仅记录了7中.剩下的67个都没有记录. 本文将列 ...

  8. 写的好帮手项目官员 - Evernote 5.4(Evernote的) 中国绿色版

    Evernote (中国名:Evernote的) 是一个自由和优秀的笔记软件或个人知识管理软件.它可以帮助你有效地管理所有类型的电子票据.信息等:xbeta 我写了很多信息化管理或 Evernote ...

  9. hdu4705 Y 简单树形DP 2013多校训练第十场 J题

    题意:求一棵树中不在一条链中的三个点的对数. 转化一下,用总对数减去在一条链上的三点对数即可. 考虑经过根节点,然后可能是不同的子树中各选一个:或者是子树中选一个,然后当前节点为根的子树以外的节点选一 ...

  10. 他的第一个NDK的Demo

    DEMO下载链接: http://download.csdn.net/detail/logicsboy/7535409 首先给你们恶补下啥是NDK:(我从百度Copy的) NDK全称:Native D ...