0

您好,我想从 Asp.net 发送图像邮件。

我收到这样的错误 :: ' http://domain-name.com/slideshow/original/Jellyfish.png ' 不是有效的虚拟路径。

我的代码是:

 try
    {
        string _SenderEmailID = ReciverEmailID.Text.ToString();
        string _ReciverEmailID = ReciverEmailID.Text.ToString();
        string _Sender = FullName.Text.ToString();
        string post = "JellyBeans.png";
        string ImagePath = "http://www.domain-name.com/slideshow/original/";
        string iImage = ImagePath + post;
        img1.ImageUrl = ImagePath;

        MailMessage mail = new MailMessage();

        mail.To.Add(_ReciverEmailID);
        mail.From = new MailAddress(_SenderEmailID);

        mail.Subject = _Sender + " sent you a mail from 'www.domain-name.com";
        string Body = "<img alt=\"\" hspace=0 src=\"cid:imageId\" align=baseline border=0 >";
        AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html");
        LinkedResource imagelink = new LinkedResource(Server.MapPath(ImagePath)+  @post, "image/png");
        imagelink.ContentId = "imageId";
        imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
        htmlView.LinkedResources.Add(imagelink);
        mail.AlternateViews.Add(htmlView);
        SmtpClient smtp = new SmtpClient();
        smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
        smtp.Send(mail);
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
4

1 回答 1

2

消除

Server.MapPath

从线

LinkedResource imagelink = new LinkedResource(Server.MapPath(ImagePath)+  @post, "image/png");

当路径在您的应用程序中时使用Server.MapPath ,即虚拟路径。您的图片网址是直接网址或物理路径,因此MapPath不需要。

返回与 Web 服务器上指定的虚拟路径相对应的物理文件路径。

MapPath如果您的图像在您的 VisualStudio 解决方案中,您将使用它。

于 2013-04-26T12:15:41.943 回答