原文:使用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. String.Format in Java and C#

    原文:String.Format in Java and C# JDK1.5中,String类新增了一个很有用的静态方法String.format(): format(Locale l, String ...

  2. Spring【AOP】

    AOP是OOP的延续,是软件开发中的一个热点. AOP技术,是OOP补充. OOP引入封装.继承和多态建立一种对象层次结构模拟公共行为集合,而对从左到右的关系则显得无能为力.对于AOP则恰恰适应这样的 ...

  3. HDU 4283 You are the one(间隔DP)

    标题效果: The TV shows such as You Are the One has been very popular. In order to meet the need of boys ...

  4. Notification使用以及PendingIntent.getActivity() (转)

    public void sendNotification(Context ctx,String message) { //get the notification manager String ns ...

  5. JavaEE(13) - JPA属性映射

    1. 映射实体的属性 #1. 使用@Transient修饰不想持久保存的Field #2. 使用@Enumerated修饰枚举类型的Field #3. 使用@Lob, @Basic修饰枚举类型的Fie ...

  6. Object-c中间initialize 与 辛格尔顿

    简单说下initialize任务.在初始化过程中同样的类将被调用一次. 直接在代码解释initialize任务. 创建一个InitTest类 InitTest.m #import "Init ...

  7. 从头到尾彻底理解KMP(转)

    引言 KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得非常混乱,如此,留言也是骂声一片.所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故 ...

  8. C#开发人员能够可视化操作windows服务

    使用C#开发自己的定义windows服务是一个很简单的事.因此,当.我们需要发展自己windows它的服务.这是当我们需要有定期的计算机或运行某些程序的时候,我们开发.在这里,我有WCF监听案例,因为 ...

  9. Node.js 开发指南笔记

    第一章:node简介 介绍了node是什么:node.js是一个让javascript运行在服务器端的开发平台, node能做些什么:[书上的] 具有复杂逻辑的网站 基于社交网络的大规模Web应用 W ...

  10. hdu Simpsons’Hidden Talents(kmp)

    Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren’ ...