ここは私の状況です。 私は、ユーザーが何をしているのか(ボタン/トグル/テキストボックス/など)に応じてExcelシートを編集しているApplication Windows Formを作成しました。クリップボードからOutlookのメール本体に画像を貼り付けるには?
編集が完了すると、新しいExcelファイルが生成されます。
これで、プログラマはある範囲のセルを選択してコピーします。 クリップボードに移動します。
私は複数のテストを行いました(if(){} else {}/.jpg/etcに保存しています)、すべてがtrueにチェックされています。
私は自分の画像にアタッチしたくありません。 一時的に保存したくない場合は、保存した.jpgファイルで本文に貼り付けてください。 私はちょうど私のOutlookのメール本体にCtrl + Vをしたいです。ここ
は私が(私は別の領域を通ってそれを呼び出すことができるように「するmessagebodyは」公共の文字列として先頭で宣言された)私のクリップボードから画像を取得する方法は次のとおりです。
public void ReadData()
{
Excel excel = new Excel(@"E:\c#\Project#XX\Resources\TEST.xlsx", 1);
excel.CopyRange(0, 0, 32, 12);
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Bitmap))
{
Bitmap MessageBody = (iData.GetData(DataFormats.Bitmap, true) as Bitmap);
//pbx.Image = Image;
//image.Save(@"E:\c#\Project#XX\Resources\bitmap1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
//MessageBody = image;
}
excel.Close();
excel.Quit();
}
ここに私のメッセージ建物のコードがあります:以前のバージョンで
private void flatCustButton013_Click(object sender, EventArgs e)
{
ReadData();
string MessageSubject = $"SomeSubject";
Outlook.MailItem newMail = (Outlook.MailItem)application.CreateItem(Outlook.OlItemType.olMailItem);
newMail.Subject = MessageSubject;
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
MessageHTMLBody = "<html><body>SomeText.<img src="cid:MessageBody"</img></body></html>";
newMail.HTMLBody = MessageHTMLBody;
//newMail.Body = System.Windows.Input.ApplicationCommands.Paste;
//newMail.Display(false);
//newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML; ;
//newMail.HTMLBody = System.Windows.Input.ApplicationCommands.Paste;
//newMail.Body = MessageBody;
newMail.To = ToAddress;
newMail.SentOnBehalfOfName = FromAddress;
newMail.CC = CcAddress;
newMail.BCC = BccAddress;
//System.Windows.Input.ApplicationCommands.Paste;
//wrdEdit = application._Inspector.WordEditor
newMail.Send();
}
、人々は、Excelファイルを開く手動でセルを変更し、(VBマクロで)ボタンをクリックする必要がありました。 イメージを貼り付けてOutlook eMailアイテム(表示:true)を開き、「送信」をクリックするだけでOKだった。
My 2.0バージョンは、[Send/Generated Excel Sheet //]ボタンをクリックするだけで自動化されます。
はここでVBでのマクロコードです:
Sub SendMail()
Dim Messager As New Outlook.Application
Dim Mail As Outlook.MailItem
Dim WrdEdit
Range("my_range").CopyPicture
Set Messager = New Outlook.Application
Set Mail = Messager.CreateItem(olMailItem)
With Mail
.To = "some folks"
.CC = "some folks"
'.BCC = ""
.Subject = "SomeSubject"
.Display
.HTMLBody = Mess + .HTMLBody
End With
Set WrdEdit = Messager.ActiveInspector.WordEditor
WrdEdit.Application.Selection.Paste
Set WrdEdit = Nothing
Set Messager = Nothing
Set Mail = Nothing
ActiveWorkbook.Close SaveChanges:=False
End Sub
しかし、私は、クリップボードの画像を取得することに成功していた場合、私は(私はに関する知識がない)インスペクタを通過するのはなぜ得ることはありません。
私はこれを使用しようとしました: '| newMail.Attachments.Add(E" @:\ C#\プロジェクト#XX \リソース\のbitmap1.jpg、Outlook.OlAttachmentType.olEmbeddeditem、1を、 Type.Missing);それは上部の体に添付ファイルを置くことMSDNのソースに指定されている間 ' とメッセージは、添付ファイルで、空のボディを送っている私はそれを得ることはありません 。 。 –