亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中利用Lotus notes公共郵箱發送郵件的方法

2019-10-29 21:02:46
字體:
來源:轉載
供稿:網友

前言

公司的郵件系統用的是反人類的 Lotus notes, 你敢信?

最近要實現一個功能,郵件提醒功能,就是通過自動發送提醒郵件

 前前后后這個問題搞了2天,由于公司的諸多條件限制,無法直接調用到公司發送郵件的接口,只有通過類似 Lotus script,VBA 等其他方式來實現。

用VBA代碼實現發送郵件,其實我在n年前就實現過了

代碼如下,網上一搜也一大堆

Function SendEmailbyNotesWithAttachement_2(Addresses, Attach, cc) strSubject = ThisWorkbook.Sheets("EMAIL").Range("B1") strbody = ThisWorkbook.Sheets("EMAIL").Range("A1") 'Declare Variables  Dim s As Object  Dim db As Object  Dim body As Object  Dim bodyChild As Object  Dim header As Object  Dim stream As Object  Dim host As String  Dim message As Object  ' Notes variables  Set s = CreateObject("Notes.NotesSession")  Set db = s.CURRENTDATABASE  Set stream = s.CreateStream  ' Turn off auto conversion to rtf  s.ConvertMIME = False  ' Create message  Set message = db.CREATEDOCUMENT  message.Form = "memo"  message.Subject = strSubject  message.sendTo = Split(Addresses, ";")  message.CopyTo = cc  message.SaveMessageOnSend = True  ' Create the body to hold HTML and attachment  Set body = message.CreateMIMEEntity 'Child mime entity which is going to contain the HTML which we put in the stream  Set bodyChild = body.CreateChildEntity()  Call stream.WriteText(strbody)  Call bodyChild.SetContentFromText(stream, "text/HTML;charset=UTF-8", ENC_NONE)  Call stream.Close  Call stream.Truncate  ' This will run though an array of attachment paths and add them to the email  For i = 0 To UBound(Attach)  strAttach = Attach(i)  If Len(strAttach) > 0 And Len(Dir(strAttach)) > 0 Then   ' Get the attachment file name   pos = InStrRev(strAttach, "/")   Filename = Right(strAttach, Len(strAttach) - pos)   'A new child mime entity to hold a file attachment   Set bodyChild = body.CreateChildEntity()   Set header = bodyChild.CreateHeader("Content-Type")   Call header.SetHeaderVal("multipart/mixed")   Set header = bodyChild.CreateHeader("Content-Disposition")   Call header.SetHeaderVal("attachment; filename=" & Filename)    Set header = bodyChild.CreateHeader("Content-ID")   Call header.SetHeaderVal(Filename)     Set stream = s.CreateStream()   If Not stream.Open(strAttach, "binary") Then    MsgBox "Open failed"   End If   If stream.Bytes = 0 Then    MsgBox "File has no content"   End If   Call bodyChild.SetContentFromBytes(stream, "application/octet-stream", ENC_IDENTITY_BINARY) ' All my attachments are excel this would need changing depensding on your attachments.  End If  Next  'Send the email  Call message.Send(False)   s.ConvertMIME = True ' Restore conversionEnd Function VBA

但是現實情況是這樣的

我們需要郵件從公郵發送出去

何謂公郵:整個Team使用的郵箱,如***admin@email.com 之類的郵箱

使用過反人類的 Lotus notes 都知道公郵是需要先打開個人郵箱才能進去的

于是當我把以上的VBA 代碼增加如下代碼,設置從公郵里面發送郵件后

  Server = "C***/****r/****"  Path = "****/C*****.nsf"  Set db = s.GetDataBase(Server, Path)

郵件確實是從公郵發送出來,但是很遺憾,郵件發送人那顯示的是我的個人郵箱,而查看我個人的已發送郵件,是完全查不到,但是在公郵已發送郵件可以看到

這就無法理解了,于是開啟了漫長的2天人類大戰反人類Lotus notes戰役

前前后后試過各種VBA代碼【表問為什么不直接調接口】

但要不就是能顯示為公郵發送的,但郵件 body 不能Html格式,否則就是相反,總之一句話:二者不可兼得

期間看遍國內外關于Lotus notes VBA的網站

最后,實在是忍不了了,開始搜索Python,C#

一直猶猶豫豫沒有寫是因為同事告訴我,比如使用C#就需要郵箱密碼,而這個東西我們沒有也不會有的

最后的最后,決定賭一把,我先用C#,直接寫出來,等報錯提示密碼沒有的時候我再想辦法

于是戰戰兢兢有了以下代碼

/// <summary>  /// 通過notes發送郵件  /// </summary>  /// <param name="mailTo">實時數據庫</param>  /// <returns></returns>  public static void SendForNotes()  {   string notesPwd = "";   string notesServer = "C***3/C***/***r/***C";   string NotesDBName = @"M**l/C***to.nsf";   string mailTo = "m****o@c**.***.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.AppendItemValue("Principal", "C******m");//設置郵件的發件人昵稱     NotesRichTextItem rt = doc.CreateRichTextItem("Body");     var richStyle = ns.CreateRichTextStyle();     richStyle.PassThruHTML = 1;     rt.AppendStyle(richStyle);     rt.AppendText(mailBoby);     //發送郵件        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;   }  }

抱著必死的心態小心翼翼的點擊了調試

WTF!!!!

居然收到一封有郵件!沒有密碼??!不需要密碼嗎!密碼不用也能發送?。?!

再試了一次后,發現真的不需要?。?!

因為我們每天開機打開notes的時候也不需要輸入密碼?。?!這可能是和本機的ID文件有綁定?。?!在畢業后的第一家公司中是需要輸入密碼的!

于是欣喜若狂

開始修改代碼

最終版本

/// <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;   }  }

期間還遇到

由于這句代碼放置的位置不對,導致顯示不正確

doc.AppendItemValue("Principal", "C**********am");//設置郵件的發件人昵稱

最終突破的那一刻心情真的很爽,雖然到到現在仍然不知道不要密碼的原因,但總歸解決了困惑兩天的問題,不敢獨享

有時候就是聽別人說,這條路走不通,就不走了

有時候就是聽別人說,已經封裝好了,直接調吧,就調了而不知如何實現

有時候就是抄作業,以為自己會了,于是真真用的時候就不知道了 

年前終于開始不那么忙了,欠了那么多,該慢慢補回來了

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人日韩av在线| 激情久久av一区av二区av三区| 亚洲精品一区二区网址| 成人情趣片在线观看免费| 日韩av片电影专区| 欧美成年人视频网站欧美| 国产一区二区成人| 成人免费淫片视频软件| 欧美色欧美亚洲高清在线视频| 欧美日韩午夜视频在线观看| 久久99热精品| 亚洲欧美日韩中文视频| 亚洲人成亚洲人成在线观看| 欧美—级a级欧美特级ar全黄| 欧美另类精品xxxx孕妇| 久久久久久久999精品视频| 国产成人久久久| 久久免费高清视频| 国产精品偷伦一区二区| 欧美成人免费视频| 青草成人免费视频| www.欧美精品一二三区| 亚洲成人网av| 国内精品免费午夜毛片| 色yeye香蕉凹凸一区二区av| 久久久精品在线观看| 91久久国产婷婷一区二区| 亚洲韩国欧洲国产日产av| 欧美激情亚洲激情| 成人深夜直播免费观看| 亚洲一区精品电影| 色琪琪综合男人的天堂aⅴ视频| 国产91在线播放精品91| 欧美一区二粉嫩精品国产一线天| 日韩成人高清在线| 亚洲人成网站999久久久综合| 亚洲美女久久久| 国产亚洲精品综合一区91| 欧美国产日韩一区二区| 88xx成人精品| 国产日本欧美在线观看| 国产这里只有精品| 国产偷亚洲偷欧美偷精品| 国产精品91久久久久久| 一区二区三区视频在线| 亚洲性生活视频在线观看| 久久精品91久久久久久再现| 97视频com| 欧美激情视频在线| 日韩av男人的天堂| 日韩av中文字幕在线播放| 久久久噜噜噜久噜久久| 国产日韩av在线播放| 日韩精品视频中文在线观看| 国产精品视频永久免费播放| 欧美成人精品激情在线观看| 69av在线视频| 欧美电影在线免费观看网站| 亚洲社区在线观看| 欧美在线观看一区二区三区| 国产欧美日韩精品专区| 精品久久香蕉国产线看观看亚洲| 欧美日韩ab片| 欧美激情影音先锋| 欧美精品xxx| 亚洲久久久久久久久久| 人人爽久久涩噜噜噜网站| 欧美激情性做爰免费视频| 亚洲精品二三区| 亚洲国产精品系列| 国模私拍一区二区三区| 欧美精品videosex性欧美| 久久久www成人免费精品张筱雨| 欧美成aaa人片免费看| 国产欧美在线看| 日韩精品999| 最近更新的2019中文字幕| 亚洲免费中文字幕| 国产日本欧美一区二区三区| 日韩精品久久久久| 国产精品美女免费| 亚洲另类激情图| 国产精品日日摸夜夜添夜夜av| 亚洲精品久久久久久久久| 一本一本久久a久久精品牛牛影视| 日韩av电影在线播放| 成人自拍性视频| 久久高清视频免费| 国产精品jizz在线观看麻豆| 国产精品香蕉在线观看| 日本19禁啪啪免费观看www| 国语自产在线不卡| 久久视频免费观看| 欧美极品少妇xxxxⅹ裸体艺术| 久久精品免费电影| 欧美成人免费小视频| www.日韩视频| 久久91亚洲人成电影网站| 日韩精品视频在线| 精品久久久久久中文字幕一区奶水| 欧美电影免费观看电视剧大全| 国产ts人妖一区二区三区| 国产精品大陆在线观看| 色综合久综合久久综合久鬼88| 不卡av电影在线观看| 亚洲精品不卡在线| 人九九综合九九宗合| 在线亚洲国产精品网| 日本精品一区二区三区在线| 亚洲精品永久免费| 亚洲风情亚aⅴ在线发布| 国产成人在线亚洲欧美| 欧美性极品xxxx娇小| 亚洲欧美日韩精品久久奇米色影视| 日韩在线精品视频| 欧美高清性猛交| www日韩中文字幕在线看| 国产精品电影一区| 久久噜噜噜精品国产亚洲综合| 亚洲精品日韩久久久| 国产一区二区三区在线观看视频| 欧美成人免费全部| 日韩美女视频免费在线观看| 欧美老女人bb| 亚洲精品电影网在线观看| 日韩在线免费视频观看| 97在线免费视频| 日韩中文字幕在线视频| 欧美激情视频在线观看| 日本aⅴ大伊香蕉精品视频| 日韩精品福利网站| 日韩大片免费观看视频播放| 日韩一区二区三区国产| 国产成人精品一区二区| 久久全球大尺度高清视频| 久久99精品久久久久久琪琪| 亚洲欧洲黄色网| 日韩电影大片中文字幕| 狠狠色香婷婷久久亚洲精品| 日韩在线视频观看| 亚洲国产高潮在线观看| 久久成人综合视频| 亚洲欧洲一区二区三区久久| 亚洲国产精品yw在线观看| 亚洲精品97久久| 国产日韩在线精品av| 亚洲综合精品一区二区| 成人国产精品一区| 亚洲精品第一国产综合精品| 色老头一区二区三区在线观看| 欧美高清视频在线观看| 一区二区在线免费视频| 国产mv免费观看入口亚洲| 欧美二区乱c黑人| 欧美成人精品不卡视频在线观看| 91高清视频在线免费观看| 欧美电影免费观看网站| 国产精品久久精品| 国产精品大陆在线观看| 成人国产精品一区二区| 国产精品爽黄69天堂a| 色妞色视频一区二区三区四区| 日本伊人精品一区二区三区介绍| 亚洲国产一区二区三区四区|