【问题标题】:Send Picturebox Image to your default email将 Picturebox 图像发送到您的默认电子邮件
【发布时间】:2017-10-04 04:29:35
【问题描述】:

在我的表单中,我有一个包含图像的图片框。我试图弄清楚如何将图片中的图片作为附件放入默认电子邮件的正文中。

这是我目前所拥有的:

这会打开我的默认电子邮件,它是 Outlook,但不会在正文中附加或粘贴图片。

    private void button1_Click(object sender, EventArgs e)
    {
       var url = "mailto:emailnameu@domain.com&SUBJECT=My Subject&body="+pictureBox1.Image+"&attachment=" + pictureBox1.Image;
       System.Diagnostics.Process.Start(url);
    }

当我在变量&body="+pictureBox1.Image+ 中添加这一行时会发生这种情况,它不会将图片粘贴到正文中,而是写入System.Drawing.Bitmap

【问题讨论】:

  • 嗨@vasek 这不是在谈论使用smtp 服务器。我正在谈论如何使用您的默认电子邮件来做到这一点
  • 抱歉,在移动设备上选择了错误的链接。这是正确的一个:stackoverflow.com/questions/450115/…
  • 嗨@vasek 没问题,但此链接不提供解决此特定问题的方法

标签: c# .net winforms email


【解决方案1】:

你不能使用mailto在body上发送图片内容,上面写着here

特殊的“body”表示关联的 是消息的正文。 “body”字段值旨在 包含第一个文本/纯正文部分的内容 信息。 “body”伪标头字段主要用于 生成用于自动处理的短文本消息(例如 作为邮件列表的“订阅”消息),不适用于一般 MIME 身体。

此外,出于安全原因,官方不支持附件。

【讨论】:

    【解决方案2】:

    正如其他答案和 cmets 所说,您不能使用 mailto: 发送图像。但是,有一种工作方式可以从 PictureBox 发送图像。

    基本思想取自this post。该解决方案仅创建由关联应用程序打开的 .eml 文件。

    所以您只需要保存您的 PictureBox 内容并将其作为附件发送:

    string tempEmail = Path.ChangeExtension(Path.GetTempFileName(), "eml");
    string tempImage = Path.Combine(Path.GetTempPath(), "Attachment.jpg");
    
    pictureBox1.Image.Save(tempImage, ImageFormat.Jpeg);
    
    var mailMessage = new MailMessage("from@domain.com", "to@domain.com", "Subject here", "Body text here");
    mailMessage.Attachments.Add(new Attachment(tempImage));
    mailMessage.Save(tempEmail);
    
    Process.Start(tempEmail);
    

    请注意,您还应该考虑在电子邮件客户端关闭后进行一些清理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 2021-08-09
      • 2011-08-05
      • 2021-03-15
      • 1970-01-01
      • 2016-05-18
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多