簡體   English   中英

在SharePoint 2010中通過電子郵件發送XML之后,XML變形

[英]XML gets deformed after sending it via email in SharePoint 2010

我正在使用linq到xml構建XML。 然后,我將其轉換為字符串以通過電子郵件發送。 xml是電子郵件正文。 xml在發送之前看起來還不錯,而且獲取轉換后的xdocument的字符串看起來也不錯。 但是在發送電子郵件之后,xml看起來變形了。

這是我創建XML文檔的方法:

private static XDocument CreateXmlDocument()
    {
        XDocument xDoc = new XDocument(new XDeclaration("1.0", "utf-8", null),
            new XElement("Node1",
                new XElement("Node2",
                    new XElement("Node3", "TEST"),
                    new XElement("Node4", "TEST"),
                    new XElement("Node5", "TEST"),
                    new XElement("Node6", "TEST")),
            new XElement("Node7",
                new XElement("Node8",
                    new XElement("Node9", "TEST"),
                    new XElement("Node10", "TEST")),
                new XElement("Node11",
                    new XElement("Node12", "TEST"),
                    new XElement("Node13", string.Empty))),
            new XElement("Node14",
                new XElement("Node15", "TEST"),
                new XElement("Node16", "TEST"),
                new XElement("Node17", "TEST"),
                new XElement("Node18", "TEST"),
                new XElement("Node19", "TEST"),
                new XElement("Node20", "TEST"),
                new XElement("Node21", "TEST"),
                new XElement("Node22", "TEST"),
                new XElement("Node23", "TEST"),
                new XElement("Node24", "TEST"),
                new XElement("Node25", "TEST"),
                new XElement("Node26", "TEST"),
                new XElement("Node27",
                    new XElement("Node28",
                        new XElement("Node29", "TEST1"),
                        new XElement("Node30", "TEST2"))),
                new XElement("Node31", "TEST"),
                new XElement("Node32", "TEST"))));

        return xDoc;
    }

這是我發送電子郵件的方式:

private static bool SendEmail(string subject, string message)
    {
        try
        {
            using (SPSite site = new SPSite("spSiteAddress"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    bool isEmailServerSet = SPUtility.IsEmailServerSet(web);

                    if (isEmailServerSet)
                    {
                        bool appendHtmlTag = false;
                        bool htmlEncode = true;
                        bool mailSuccessfullySend = false;

                        SPSecurity.RunWithElevatedPrivileges(delegate()
                        {
                            mailSuccessfullySend = SPUtility.SendEmail(web, appendHtmlTag, htmlEncode, _email, subject, message);
                        });

                        return mailSuccessfullySend;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }

這是我收到的電子郵件:

在此處輸入圖片說明

有任何想法嗎? 謝謝

我最終發現了問題所在。 電子郵件的內容被解釋為html,並導致出現奇怪的字符。 解決的辦法是,我將電子郵件的內容類型設置為text / plain。 我在發送電子郵件時包含此選項的方式是,我使用StringDictionary作為參數。

在這里,您可以找到有關SendEmail函數的4種可能的重載的信息:

MSDN-SPUtility.SendEmail

另外,下面的鏈接顯示了發送電子郵件時如何使用StringDictionary:

使用SPUtility發送電子郵件。使用StringDictionary發送電子郵件

因此,總而言之,解決方法是將電子郵件內容的類型指定為text / plain

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM