从资源文件中获取带有签名徽标的电子邮件

时间:2014-03-13 11:52:43

标签: c# image email embedded-resource

我正在编写一个触发电子邮件的Windows服务。也可以使用相同的代码从Windows应用程序触发该功能。

我们触发的电子邮件应该是带有徽标的签名,该徽标位于资源文件中。电子邮件被触发正常,但图像没有显示,但图像的占位符是。这是我正在使用的代码:

![try
{
  Bitmap imgAttachment = Project.Shared.Properties.Resources.Image1;
  using (MemoryStream mstream = new MemoryStream())
  {
    ContentType type = new ContentType()
    {
     MediaType = MediaTypeNames.Image.Jpeg,
     Name = "attachment"
    };
    imgAttachment.Save(mstream, ImageFormat.Jpeg);
    Attachment sigAttachment = new Attachment(mstream, type);
    string ContentId = "imagelogo";
    sigAttachment.ContentId = ContentId;
    sigAttachment.ContentDisposition.Inline = true;
    sigAttachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
    message.Attachments.Add(sigAttachment);

    message.Body = Body + "<htm><body> <br/><br/><table border='0' cellpadding='0'     
                  cellspacing='0' width='1000'>  <tr><td>&nbsp;</td></tr>  <tr>    <td 
                  rowspan='8' valign='top' align='left'><img alt = 'Logo' src=\"cid:" + 
                  ContentId + "\"></td> <td width='1000' height='46' valign='top'> " + 
                  SignatureLine1 + " </td>  </tr> <tr> " + SignatureLine2 + " </tr> <tr> " + 
                  SignatureLine3 + " </tr> <tr> " + SignatureLine4 + " </tr> </table> 
                  </body></html>";
    client.Send(message);
   }
  }
  catch {}]

1

有人可以帮助我吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

问题是您没有生成正确的MIME结构。 HTML主体和图像附件需要是多部分/相关的一部分,你正在编写的代码可能会创建一个多部分/混合(我实际上没有测试过你的代码,但是我已经在Mono中进行了挖掘) System.Net.Mail实现,看来你的代码会生成multipart / mixed而不是multipart / related,这就是你想要的。)

我没有很多使用System.Net.Mail的经验(这很糟糕,所以我编写了自己的库),但你需要做的是使用AlternateView来获取HTML消息正文并将图片LinkedResource添加到AlternateView(请参阅AlternateView.LinkedResources属性)。

相关问题