以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[^]