我有这段代码,它执行以下操作:
生成条形码:
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeGenerator.QRCode qrCode = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q);
然后我把它保存为png:
string publicPath = @"c:\inetpub\folder\Images\QRCodes\" + saveFile;
using (Bitmap bitMap = qrCode.GetGraphic(20))
using (MemoryStream ms = new MemoryStream())
{
bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
using (FileStream file = new FileStream(publicPath, FileMode.Create, FileAccess.Write))
{
ms.WriteTo(file);
file.Close();
ms.Close();
}
}
到目前为止,这一切都运作良好。
现在我正在尝试将此已保存的图像显示在电子邮件中,而不是作为附件显示,但显示电子邮件并将其发送出去,我尝试了以下操作:
var message = "<img src='" + publicPath + "' width='500' />";
using (SmtpClient client = new SmtpClient("xxx.xxx.x.xx"))
{
MailAddress to = new MailAddress("example@domain.com");
MailAddress from = new MailAddress("webmaster@domain.com");
MailMessage email = new MailMessage(from, to);
email.Subject = "Subject Line";
email.Body = message;
email.IsBodyHtml = true;
try
{
client.Send(email);
}
catch (Exception ex)
{
Console.Write(ex);
}
}
这会发送没有错误的电子邮件,但图片不会显示在电子邮件中。我做错了什么?
答案 0 :(得分:0)
publicPath 是 本地文件夹路径 。你需要像图像一样的东西 -
http://www.yourwebsite.com/Images/QRCodes/file.png
然后,使用 绝对网址 创建图像源。
var message = string.Format(
"<img src='http://www.yourwebsite.com/Images/QRCodes/{0}' width='500' />", saveFile);
我只是猜测文件夹路径。请确保它是正确的。
我强烈建议您使用HttpRuntime.AppDomainAppPath
代替硬编码c:\inetpub\folder
。主要是,如果在Web服务器中移动文件夹位置,则无法再次重新编译整个应用程序。
string publicPath = string.Format("{0}\\Images\\QRCodes\\{1}",
HttpRuntime.AppDomainAppPath, saveFile);