您的位置:首页 > 编程语言 > C#

C# 使用 Lotus notes 公共邮箱发送邮件

2018-02-14 14:01 453 查看
公司的邮件系统用的是反人类的 Lotus notes, 你敢信?

最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件

前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮件的接口,只有通过类似 Lotus script,VBA 等其他方式来实现。

用VBA代码实现发送邮件,其实我在n年前就实现过了

代码如下,网上一搜也一大堆

/// <summary>
/// 通过notes发送邮件
/// </summary>
/// <param name="mailTo">实时数据库/lysh</param>
/// <returns></returns>
public static void SendForNotes2()
{

string notesPwd = "";
string notesServer = "C****3/**/S***/****";
string NotesDBName = @"****\******.nsf";
string mailTo = "****t**@***.com";
string mailSubject = DateTime.Now.ToString();

string mailBoby = "<html><body><table border='1'><tr><th>Month</th><th>Savings</th></tr><tr><td>January</td><td>$100</td></tr></table></body></html>";

NotesSession ns;
NotesDatabase db;
NotesDocument doc;
try
{
ns = new NotesSession();
if (ns != null)
{
//您本机notes的密码
ns.Initialize(notesPwd);
//初始化NotesDatabase
db = ns.GetDatabase(notesServer, NotesDBName, false);
doc = db.CreateDocument();
doc.ReplaceItemValue("Form", "Memo");
doc.ReplaceItemValue("SendTo", mailTo);
doc.ReplaceItemValue("Subject", mailSubject.Replace('\r', ' ').Replace('\n', ' '));

doc.SaveMessageOnSend = true;

NotesStream HtmlBody = ns.CreateStream();
HtmlBody.WriteText(mailBoby);//构建HTML邮件,可以在头和尾添加公司的logo和系统提醒语
NotesMIMEEntity mine = doc.CreateMIMEEntity("Body");//构建邮件正文
mine.SetContentFromText(HtmlBody, "text/html;charset=UTF-8", Domino.MIME_ENCODING.ENC_IDENTITY_BINARY);

doc.AppendItemValue("Principal", "C**********am");//设置邮件的发件人昵称
//发送邮件
object obj = doc.GetItemValue("SendTo");
doc.Send(false, ref obj);
doc = null;
}
}
catch (Exception ex)
{
//   Log.CreateLog(ex.Message);
}
finally
{
ns = null;
db = null;
doc = null;
}
}


View Code
期间还遇到

由于这句代码放置的位置不对,导致显示不正确

doc.AppendItemValue("Principal", "C**********am");//设置邮件的发件人昵称

最终突破的那一刻心情真的很爽,虽然到到现在仍然不知道不要密码的原因,但总归解决了困惑两天的问题,不敢独享

有时候就是听别人说,这条路走不通,就不走了

有时候就是听别人说,已经封装好了,直接调吧,就调了而不知如何实现

有时候就是抄作业,以为自己会了,于是真真用的时候就不知道了

年前终于开始不那么忙了,欠了那么多,该慢慢补回来了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: