C#如何调用本地的outlook发送邮件,并把指定的几个datagridview附加到邮件正文

蜗牛学编程 2020-07-12 10:23:40
请教各位大神,我想用C#调用本地的outlook发送邮件,并把当前winform指定的几个datagrdview表格数据附加到邮件正文(或者整个页面截图放在邮件正文),这代码怎么写吗?
需要解释的是,在网上找了很多例子,不过都是要求在代码上提前写好发件人邮箱和密码,这很不实用,因为使用的人不固定,不可能都从固定的邮箱出来,也就无法提前预设好地址和密码了。希望的是从当前使用者的outlook自动发送邮件。
下面的代码貌似测试了OK,但不知道该如何把datagridview 附加到邮件正文 (或者采取把整个winform界面截图放上去的方式也可以)。
盼望大神们指教:

Outlook.Application olApp = new Outlook.Application();
Outlook.MailItem mailItem = (Outlook.MailItem)olApp.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.To = "xxxxx@163.com";
mailItem.Subject = "mailtitle";
mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
mailItem.HTMLBody = "mailcontent";
((Outlook._MailItem)mailItem).Send();
mailItem = null;
olApp = null;
MessageBox.Show("邮件发送成功");
...全文
28772 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2020-07-26
  • 打赏
  • 举报
回复
mailItem.HTMLBody = "mailcontent";
这个就是正文
foreach (var row in dgv.Rows)
{
mailItem.HTMLBody += row.Cells[0].Value.ToString() + row.Cells[1].Value.ToString() + ... + "\r\n";
}
这样就可以添加了
得民心 2020-07-25
  • 打赏
  • 举报
回复
你去下载一个aspose.email dll类试一下,里面有对邮件的解析和一些操作都是开源的
The 祺℡ 2020-07-22
  • 打赏
  • 举报
回复
https://bbs.csdn.net/topics/396650606
蜗牛学编程 2020-07-18
  • 打赏
  • 举报
回复
引用 1 楼 沉沦假象 的回复:
我用的方法是把截图或者有格式的信息搞到word里,存到临时路径中,然后获取outlook的邮件编辑框,把word文件信息插入,插入后HTMLBody会有对应word文档中的信息 代码如下:

using Word = Microsoft.Office.Interop.Word;

Word.Document docEditor = MailItem.GetInspector.WordEditor as Word.Document;
Word.Range r = docEditor.Range();
r.ImportFragment(EmailTemplatePath);
//这时MailItem.HTMLBody就是Word中的内容
现在我可以设置为弹出邮件,然后作业员用windows的截屏小工具,直接把datagridview截图粘贴进邮件就行。 不过还是希望能直接一键解决,让系统直接把winform截图,自动粘贴到邮件正文里发送。
沉沦假象 2020-07-18
  • 打赏
  • 举报
回复
引用 3 楼 蜗牛学编程 的回复:
[quote=引用 1 楼 沉沦假象 的回复:] 我用的方法是把截图或者有格式的信息搞到word里,存到临时路径中,然后获取outlook的邮件编辑框,把word文件信息插入,插入后HTMLBody会有对应word文档中的信息 代码如下:

using Word = Microsoft.Office.Interop.Word;

Word.Document docEditor = MailItem.GetInspector.WordEditor as Word.Document;
Word.Range r = docEditor.Range();
r.ImportFragment(EmailTemplatePath);
//这时MailItem.HTMLBody就是Word中的内容
现在我可以设置为弹出邮件,然后作业员用windows的截屏小工具,直接把datagridview截图粘贴进邮件就行。 不过还是希望能直接一键解决,让系统直接把winform截图,自动粘贴到邮件正文里发送。 [/quote] 之前还有用过复制网页中的内容到编辑器中,你试试看PasteAndFormat方法能把你截图的内容贴到编辑器中么

Word.Document docEditor = MailItem.GetInspector.WordEditor as Word.Document;
Word.Range r = docEditor.Range();
webBrowser1.Document.ExecCommand("SelectAll", false, null);//全选
webBrowser1.Document.ExecCommand("Copy", false, null);//复制
r.PasteAndFormat(Word.WdRecoveryType.wdFormatOriginalFormatting);
  • 打赏
  • 举报
回复
正文不是 html 吗?你可以拼字符串,也可以使用标准的 HtmlTextWriter 来产生一个 html。
沉沦假象 2020-07-15
  • 打赏
  • 举报
回复
我用的方法是把截图或者有格式的信息搞到word里,存到临时路径中,然后获取outlook的邮件编辑框,把word文件信息插入,插入后HTMLBody会有对应word文档中的信息 代码如下:

using Word = Microsoft.Office.Interop.Word;

Word.Document docEditor = MailItem.GetInspector.WordEditor as Word.Document;
Word.Range r = docEditor.Range();
r.ImportFragment(EmailTemplatePath);
//这时MailItem.HTMLBody就是Word中的内容

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧