簡體   English   中英

將 Base64 圖像添加到 C# 中的郵件

[英]Add a Base64 image to a mail in C#

我正在嘗試將圖片添加到我在 C# 中發送的郵件中,我在這里找到了一些代碼 - stackoverflow。 (問題: 在 MailMessage 中添加附件 base64 圖像並在 html 正文中讀取)。 但是這段代碼在 C# 中給了我語法錯誤我不知道如何正確解決......這是我的代碼:

using System.Net.Mail;
using System.Net.Mime;
public static string FixBase64ForImage(string Image)
        {
            System.Text.StringBuilder sbText = new System.Text.StringBuilder(Image, Image.Length);
            sbText.Replace("\r\n", string.Empty); sbText.Replace(" ", string.Empty);
            return sbText.ToString();
        }
        public static bool SendEmail2(string mailToGet, string subject, string message, string image)
        {
            try
            {
                Byte[] bitmapData = Convert.FromBase64String(FixBase64ForImage(image));
                System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData);
                MailMessage mail = new MailMessage();
                var imageToInline = new LinkedResource(streamBitmap, MediaTypeNames.Image.Jpeg);
                imageToInline.ContentId = "MyImage";
                alternateView.LinkedResources.Add(imageToInline);//here there is an error
                mail.AlternateViews.Add(body);//here there is an error
                //from now on - my code:
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                mail.IsBodyHtml = true;
                message+= "<img alt ='' src ='cid: MyImage'/>";
                mail.Body = message;
                mail.Subject = subject;                
                mail.To.Add(mailToGet);
                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential("myEmailAdress", "myPassword");
                SmtpServer.EnableSsl = true;
                SmtpServer.Send(mail);
                return true;
            }catch(Exception e)
            {
                throw e;
            }
        }

我有兩個錯誤:一個在線alternateView.LinkedResources.Add(imageToInline); ,它說:名稱'alternateView'在當前上下文中不存在,並且在線mail.AlternateViews.Add(body); ,它給相同的地方- 在身體上。 我嘗試在這里創建這些元素,但這只會給我帶來更多麻煩......我什至不知道我是否使用了正確的using s(順便說一下,我根據 C# 的要求放置這些元素,而不是作為我復制的代碼)。 誰能告訴我這段代碼的含義以及我錯在哪里? 如果你知道,我該怎么做才能修復它?

首先,您的 alternateView 不存在,因為您沒有實例化它,為此您需要在之前添加此行:

AlternateView alternateView = new AlternateView("MyImage");

其中“MyImage”是文件的名稱。 關於正文錯誤,您需要添加剛剛創建的交替視圖,因此您只需像這樣放置“正文”而不是“正文”:

mail.AlternateViews.Add(alternateView);

暫無
暫無

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

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