原文:使用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. JSP通用7动作命令

    JSP通用7动作命令 1.jsp:forward指令    运行页面转向.将请求处理转发到下一个页面 2.jsp:param指令    用于传递參数 3.jsp:include指令    用于动态引入 ...

  2. 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)

    写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...

  3. 概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式

    之前忘记强调重要的差异:链式法则的条件概率和贝叶斯网络的链式法则之间的差异 条件概率链式法则 P\left({D,I,G,S,L} \right) = P\left( D \right)P\left( ...

  4. Android发展Singleton模式

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

  5. [git] fatal: This operation must be run in a work tree

    正在使用git  init --bare 它的成立裸仓库后,,正在使用git 其他命令将出现fatal:This operation must be run in a work tree 问题,途径: ...

  6. JAVA学习第五十九课 — 网络编程概述

    网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...

  7. swift UI特殊培训38 与滚动码ScrollView

    有时我们适合页面的全部内容,我们需要使用ScrollView,额外的内容打通滚动. 什么样的宽度和高度首先,定义,健身器材轻松. let pageWidth = 320 let pageHeight ...

  8. Matlab.NET混合编程调用Figure窗体

    原文:[原创]Matlab.NET混合编程调用Figure窗体 1.前言 做Matlab.NET混合编程好几年了,虽然Matlab很多函数忘记得差不多了,但基本的东西还是能熟练使用.特别是在C#调用M ...

  9. 面向对象三大特征之封装与static——(Java学习笔记四)

    面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...

  10. c#有关udp可靠传输(包传输数据包) 升级

    在c#有关udp可靠传输(包传输数据包)我们讨论,UDP包的发送,可是上一个程序有一个问题.就是数据比較大.一个Message类序列化后都有2048B,而实际的数据量也就只是 50B罢了,这就说明当中 ...