从C#桌面应用发送电子邮件时指定图像的相对路径

时间:2018-11-09 17:18:34

标签: c#

在C#桌面应用程序中,我向特定用户发送一封邮件,其中包含图片和正文结尾,如下所示

MailMessage email = new MailMessage();
                        email.To.Add(new MailAddress(correo));
                        email.From = new MailAddress("email@email.com");
                        email.Subject = "some text ( " + DateTime.Now.ToString("dd / MMM / yyy hh:mm:ss") + " ) ";
                        email.Body = "some text";
                        email.IsBodyHtml = true;
                        email.Priority = MailPriority.Normal;

                        string text = "some text";
                        AlternateView plainView = AlternateView.CreateAlternateViewFromString(text, Encoding.UTF8, MediaTypeNames.Text.Plain);

                        LinkedResource LinkedImage = new LinkedResource(@"C:\Users\myUser\Documents\App\CPresentacion\Resources\comunicaciones.jpg");
                        LinkedImage.ContentId = "ImagenGCI";
                        LinkedImage.ContentType = new ContentType(MediaTypeNames.Image.Jpeg);
                        AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
                          "some text <br/><img src=cid:ImagenGCI>", Encoding.UTF8,
                                                    MediaTypeNames.Text.Html);

                        htmlView.LinkedResources.Add(LinkedImage);
                        email.AlternateViews.Add(htmlView);
                        email.AlternateViews.Add(plainView);


                        SmtpClient smtp = new SmtpClient();
                        smtp.Host = "192.xxx.x.xxx";
                        smtp.Port = 25;
                        smtp.EnableSsl = false;
                        smtp.UseDefaultCredentials = false;
                        smtp.Credentials = new NetworkCredential("email@email.com", "");
                        string output = null;

                        try
                        {
                            smtp.Send(email);
                            email.Dispose();
                            output = "Correo electrónico fue enviado satisfactoriamente.";
                            CargarDGV();
                            Limpiar(this);
                        }
                        catch (Exception ex)
                        {
                            output = "Error enviando correo electrónico: " + ex.Message;
                        }

,当我从计算机发送电子邮件时,它可以正常工作,但是当另一台计算机上的另一个用户尝试从应用程序发送电子邮件时,它找不到图像,我知道问题出在LinkedResource路径中,但不知道如何指定在另一台计算机上工作的路径,这是我项目的文件夹,请您帮忙指定正确的路径以便在任何特定计算机上工作

enter image description here

1 个答案:

答案 0 :(得分:0)

使用以下代码行:

            var path = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

您可以在安装应用程序后获取目录路径,并形成通往资源的正确路径。