Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存图像并显示在电子邮件上_C#_Asp.net - Fatal编程技术网

C# 保存图像并显示在电子邮件上

C# 保存图像并显示在电子邮件上,c#,asp.net,C#,Asp.net,我有这段代码,它执行以下操作: 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("webm

我有这段代码,它执行以下操作:

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);
    }
}
生成条形码:

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);
    }
}
var message=”“;
使用(SmtpClient客户端=新SmtpClient(“xxx.xxx.x.xx”))
{
MailAddress to=新邮件地址(“example@domain.com");
MailAddress from=新邮件地址(“webmaster@domain.com");
MailMessage email=新的MailMessage(从,到);
email.Subject=“主题行”;
email.Body=消息;
email.IsBodyHtml=true;
尝试
{
发送(电子邮件);
}
捕获(例外情况除外)
{
控制台写入(ex);
}
}
这样发送电子邮件时不会出错,但是图像不会出现在电子邮件中。我做错了什么?

publicPath是一个本地文件夹路径。您将需要一些类似于图像的东西-

http://www.yourwebsite.com/Images/QRCodes/file.png
然后,使用绝对URL创建图像源

var message = string.Format(
   "<img src='http://www.yourwebsite.com/Images/QRCodes/{0}' width='500' />",  saveFile);
publicPath是一个本地文件夹路径。您将需要一些类似于图像的东西-

http://www.yourwebsite.com/Images/QRCodes/file.png
然后,使用绝对URL创建图像源

var message = string.Format(
   "<img src='http://www.yourwebsite.com/Images/QRCodes/{0}' width='500' />",  saveFile);

那么,您正在将文件保存到C驱动器上的某个位置,而您为HTML电子邮件提供的路径正在用C驱动器中的路径引用它?你知道不是每个人的C盘上都有相同的文件,对吧?如果要显示文件,需要提供客户端计算机能够理解的正确URL。如果图像很小,请使用。因此,您要将文件保存到C驱动器上的某个位置,并且您为HTML电子邮件提供的路径是用C驱动器中的路径引用它?你知道不是每个人的C盘上都有相同的文件,对吧?如果要显示文件,需要提供客户端计算机能够理解的正确URL。如果图像较小,请使用。