![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
作ったイメージデータをファイルに落とし ------------(1)
そのファイルを添付ファイルとして送信しています ----(2)
Bitmap MyImage = new Bitmap(300, 300);
Graphics g = Graphics.FromImage(MyImage);
ここから g に色々書込みます
MyImage.Save(@"MyImage.bmp", ImageFormat.Bmp); ----(1)
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.Host = "smtp.MyMail.com";
string MailSubject = "";
string MailBody = "";
MailMessage oMsg = new MailMessage("MyMail○○○@MyMail.com", "MyFreind□□□@FreindMail.com", MailSubject, MailBody);
oMsg.Attachments.Add(new Attachment(@"MyImage.bmp")); ----(2)
smtp.Send(oMsg); //メール送信
ご覧の通りイメージをファイルに書き出す目的は添付ファイル化する為だけです
ファイルに落とさずにイメージを送信することは可能でしょうか?
⇒ある特殊な理由によりイメージをファイルとして一瞬たりとも存在させたくないのです
No.3
- 回答日時:
AttachmentにはStreamを引数に取る物があります。
これを使うことになります。まず,(1)をストリームに出力するように変更します。
MemoryStream ms = new MemoryStream();
MyImage.Save(ms, ImageFormat.Bmp);
ms.Seek(0L, SeekOrigin,Begin); // ストリームの先頭に戻る
ref)
MSDN: Image.Save メソッド (Stream, ImageFormat) (System.Drawing)
http://msdn.microsoft.com/ja-jp/library/ms142147 …
次に,(2)をストリームを元に作るように変更します。
oMsg.Attachments.Add(new Attachment(ms, @"MyImage.bmp", null)); // 第2引数は
ref)
MSDN: Attachment コンストラクター (Stream, String, String) (System.Net.Mail)
http://msdn.microsoft.com/ja-jp/library/5ds708xx …
これで,ファイルに保存する必要がなくなります。
No.2
- 回答日時:
// MemoryStreamを使うって話じゃないの?
// ライブラリがキャッシュファイル作ってたら知らんよ?
using System;
using System.Net.Mail;
using System.Net.Mime;
using System.IO;
using System.Drawing;
using System.Text;
namespace Q7057981
{
class MainClass
{
public static void Main (string[] args)
{
try{
//でかいファイルで実験するの面倒。
System.Drawing.Bitmap MyImage = new System.Drawing.Bitmap(3, 3);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(MyImage);
g.Clear (System.Drawing.Color.Red);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
MyImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.EnableSsl = true;
smtp.Host = "smtp.example.com";
//実験はGmailを用いて行ったのだが、何故か465はダメらしい。
smtp.Port = 587;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("himajin100000@example.com","example");
System.Net.Mail.MailMessage oMsg = new System.Net.Mail.MailMessage("himajin100000@example.com", "himajin100000@example.com", "test", "test2");
//個人的な好み
oMsg.SubjectEncoding = System.Text.Encoding.UTF8;
oMsg.BodyEncoding = System.Text.Encoding.UTF8;
// http://blogs.wankuma.com/youryella/archive/2010/ …
ms.Seek (0,System.IO.SeekOrigin.Begin);
System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(ms,new ContentType("image/gif"));
attach.ContentDisposition.FileName = "hoge.gif";
oMsg.Attachments.Add(attach);
smtp.Send(oMsg);
oMsg.Dispose();
System.Console.WriteLine ("fin");
}catch(System.Exception e){
System.Console.WriteLine (e.ToString ());
}
}
}
}
ありがとうございました
ご指導の通り MemoryStream を使用したら一発OKでした
本番プログラムでも利用させて頂きます
ありがとうございます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの...
-
バッチファイルで以下のような...
-
C++でデスクトップGUIアプリ開...
-
擬似コード 長さがmの配列でな...
-
Windows Formアプリからコンソ...
-
mallocについて
-
だれがとけるの?
-
C言語をコンパイルするとコンピ...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
C言語 列挙型(enum型)変数について
-
卒業研究でよく分からないとこ...
-
scipy っていうのをいれようと...
-
chatgptでつくってもらったコー...
-
c言語
-
パイソンの
-
VisualStudio2022でC言語プログ...
-
Int('1234') で、strをかんたん...
-
License='MIT' ってなんでmitな...
-
gcc13.2のバグ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DelegateでPOP3、SMTPのリバー...
-
cgi 実行時のエラー
-
Perlでのメール添付送信のエラー
-
Net::SMTPでメール配信できる限...
-
GmailのSMTPを用いたメールフォ...
-
Thunderbirdのアップデートをし...
-
添付ファイルはファイルでなけ...
-
Perlでのメール送信
-
Net::SMTPでのメール送信について
-
telnet gmail
-
perlでSMPT認証してメールを送...
-
PerlでSMTP-AUTH認証をする
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
なんで
-
Excel-VBAでInputBox+Pulldown...
おすすめ情報