以html正文发送电子邮件时出现问题 [英] Problem in sending email as html body

查看:95
本文介绍了以html正文发送电子邮件时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在C#Winform应用程序中将图像文件作为html正文(而不作为附件)发送.请帮忙.

这是我正在使用的代码..

I wanna send an image file as html body (not as attachment) in C# Winform application. Please help.

here is the code, that I am using..

private void btn_Send_Click(object sender, EventArgs e)
       {
           Control c = zgc;
           System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
           c.DrawToBitmap(bmp, c.ClientRectangle);
           bmp.Save( Application.StartupPath + "\\abc.jpg", ImageFormat.Jpeg);
           //MessageBox.Show(" Image Successfully Created...");
           SendMail();
           MessageBox.Show("Mail Sent Successfully...!","Message Sent",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

       }

       public void SendMail()
       {
           System.Net.NetworkCredential _Credential = new System.Net.NetworkCredential(txt_UserID.Text, txt_pass.Text);
           System.Net.Mail.MailMessage _MailMessage = new MailMessage();
           _MailMessage.To.Add(txt_To.Text);
           _MailMessage.Subject = txt_subject.Text;

           _MailMessage.From = new System.Net.Mail.MailAddress(txt_To.Text);
           _MailMessage.Body = txt_Msg.Text;
           _MailMessage.IsBodyHtml = true;
           _MailMessage.Body = _MailMessage.Body;

           AlternateView av1 = AlternateView.CreateAlternateViewFromString(_MailMessage.Body, null, System.Net.Mime.MediaTypeNames.Text.Html);
           string strImageUrl = Application.StartupPath + "//abc.jpg";
           LinkedResource logo = new LinkedResource(strImageUrl, System.Net.Mime.MediaTypeNames.Image.Jpeg);
           logo.ContentId = "companylogo";
           //To refer to this image in the html body, use <img src="cid:companylogo"/>
           av1.LinkedResources.Add(logo);
           _MailMessage.AlternateViews.Add(av1);


           if (chk_Table.Checked == true)
           {
               _MailMessage.Body += htmlMessageBody(dataGridView1, dataGridView2).ToString();
           }
           if (chk_Chart.Checked == true)
           {
               System.Net.Mail.Attachment att = new Attachment(Application.StartupPath + "\\abc.jpg");
               _MailMessage.Attachments.Add(att);
           }
           //_MailMessage.Attachments.Add(new SmtpAttachment(att,"image/jpg", AttachmentLocation.Inline));






           System.Net.Mail.SmtpClient _SmtpClient = new System.Net.Mail.SmtpClient(txt_smtp.Text);
           _SmtpClient.UseDefaultCredentials = false;
           _SmtpClient.EnableSsl = Convert.ToBoolean(cb_ssl.SelectedItem.ToString());
           _SmtpClient.Credentials = _Credential;
           _SmtpClient.Port = Convert.ToInt32(txt_Port.Text);
           _SmtpClient.Send(_MailMessage);
       }

       public StringBuilder htmlMessageBody(DataGridView dg, DataGridView dg1)
       {
           StringBuilder strB = new StringBuilder();
           //create html & table
           strB.AppendLine("<html><body><center><table border=''1'' cellpadding=''0'' cellspacing=''0''>");
           strB.AppendLine("</br><tr style=background-color:Silver>");
           //cteate table header
           for (int i = 0; i < dg.Columns.Count; i++)
           {
               strB.AppendLine("<td align=''center'' valign=''middle''>" + dg.Columns[i].HeaderText + "</td>");
           }
           //create table body
           strB.AppendLine("<tr>");
           for (int i = 0; i < dg.Rows.Count - 1; i++)
           {
               strB.AppendLine("<tr>");
               foreach (DataGridViewCell dgvc in dg.Rows[i].Cells)
               {
                   strB.AppendLine("<td align=''center'' valign=''middle''>" + dgvc.Value.ToString() + "</td>");
               }
               strB.AppendLine("</tr>");
           }
           strB.AppendLine("<tr>");
           for (int i = 0; i < 1; i++)
           {
               strB.AppendLine("<tr  style=background-color:Gray>");
               foreach (DataGridViewCell dgvc in dg1.Rows[i].Cells)
               {
                   strB.AppendLine("<td align=''center'' valign=''middle''>" + dgvc.Value.ToString() + "</td>");
               }
               strB.AppendLine("</tr>");
           }
           //table footer & end of html file
           strB.AppendLine("</table></center><br/><br/>");

           strB.AppendLine("<center><img src=cid:companylogo\"></center></body></html>");
           return strB;
       }

推荐答案

请参阅以下内容可能对您有帮助:

使用嵌入式图像发送电子邮件 [ http://www.example-code.com/csharp/HtmlEmbeddedImage.asp [ ^ ]
Refer this may help you:

Sending Email Using Embedded Images[^]

http://www.example-code.com/csharp/HtmlEmbeddedImage.asp[^]


这篇关于以html正文发送电子邮件时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆