换行符不会出现在Notes的邮件正文中

时间:2014-11-25 11:04:50

标签: c# email lotus-notes lotus-domino

我是Notes的新手。 我正在尝试使用带有附件的Lotus Notes从我的应用程序发送邮件,邮件正常,附件也可以,但问题是身体内容,身体失去其格式并且直线

我希望如下

Dear Sir,
please check the attachment.


Regards,
NewConcept Infotech Pvt.Ltd.,

但它就像这样

Dear Sir,please check the attachment.Regards,NewConcept Infotech Pvt.Ltd.,

我尝试了所有搜索过但没有用的东西。

这是我的代码

 public bool Email(string dbDirectory, string DataBase_Name, string Initialize_Pwd, string From, string To, string CC, string Bcc, string Subject, string body, string FileName, string LogFilePath)
        {
            bool msg = false;
            dynamic EMailReplyTo = ConfigurationSettings.AppSettings["EMailReplyTo"];
            NotesSession objNotesSession = new NotesSession();
            NotesDatabase ndb = null;
            NotesDocument ndoc = null;
            NotesDbDirectory ndbD = null;
            NotesStream LNStream;
            NotesMIMEEntity LNBody;
            object objAttach;
            try
            {
                ////--------------------Lotus Notes Connectivity-------------------------///
                List<string> lstOutPutEmail = new List<string>();
                lstOutPutEmail.Add(DataBase_Name);
                lstOutPutEmail.Add(Initialize_Pwd);

                objNotesSession.Initialize(lstOutPutEmail[1].ToString());
                ////  objNotesSession object Initialized

                ndbD = objNotesSession.GetDbDirectory(dbDirectory);

                ndb = objNotesSession.GetDatabase(dbDirectory, DataBase_Name, false);

                //If the database is not already open then open it.
                if (!ndb.IsOpen)
                {
                    ndb.Open();
                }

                if (ndb != null)
                {
                    ndoc = ndb.CreateDocument();
                    LNStream = objNotesSession.CreateStream();
                    LNBody = ndoc.CreateMIMEEntity();
                    //   ndoc.ReplaceItemValue("SendBy", From);
                    ndoc.ReplaceItemValue("Form", "Memo");
                    ndoc.ReplaceItemValue("From", From);
                    ndoc.ReplaceItemValue("Principal", From);
                    ndoc.ReplaceItemValue("SendTo", To.Split(','));
                    if (CC != null)
                    {
                        if (CC != "")
                        {
                            ndoc.ReplaceItemValue("CopyTo", CC.Split(','));
                        }
                    }
                    if (Bcc != null)
                    {
                        if (Bcc != "")
                        {
                            ndoc.ReplaceItemValue("BlindCopyTo", Bcc.Split(','));
                        }
                    }
                    ndoc.ReplaceItemValue("Subject", Subject);
                    //

                    NotesRichTextItem objMailRTF = ndoc.CreateRichTextItem("Body");



                    ndoc.ReplaceItemValue("Body", body);



                    ndoc.SaveMessageOnSend = true;
                    if (FileName != "")
                    {
                        objAttach = objMailRTF.EmbedObject(Domino.EMBED_TYPE.EMBED_ATTACHMENT, "", FileName, "Attachment");
                    }
                    ndoc.Send(false);
                    ndbD = null;
                    objNotesSession = null;
                    ndb = null;
                    ndoc = null;
                    gl.runLogfile("Mail Send Successfuly To : " + To, LogFilePath);
                }
                msg = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error On sending Mail To : " + To);
                gl.runLogfile("Error On sending Mail To : " + To, LogFilePath);
                gl.runLogfile(ex.Message, LogFilePath);
                msg = false;
            }
            finally
            {

            }
            return msg;
        }

3 个答案:

答案 0 :(得分:5)

使用RichTextItem的方法AddNewLine()确实在Body字段中添加新行

NotesRichTextItem objMailRTF = ndoc.CreateRichTextItem("Body");
objMailRTF.AppendText("Dear Sir,");
objMailRTF.AddNewLine(1);
objMailRTF.AppendText("please check the attachment.");
objMailRTF.AddNewLine(2);
...

删除代码行ndoc.ReplaceItemValue("Body", body);,否则将无效。

答案 1 :(得分:1)

在你的ndoc.body中,你必须将换行编码为“chr $(13)chr $(10)”。在java(char)13(char)10或\ r \ n。

你需要在String体中替换,你得到参数,所有出现的换行符(可能是'\ n'但看看它是如何在字符串中编码的)到(char)13(char)10。

尝试:

body = body.replaceAll("\n", "\r\n");
ndoc.ReplaceItemValue("Body", body);

尝试将\\如果它不适用于1 \。

答案 2 :(得分:1)

0。 MIME

如果您使用的是MIME,则无需创建Body字段。但您需要使用<br>而不是newline个字符。

//Remove this from your code:
//NotesRichTextItem objMailRTF = ndoc.CreateRichTextItem("Body");
//ndoc.ReplaceItemValue("Body", body);

objNotesSession.ConvertMIME = false;

LNStream.WriteText(body.Replace(Environment.NewLine, "<br>"));
LNBody.SetContentFromText(stream, "text/plain;charset=UTF-8", 1728);                

ndoc.SaveMessageOnSend = true;                

if (FileName != "")
{
    //objAttach = objMailRTF.EmbedObject(Domino.EMBED_TYPE.EMBED_ATTACHMENT, "", FileName, "Attachment");

    var child = LNBody.CreateChildEntity();
    var header = child.CreateHeader("Content-Disposition");
    header.SetHeaderValAndParams(string.Format("attachment; filename=\"{0}\""), Path.GetFileName(FileName)); 

    LNStream = objNotesSession.CreateStream();
    LNStream.Open(FileName, "binary");
    child.SetContentFromBytes(LNStream, "application/octet-stream", 1730);
    child.EncodeContent(1727);

    ndoc.CloseMIMEEntities(True, "Body");
}

1。没有MIME

如果您不想使用MIME,则必须使用AppendText方法而不是ReplaceItemValue方法:

NotesRichTextItem objMailRTF = ndoc.CreateRichTextItem("Body");
//ndoc.ReplaceItemValue("Body", body);
objMailRTF.AppendText(body);

ndoc.SaveMessageOnSend = true;
if (FileName != "")
{
    objMailRTF = ndoc.CreateRichTextItem("Attachment");
    objAttach = objMailRTF.EmbedObject(Domino.EMBED_TYPE.EMBED_ATTACHMENT, "", FileName, "Attachment");
}